- 隐式反馈比显式反馈
显示反馈指的是行为就是表明态度,兴趣,比如点赞,评论,投票。
就是用户发出这些行为时并不是为了表达兴趣/态度,只是在正常行为。
- 隐式数据更加稠密
- 隐式数据更能反应用户的真实意向
- 理解数据
目标,问题往往需要依靠人去定义,这样的话,需要很了解数据背后的业务,数据的含义。
- 为模型定义好学习任务
- 是用什么数据
- 怎么定义目标
- 如何衡量结果
- 注意可解释性
这里其实就是说推荐要展示出理由给用户,让用户知道每一项推荐的项目是怎么得到的。
比如Quora的feed推荐给出的“被你关注的人投票”的理由:
比如Quora给出的推荐话题给出的“被你关注的人关注”的理由:
比如Netflix给出的“因为看过给出好评的电影而推荐”的理由:
- 利用矩阵分解
Xavier Amatriain很推崇Matrix Factorization,因为它既有监督学习,又有无监督学习。
两种学习方法就这样结合在一个算法里:
它可以用来降维,这部分通常是PCA这样的无监督学习算法承担的,矩阵分解得到的隐因子就是降维后的特征,可以直接作为其他学习算法的输入;
它还可以做聚类,比如Non-negative Matrix Factorization就常常用来做聚类;
SVD就是一种回归,标准的监督学习。
矩阵分解还有一些变种:ALS(交替最小二乘),SVD++(结合特征的SVD),FM(因子机),TF(张量分解)。
总之,在推荐系统里,使劲压榨矩阵分解的效果。
- 利用集成模型
Netflix的冠军模型,那可是100多种算法集成在一起的,真是应了那句话:比你效果好的模型还比你更努力。
实际上任何推荐系统也不可能是单一算法在起作用,而是多种算法集成在一起。集成方法理论上不会比你其中那个最好的算法差。在推荐系统中,你至少可以集成基于内容推荐和协同过滤两种。
本质上,集成算法是把某个模型的输出变成另一个模型的特征。如果你很难决策到底用哪个算法时,千万不要纠结,所有的都用,然后集成之。
集成还有一个好处就是:某个推荐算法可能更适合某个场景下,这样被集成的算法就可以各自handle各自擅长的场景,最后集大成。
具体集成方法可选的很多,如logistic regression,GBDT,Random Forest,ANN。
- 做好特征工程
- 复用性
- 可解释性
- 可靠性
Xavier以Quora的答案排序为例,举了一些他们现在用到的特征算是好特征:
一个是答案本身的特征,如回答的质量;第二个是互动类型的特征,如投票,评论;还有用户特征,如他在某个话题下的专业程度。
深度学习给了另一种全新的特征工程之路,也是值得探索的,或许是人工特征工程的终结者,拭目以待。
网友评论