前言

最近参加了一个推荐的比赛,就像了解一些推荐相关的技术,也跟着学习总结一下,相同的内容不同的理解,我也要记录下我的思考。

场景

我们假设一个电商的场景,电商有很多商品,怎么把商品推荐给用户 就是我们思考的问题,这么多的商品,有那些方法来做这么一件事。

基于内容的推荐(Content-based Recommendations)

思路:构建每个用户特征,构建每个商品特征,计算用户与商品的相似性,将相似性高并且用户没有购买的商品推荐给这个用户。思路很简单,但是要思考的问题很多。

问题:

  • 1、商品特征属性如何构建?用户特征属性如何构建?
    首先提取商品特征,这个不依赖与用户,跟用户没有任何关联,单纯的商品的特征,比如品类、价格、数量、品牌、适用人群年纪等等,当然也可以从商品评论中获取一些关键词来补充,但那些事非结构化的特征,操作空间非常多。
    然后构建用户特征,这个很难,用户的特征跟商品没有任何关系,如何构建?具体看用户的行为,比如用户在之前有没有喜欢过什么商品,把这些商品特征组合归纳出来,每一个商品特征求一个平均值,就得到这个用户对商品的喜好特征,这样商品特征跟用户特征是统一的,特征数值不一样而已,这样用户喜好特征和商品特征都是统一的。

  • 2、构建之后他们的相似性如何计算?一般计算相似性都是特征属性之间,如果用户属性与商品属性不一致,这该如何处理?
    利用相似度计算、分类算法等等,其中相似度算法就是普通的余弦相似度,二分类算法则有很多,决策树、线性分类、贝叶斯等算法都是可以用来把商品分类,一类是推荐给用户的,一类是不推荐给用户的。

  • 3、一个推荐技巧
    这个技巧是Rocchio算法,它信息检索中处理相关反馈(Relevance Feedback)的一个著名算法,大致思想就是根据用户对搜索的结果的点击反馈来实时更新用户的特征,参考博客里有一个搜索引擎的例子,我就不列举了,换一个例子,比如给用户推荐了10个商品,他点击了其中的两个商品,那么我们可以根据这两个特征来实时更新用户特征,然后下一次推荐的时候,就用更新后的用户特征来更新这些数据。

算法的适用性讲解

分类算法中有一个问题,就是用户特征包括两个类别:用户喜欢的,以及他不喜欢的。用户喜欢的我们可以比较轻松搞定,但是不喜欢的就不好确定,很容易就把用户潜在兴趣的商品给作为不喜欢的,稳妥的做法就是把用户近期购买的商品作为他不喜欢的商品。

  • 决策树
    当item的属性较少而且是结构化属性时,决策树一般会是个好的选择。这种情况下决策树可以产生简单直观、容易让人理解的结果。而且我们可以把决策树的决策过程展示给用户u,告诉他为什么这些item会被推荐。但是如果item的属性较多,且都来源于非结构化数据(如item是文章),那么决策树的效果可能并不会很好。
  • 线性分类
    比如Logistic Regression和 线性svm算法,
  • 贝叶斯分类
    这个分类算法比较简单,但是局限性比较大,因为用户喜欢的商品可能太少了,讨厌的商品也太少了,样本集不足够大,对于一个几十万商品的电商公司来讲,似乎推荐的商品种类、品牌都会比较多。一种思想是去扩展用户喜欢的商品和不喜欢的商品,通过商品之间的相似度来做扩展,选取相似度高的商品。

总体感觉分类算法在实际推荐中还是有一些问题的,实际效果比较不好。

构建特征

所谓基于内容的推荐算法(Content-Based Recommendations)是基于标的物相关信息、用户相关信息、用户对标的物的操作行为来构建推荐算法模型,为用户提供推荐服务。

  • 标的物相关信息可以是对标的物文字描述的metadata信息、标签、用户评论、人工标注的信息等,对于电商来说,商品就是标的物,商品会涉及品牌、类目、用户群体、价格、国家等做特征。
  • 用户相关信息是指人口统计学信息(如年龄、性别、偏好、地域、收入等等)。
  • 用户对标的物的操作行为可以是评论、收藏、点赞、观看、浏览、点击、加购物车、购买等。

基于内容的推荐算法一般只依赖于用户自身的行为为用户提供推荐,不涉及到其他用户的行为,也就是不涉及到用户跟用户之间的连续,每个用户都是独立的。很重要的一点就是基于内容的推荐系统其实只维护来商品特征,因为在构建用户特征的时候,其实是利用用户对商品的行为得到一系列商品,对商品特征做平均、去冗余等操作方法来得到用户喜好的商品特征,只不过特征值不一样而已。

优点

  • 1、用户独立,不受其他用户影响,特别是垃圾账号,刷单账号
  • 2、新商品上架后可以根据它与其他商品的相似性来推荐,那协同过滤就不太行,因为刚上架还没人买,也就短期内无法推荐,不能增加产品曝光率,也就知道的更少。

缺点:

  • 1、无法挖掘用户的潜在需求:你只能推荐用户使用过或者点赞过等行为得到的相似商品,你不清楚用户在未来需要的是什么。就好像我们去逛超市,经常会买很多东西,其实很多东西不是自己一开始就想要的,但是逛超市的过程中,我们就突然觉得这东西有一些需求,我们可以来购买,于是我们就买了,需求不会那么强,但是似乎买了也是一件不错的事,推荐就是这样,它最好可以帮助我们来筛选一些我们可能需要的东西,让用户看到突然想起家里什么东西好像快用完了,需要买新的了。那么基于内容的算法可能不太满足这种场景。
  • 2、提取特征要根据具体的场景,很多特征是跟业务关联的,有些是商品基本特征属性,在不同的业务场景中会有其他不同的特征,这些得靠人工提取,推荐的结果也非常依赖这些特征。
  • 3、无法给新用户推荐,这也是很尴尬的地方,新用户进来,无任何行为,可能都是随意购买,那么用户特征也无法关联商品,也就无法推荐。

