流动的推荐系统——兴趣Feed技术架构与实现



对于一个初级的兴趣Feed,没必要做到在线实时更新排序算法的参数,所以数据的pipeline可以借鉴Pinterest。例如,选用逻辑回归预测互动行为排序Feed,离线阶段关注模型的AUC是否有提升。

另外,互动数据相比全部曝光数据,数量会小得多,所以在生成训练数据时需要对负样本(展示了却没有产生互动的样本)进行采样,采样比例也是一个可以优化的参数,固定算法和特征后选择效果最好的比例。

AB测试时关注具体的产品目标是否有提升,比如互动率等,同时还要根据产品具体形态关注一些辅助指标。

兴趣Feed的挑战及应对
兴趣Feed是在互联网深度发展之后的一种必然趋势,很多Feed类产品都已经在数据上验证了这一点。但是我们还是要清醒地认识到:兴趣Feed类产品虽然概念简单,挑战却不少。

用户习惯
时间排序的Feed非常自然,用户很容易接受。而一旦用算法决定Feed的排列顺序,用户是否能够接受,非常挑战产品的设计能力。尤其是如果一开始是时间线Feed,要转变成兴趣Feed,这个切换相对于一开始就是兴趣Feed,用户习惯改变要更难一些。

面对这一挑战,我们需要考虑几点:

  • 是不是真的需要兴趣Feed?信息没有过载是不需要兴趣Feed的。是否信息过载,数据很容易验证:到底用户错过的了多少内容?
  • 兴趣Feed产品设计需要深入思考,虽然用算法为用户过滤了他不感兴趣的内容,但是在UI/UE上需要淡化技术痕迹,呈现出更自然的浏览方式,比如说是不是可以考虑算法筛选后,展示上依然是时间序。
  • 兴趣Feed的算法效果提升要快。一开始兴趣Feed排序效果不好很正常,只要在用户失去耐心之前将其做到可用,风险就会小很多。



技术上的挑战
在一个需要用算法排序的Feed类产品上,数据量级应该不会小了,而且如果兴趣Feed真的有效,那么数据量增加速度也会提升,所以相应的技术挑战会很快出现。

  • Feed服务的高可用。要保证关键模块故障时优雅降级,任何数据都有冗余,并且能够热切换。
  • 大规模机器学习。高维稀疏的特征空间,超大的样本量,这些都要求机器学习平台能够处理大规模学习问题,它一定是并行化的,也方便算法工程师快速进行迭代。
  • 在线实验系统。对在线流量进行正交切分,尽量多地进行不同实验,而且同时进行的实验之间互不影响,得到的实验结论科学有效。这一块可以参考Google的在线实验系统,国内百度等大型互联网公司也公开分享过它们的实验系统如何划分流量。


算法的边界
我们不得不承认,算法是有边界的。只不过很多产品距离边界还很远,还没有充分把数据中蕴含的价值挖掘出来。Facebook建立人肉评测小组,说明他们已经非常重视利用人的创造力弥补算法的不足。

由于大多数人在大多数情况下是非理性的,感兴趣的标准也会呈现不一致的情况,再加上社会群体心理的干扰,为个人寻找兴趣内容是一个非常复杂的课题。

另外,算法本身的引入,也给整个产品增加了复杂度,在算法干预下再测量用户对内容的感兴趣程度,很类似量子理论中的“测不准原理”。

面对算法接管我们的Feed内容,我们既不能做出太多主观决策,相信科学的算法一定能够得到比纯人力主观指定的规则更好的结果,但是也不能偷懒,需要从数据中得到启示,用我们上帝般的视角巡视整个局面,帮助算法表现得更好。