上周Resyschina公众号粉丝数达到10000个,我们承诺给小伙伴们送福利(详见:写在ResysChina公众号一万订阅用户之际),恭喜@IF Young 和 @白大虾的 ...两位同学勇夺留言获赞数状元和榜眼!请两位同学在后台给我们留下收货地址,一本崭新的《深度学习:21天实战Caffe》立即寄出。也非常感谢其他同学的关心和支持,请继续关注Resyschina,我们持续分享原创文章,同时也不定期举行交流活动。下面为大家呈上今天的原创文章。
一年一度的ACM Recsys会议在9月份已经胜利闭幕,留下一堆slides和tutorials等着我们去学习。
翻看今年的各种分享,其中老司机Xavier Amatriain的分享引起了我的兴趣:Lessons Learned from Building Real-Life Recommender Systems。主要分享了作为推荐系统老司机的他,多年开车后总结的禁忌和最佳实践,这样的采坑实录显然是很有价值的。
Xavier Amatriain,曾任Netflix的算法总监,现任Quora的工程副总裁。
Xavier Amatriain在recsys上的分享,是他在推荐系统领域的十条实践经验(这位老司机同样的题目在不同渠道多次分享过,一共有三个版本,加起来去重后不止十条,同学们赚到了),本文只针对他在Recsys2016上的分享一一解读。
一、隐式反馈比显式反馈要爽
Xavier Amatriain列举了隐式反馈的以下好处:
二、深刻理解数据
Xavier Amatriain举了个例子,训练一个分类器,用来自动识别优质答案或劣质答案。这个问题似乎很简单,实际上你要思考,下面这些答案是好的还是不好的:
抖机灵的答案
某个领域的网红给了个很短的答案
很长、很有料的答案,但是没有人点赞
内容有料,但是错别字多
这些都是需要我们去深入业务理解,到底什么样的数据才是我们要找的。
三、为模型定义好学习任务
一个机器学习模型有三个因素构成:
训练数据(隐式反馈或者显式反馈)
目标函数(比如用户阅读一篇回答的概率)
衡量指标(比如准确率或者召回率)
假如现在有这么一个问题:用用户的购物历史以及历史评分,去优化用户走进电影院看完一部电影并且给出高分的概率,NDCG作为模型的评价指标,4分以上作为正样本。
这样就比较清晰的定义了学习任务的三元素:
训练数据:用户购物历史和历史评分
目标函数:用户走进电影院看完电影且给出高分的概率
衡量指标:NDCG
如果定义评价指标时模糊不清,如不说明是4分以上的作为正样本的话,就失去了显式反馈的信息,失去了对平台长期利益的关注。
还有个例子,Quora的兴趣feed排序。
四、推荐可解释比精准更有意义
五、矩阵分解大法好
Xavier Amatriain很推崇Matrix Factorization,因为它既有监督学习,又有无监督学习。
两种学习方法就这样结合在一个算法里:
它可以用来降维,这部分通常是PCA这样的无监督学习算法承担的,矩阵分解得到的隐因子就是降维后的特征,可以直接作为其他学习算法的输入;
它还可以做聚类,比如Non-negative Matrix Factorization就常常用来做聚类;
SVD就是一种回归,标准的监督学习。
矩阵分解还有一些变种:ALS(交替最小二乘),SVD++(结合特征的SVD),FM(因子机),TF(张量分解)。
总之,在推荐系统里,使劲压榨矩阵分解的效果。
六、万能的集成方法
集成还有一个好处就是:某个推荐算法可能更适合某个场景下,这样被集成的算法就可以各自handle各自擅长的场景,最后集大成。
具体集成方法可选的很多,如logistic regression,GBDT,Random Forest,ANN。
七、推荐系统也不能免俗之特征工程
Xavier以Quora的答案排序为例,举了一些他们现在用到的特征算是好特征:
八、对你的推荐系统要了如指掌
debuggability
Xavier 提到在Quora内部就有个工具,可以看到某个人的首页feed的每一个内容的分数,以及每个分数计算所依赖的特征,这样就很清楚知道为什么你“看到/没看到”某个人的回答或问题。
九、数据和模型是重要,但正确的演进路径更不容忽视
老司机说,这条经验他很看重。这条经验告诉我们,一个推荐系统的产品功能如何一步一步从0到上线的。
十、别一言不合就要上分布式
Xavier认为,大多数推荐算法不需要分布式,毕竟我们的推荐系统中很少会有训练计算机从海量视频中识别什么是猫这样的算法。
Xavier说,
Xavier说在Quora,曾经用Spark实现了一个计算任务,需要15台机器跑6小时才能跑完,而某个工程师花了四天时间研究spark慢在哪,然后用C++写了一个单机版,只用10分钟就跑完整个任务。说到这里,我也同样的经验,曾经用Spark跑协同过滤,四个小时没有跑完,组内的董玮博士用C++写了一个单机版,用openmp库把所有的核都用上,30分钟就计算完了。
十一、要做就做能赚钱的推荐系统【推广】
点击“阅读原文”了解更多详情。
参考资料:
[1] http://www.slideshare.net/xamat/recsys-2016-tutorial-lessons-learned-from-building-reallife-recommender-systems
[2] http://www.slideshare.net/xamat/strata-2016-lessons-learned-from-building-reallife-machine-learning-systems
[3] https://chatbotnewsdaily.com/10-more-lessons-learned-from-building-real-life-ml-systems-part-i-b309cafc7b5e#.vmuuaznyk
[4] https://medium.com/@xamat/10-more-lessons-learned-from-building-real-life-machine-learning-systems-part-ii-93fe7008fa9#.e4p4bl23f
[5] https://www.youtube.com/watch?v=88tzDSOzVUQ
本文作者:
陈开江@刑无刀,多年个性化推荐从业经验,欢迎加他个人微信交流:kaijiang_chen,注明来自resyschina。
★ 猜你喜欢:「搜索、推荐和广告架构能统一吗?」
猛戳👇了解能赚钱的推荐系统是什么