RS(1)--推荐系统的定义和应用

本文大约 3200 字,阅读大约须要 10 分钟算法

2020 年第一篇技术文章,以一个新的系列开始--推荐系统(Recommend System),第一篇文章会简单介绍推荐系统的定义和应用,目录以下:安全

  • 什么是推荐系统
  • 你真的须要推荐系统吗
  • 推荐系统的问题模式
  • 推荐系统存在的问题
  • 推荐系统的应用

什么是推荐系统

来自维基百科的定义:微信

推荐系统是一种信息过滤系统,手段是预测用户(user)对物品(item)的评分和偏好。网络

进一步从如下三个方面来回答这个问题函数

1. 推荐系统能作什么--推荐系统最终能够把那些会在用户和物品之间产生的链接提早找出来。工具

这里说的链接,含义很是普遍,凡是可以产生关系的都是链接,包括用户对物品的行为,或者用户的某些属性和物品的某些属性。学习

这里这么说的依据是基于这样一个事实:万事万物都有相互链接的大趋势。测试

2. 推荐系统须要什么--须要已经存在的链接,从已有的链接去预测将来的链接。优化

3. 推荐系统怎么作--预测用户评分和偏好。具体说就是机器推荐和人工推荐,也就是一般说的个性化推荐和编辑推荐。网站

整体来讲,推荐系统其实是在目前信息爆炸的时代,能够帮助用户过滤大量无效信息,获取到感兴趣的信息或者物品的算法,而且也能够挖掘出一些长尾物品。固然,过分依赖推荐系统,实际上也可能让你只接受到同一类的信息或者单一领域的物品,这也是推荐系统存在的一个问题,探索与利用问题。

推荐系统是如何工做的呢?这里能够用一个看电影的例子来解释,好比咱们在不肯定看什么电影的时候,一般可能会有这几种方法来作决定:

  • 咨询朋友。不只是问朋友,也多是发个朋友圈或者发微博,即利用社交产品来问这个问题。这种方式在推荐系统中成为社会化推荐(social recommendation),即让好友推荐;
  • 咱们也可能由于演员或者导演来决定看什么电影,可能的作法就是经过搜索引擎来搜索喜欢的演员和导演有没有在上映的电影,或者是还没看过的电影。这种方式叫作基于内容的推荐(content-based filtering)
  • 咱们也还会打开豆瓣,查看豆瓣的电影排行榜,看看哪些高分电影是不错的,或者经过和本身历史兴趣形似的用户,查看他们看过的电影,而后选择一部本身感兴趣的来看。这种方式叫作基于协同过滤(collaborative filtering)的推荐,也就是根据类似用户或者类似物品来进行推荐。

上述也只是3种推荐方式,实际上推荐系统还有其余的推荐方法,但本质上都是须要用户和物品之间存在链接,经过已有的链接来预测将来的链接。

你须要推荐系统吗

从两个方面考虑这个问题:

  1. 产品的目的。若是一个产品的目的是创建的链接越多越好,那最终须要一个推荐系统。反之,对于工具类的产品,并不须要推荐系统;
  2. 产品现有的链接。当产品中的物品不多,少到人工能够应付的时候,用户产生的链接确定也很少,这时候链接的瓶颈在于物品数量,这时候不适合搭建推荐系统;另外一种状况就是物品很多,但用户产生的链接也很少,这种状况就是用户留存回访不多,须要的是找到用户流失缘由,而不是推荐系统。

这里有一个简单的判断是否须要推荐系统的公式

\frac{\triangle connection}{\triangle user \times \triangle item}

分子表示增长的链接数量,分母就是增长的活跃用户数和增长的有效物品数。

这个简单的指标是这样的:

  • 若是增长链接数主要依靠活跃用户数和物品数,那么这个指标会很小,表示不适合推荐系统
  • 若是增长的链接数和新增活跃用户数以及物品关系不大,说明链接数已经有自发增加的趋势,适合加入推荐系统。

最后,是否须要推荐系统从战术上看是须要考虑投入产出比的问题,须要组建团队、购置计算资源、积累数据和花费时间优化等;但若是是战略问题,那就不须要讨论了。

推荐系统的问题模式

根据上文的介绍,推荐系统的目标就是预测用户和物品的链接,其预测问题模式,从达成的链接目标角度区分,分为两大类:

  1. 评分预测
  2. 行为预测

评分和行为实际上是反映了用户对推荐结果的两类反馈,前者是一个显式反馈,直接代表用户对推荐的物品的喜爱程度,然后者更多展现的是隐式反馈,好比用户仅仅是浏览阅读了推荐的物品,或者说电商类的加入购物车,收藏物品等等。

评分预测

评分预测主要作的事情就是,提早预测用户对物品的评分,好比对电影评分1-5分,或者是商品打多少颗星星。