参考博客

推荐系统从入门到接着入门
基于内容推荐算法详解(比较全面的文章)

基于内容的推荐算法详解+问题思考相关推荐

  1. 《网络电视节目推荐系统----基于用户协同过滤与基于内容的推荐算法的后融合》

    文章目录 一.什么是推荐系统 二.产生原因 由上我们可以得知,推荐系统产生的两大原因 三.应用场景 四.推荐系统的评测方法 1. 推荐系统的三大实验方法 a. 离线实验: b. 用户调查 c. 在线实 ...

  2. 一文全面了解基于内容的推荐算法

    作者丨gongyouliu 来源 | 转载自大数据与人工智能(ID:ai-big-data) 这篇文章我们主要关注的是基于内容的推荐算法,它也是非常通用的一类推荐算法,在工业界有大量的应用案例. 本文 ...

  3. 吴恩达机器学习系列23:基于内容的推荐算法

    如今,推荐算法已经深入到我们生活的各个方面,比如说淘宝根据我们之前的浏览记录给我们推荐想要购买的商品:抖音不停地给我们推荐各种我们感兴趣的视频(虽然我个人不太喜欢抖音,觉得抖音会让我们丧失独立思考的能 ...

  4. 新闻推荐系统:基于内容的推荐算法(Recommender System:Content-based Recommendation)

    2018/10/04更新 这篇文章似乎被越来越多的小伙伴看到了,所以觉得有必要做一些进一步的详细说明. 首先按照本文所讲解的推荐思路进行新闻推荐的推荐系统,我已经实现并已经放在Github上了.欢迎小 ...

  5. 新闻推荐系统:基于内容的推荐算法——TFIDF、衰减机制(github java代码)

    转自: 因为开发了一个新闻推荐系统的模块,在推荐算法这一块涉及到了基于内容的推荐算法(Content-Based Recommendation),于是借此机会,基于自己看了网上各种资料后对该分类方法的 ...

  6. 人工智能AI课 推荐算法详解和实现

    Model-Based 协同过滤算法 随着机器学习技术的逐渐发展与完善,推荐系统也逐渐运用机器学习的思想来进行推荐.将机器学习应用到推荐系统中的方案真是不胜枚举.以下对Model-Based CF算法 ...

  7. 基于内容的推荐算法(Content-Based)

    基于内容的推荐算法(Content-Based) 简介 基于内容的推荐方法是非常直接的,它以物品的内容描述信息为依据来做出的推荐,本质上是基于对物品和用户自身的特征或属性的直接分析和计算. 内容推荐算 ...

  8. 推荐系统-基于内容的推荐算法(Content-Based)

    基于内容的推荐算法(Content-Based) 简介 基于内容的推荐方法是非常直接的,它以物品的内容描述信息为依据来做出的推荐,本质上是基于对物品和用户自身的特征或属性的直接分析和计算. 例如,假设 ...

  9. 基于内容的推荐算法的php实现,基于内容的个性化推荐算法

    摘要:个性化推荐算法有许多类别,主要包括基于内容的推荐.协同过滤.SVD.基于知识的推荐以及混合推荐算法.本文介绍基于内容的推荐算法(Content-basedRecommendation).基于内容 ...

最新文章

  1. 如何在微服务架构下进行数据设计?
  2. JMC | 分子生成器的图灵测试
  3. 使用 HTMLTestRunner.py
  4. 函数作用域导致的问题
  5. 计算机函数select,请问关于select函数的操作程序?
  6. 复旦大学长跑协会财务制度(初稿)
  7. Halcon 和 C# 联合编程 - 如何使用开源项目 ViewROI
  8. vue 切换页面没有改变滚动条_Web前端高级Vue学习笔记(三)
  9. 第一次写oracle SQL 两个表链接查询
  10. 命令行运行 Java 报 java.lang.NoClassDefFoundError
  11. 矢量 路网 免费下载_50个免费矢量图片下载网站
  12. 机器学习之层次聚类及代码示例
  13. 高速公路的一些线路计算
  14. Linux入坑手册(鸟哥的私房菜)
  15. WinForm通过Excel作为中间介质实现导入导出小工具
  16. 眼见不一定为实!18个神奇的视错觉,看完不相信眼睛系列
  17. 神还原女神照片!GAN 为百年旧照上色
  18. C语言中fopen函数使用举例及打开方式列表
  19. sql server 计算坐标点距离函数
  20. python 标签字体大小,Python:如何增加/减少x和y刻度标签的字体大小?

热门文章

  1. C语言和Python,哪个更适合入门?
  2. VS Code设置Vue格式化标签不自动换行
  3. AMD Ryzen 5发布,英特尔还准备“挤牙膏 ”吗?
  4. #机器学习--实例--主成分分析
  5. 一条代码带大家绘制交互式+pdf+png等多格式桑基美图
  6. Webpack升级优化小记:happyPack+dll初体验
  7. Java,图片添加二维码和文字水印,合并为一张图
  8. 后端JavaScript所学
  9. 前端页面嵌入word文档_Java 处理word文档后在前端展示
  10. 【Python 】实现永不锁屏