推荐系统经验

  1. 隐式反馈比显式反馈

显示反馈指的是行为就是表明态度,兴趣,比如点赞,评论,投票。
就是用户发出这些行为时并不是为了表达兴趣/态度,只是在正常行为。

  • 隐式数据更加稠密
  • 隐式数据更能反应用户的真实意向
  1. 理解数据

目标,问题往往需要依靠人去定义,这样的话,需要很了解数据背后的业务,数据的含义。

  1. 为模型定义好学习任务
  • 是用什么数据
  • 怎么定义目标
  • 如何衡量结果
  1. 注意可解释性

这里其实就是说推荐要展示出理由给用户,让用户知道每一项推荐的项目是怎么得到的。

比如Quora的feed推荐给出的“被你关注的人投票”的理由:

比如Quora给出的推荐话题给出的“被你关注的人关注”的理由:

比如Netflix给出的“因为看过给出好评的电影而推荐”的理由:

  1. 利用矩阵分解

Xavier Amatriain很推崇Matrix Factorization,因为它既有监督学习,又有无监督学习。

两种学习方法就这样结合在一个算法里:

它可以用来降维,这部分通常是PCA这样的无监督学习算法承担的,矩阵分解得到的隐因子就是降维后的特征,可以直接作为其他学习算法的输入;

它还可以做聚类,比如Non-negative Matrix Factorization就常常用来做聚类;

SVD就是一种回归,标准的监督学习。

矩阵分解还有一些变种:ALS(交替最小二乘),SVD++(结合特征的SVD),FM(因子机),TF(张量分解)。

总之,在推荐系统里,使劲压榨矩阵分解的效果。

  1. 利用集成模型

Netflix的冠军模型,那可是100多种算法集成在一起的,真是应了那句话:比你效果好的模型还比你更努力。

实际上任何推荐系统也不可能是单一算法在起作用,而是多种算法集成在一起。集成方法理论上不会比你其中那个最好的算法差。在推荐系统中,你至少可以集成基于内容推荐和协同过滤两种。

本质上,集成算法是把某个模型的输出变成另一个模型的特征。如果你很难决策到底用哪个算法时,千万不要纠结,所有的都用,然后集成之。

集成还有一个好处就是:某个推荐算法可能更适合某个场景下,这样被集成的算法就可以各自handle各自擅长的场景,最后集大成。

具体集成方法可选的很多,如logistic regression,GBDT,Random Forest,ANN。

  1. 做好特征工程
  • 复用性
  • 可解释性
  • 可靠性
    Xavier以Quora的答案排序为例,举了一些他们现在用到的特征算是好特征:

一个是答案本身的特征,如回答的质量;第二个是互动类型的特征,如投票,评论;还有用户特征,如他在某个话题下的专业程度。

深度学习给了另一种全新的特征工程之路,也是值得探索的,或许是人工特征工程的终结者,拭目以待。

    原文作者:Liam_ml
    原文地址: https://www.jianshu.com/p/dc039de72669
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