一个比较朴素的实现思想:创建一个模型,基于用户历史评分的物品来预测分数

如何衡量预测的好坏,一般能够用均方根偏差(RMSE)来做为损失函数:

RMSE = \sqrt \frac {\sum^n _{t=1}(y_{p}-y_{t})^2}{n}

其中 n 是样本的总数,y_t 是用户对物品的打分,y_p表示模型预测的分数,所以它们的相减就是模型和用户实际打分的偏差,而 RMSE 只关心绝对值大小。

评分问题主要用于各类点评类产品,好比豆瓣、Imdb等等,但评分推荐存在这些问题:

  1. 数据不易收集
  2. 数据质量不能保证,伪造数据门槛低
  3. 评分的分布不稳定,总体评分在不一样时期会差异很大,我的评分也会因时间而有不一样标准,人和人之间的标准差很大

行为预测

行为预测就是利用隐式反馈数据预测隐式反馈的发生几率。行为预测更受到重视的缘由有这几点:

  1. 数据比显式反馈更加稠密。评分数据整体来讲是很稀疏的;
  2. 隐式反馈更表明用户的真实想法
  3. 隐式反馈经常和模型的目标函数关联更密切,也一般更容易在 AB 测试中和测试指标挂钩。好比 CTR 预估关注的就是点击这个隐式反馈。

行为预测的方式有不少,常见的是这两种方式:

  • 直接预测行为自己发生的几率,也叫作点击率预估(CTR预估),但实际应用中也能够是收藏、购买行为的预估;
  • 预测物品的相对排序

推荐系统存在的问题

推荐系统发展到如今,依然仍是有些问题一直没有很好的通用解决方案,而且不容易被重视。

1. 冷启动问题

推荐系统其实是数据贪婪型应用,也就是对数据的需求绝无足够的那一天。

冷启动问题能够分为:

  • 新用户或者不活跃用户;
  • 新物品或者展现次数较少的物品(长尾物品)
  • 系统自己没有用户和用户行为,只有物品数据

一般的解决办法是:想办法引入数据,从已有数据中主动学习(一种半监督学习),好比用户的注册信息,物品的描述信息等等。

2.探索与利用问题

这个问题也叫 EE(Explore & Exploit) 问题:

  • 探索:也就是挖掘用户身上未知的兴趣爱好,推荐和用户兴趣不相关或者不类似的物品,包括长尾物品;
  • 利用:利用已知的用户的兴趣爱好,推荐类似的物品

一般最好的作法是推荐大部分用户感兴趣的物品,小部分是新的其余领域的物品,好比已知用户是数码产品爱好者,那么大部分推荐的就是电脑、键盘等数码产品,而后推荐少许的其余类的物品,好比运动健身产品或者衣服等;

但这里须要考虑的就是这个比例的问题,不一样的用户的推荐比例也不同,可能有的用户就是喜欢探索新奇的物品,但有的用户只喜欢感兴趣的物品。

3.安全问题

推荐系统也是存在安全问题,可能会被攻击,被攻击的影响有如下几个:

  • 给出不靠谱的推荐结果,影响用户体验并最终影响品牌形象;
  • 收集了不靠谱的脏数据,这个影响会一直持续留存在产品中,很难彻底消除;
  • 损失了产品的商业利益,这是直接的经济损失;

推荐系统的应用

推荐系统的应用特别普遍,包括电子商务、电影和视频、音乐、社交网络、阅读、基于位置的服务、个性化邮件和广告等等。

  1. 电子商务:国内的淘宝、京东等都有个性化推荐系统,经过用户浏览、点击、购买、收藏、加入购物车的行为,给用户推荐类似的商品;
  2. 电影和视频:好比豆瓣、爱奇艺等视频网站,豆瓣会有根据用户的评分来获取用户的兴趣,而后推荐的方式能够是看过这部电影的用户也喜欢看的电影(基于用户的协同过滤推荐)或者是其余类似的电影(基于物品的协同过滤)
  3. 音乐:最有表明性的就是网易云音乐,其推荐算法确实是比其余国内的音乐产品要作得更加出色;
  4. 社交网络:微博,会有多个维度的推荐,热门话题,同城,或者分领域,娱乐、科技、体育等;
  5. 阅读:主要就是各种的新闻门户网站,其中作得最好的就是今日头条;

事实上,当产品的用户和物品数据愈来愈大的时候,都须要考虑使用个性化推荐系统,给用户个性化的体验。


参考

  1. 《推荐系统实践》第一章
  2. 极客时间《推荐系统三十六式》

欢迎关注个人微信公众号--算法猿的成长,或者扫描下方的二维码,你们一块儿交流,学习和进步!

相关文章
相关标签/搜索