推荐系统老司机的十条经验节选

来源:互联网 发布:禁毒知识网络竞赛 分数 编辑:程序博客网 时间:2024/06/06 08:53

原文地址:http://geek.csdn.NET/news/detail/124262

作者:陈开江@刑无刀,金融科技公司天农科技CTO,曾任新浪微博资深推荐算法工程师,考拉FM算法主管,先后负责微博反垃圾、基础数据挖掘、智能客服平台、个性化推荐等产品的后端算法研发,为考拉FM从零构建了个性化音频推荐系统。 

文章对Xavier Amatriain在Recsys2016上的分享做出解读

一、隐式反馈比显式反馈要爽

所谓隐式反馈,就是用户发出这些行为时并不是为了表达兴趣/态度,只是在正常使用产品而已,反之,显式反馈就是用户在做这个操作时就是要表达自己的态度,如评分,投赞成/反对票。

Xavier Amatriain列举了隐式反馈的以下好处:

  • 数据比显式反馈更加稠密。诚然,评分数据总体来说是很稀疏的,之前netflix的百万美元挑战赛给出的数据稀疏度大概是1.2%,毕竟评分数据是要消耗更多注意力的数据。
  • 隐式反馈更代表用户的真实想法,比如你不是很赞成川普的观点,但是还是想经常看到他的内容(以便吐槽他),这是显式反馈无法捕捉的。而人们在Quora上投出一些赞成票也许只是为了鼓励一下作者,或者表达一些作者的同情,甚至只是因为政治正确而投,实际上对内容很难说真正感兴趣。
  • 隐式反馈常常和模型的目标函数关联更密切,也因此通常更容易在AB测试中和测试指标挂钩。这个好理解,比如CTR预估当然关注的是点击这个隐式反馈。

二、深刻理解数据


三、为模型定义好学习任务

一个机器学习模型有三个因素构成:

  • 训练数据(隐式反馈或者显式反馈)
  • 目标函数(比如用户阅读一篇回答的概率)
  • 衡量指标(比如准确率或者召回率)

Quora的首页是结合了多个用户隐式反馈的排序模型,给每一种用户行为建立一个预测模型,预测它发生的概率,结合每一种行为带来的长期价值大小,然后加权,即期望价值。这个例子里面的三元素也可定义清楚:

  • 训练数据:用户的显式反馈和隐式反馈
  • 目标函数:一个story的展示价值,量化定义为用户行为的期望价值
  • 衡量指标:任何排序模型指标都可以

四、推荐可解释比精准更有意义

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

五、矩阵分解大法好

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

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

  • 它可以用来降维,这部分通常是PCA这样的无监督学习算法承担的,矩阵分解得到的隐因子就是降维后的特征,可以直接作为其他学习算法的输入;
  • 它还可以做聚类,比如Non-negative Matrix Factorization就常常用来做聚类;
  • SVD就是一种回归,标准的监督学习。

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

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

六、万能的集成方法

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

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

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

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

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


原创粉丝点击