一:工业界常用的推荐系统框架
如YouTube2016年发表的论文Deep Neural Networks for YouTube Recommendations所示,常用的推荐系统框架,主要分为Match和Rank两部分:
- 定义: Match基于当前的用户信息、历史信息、上下文信息(如用户所在位置等),快速在数据库中找到用户最感兴趣的TopN的Item,从而为后续的Rank来做小范围综合多目标最大化做准备;
- 做法: 通常使用基于User/Item/Model-based CF、DNN-Embedding-based等等来做召回,做粗排之后交由后面的Rank层做更加精细的排序,从而最终得到TopN的Item;
二、Collaborative Filtering 算法介绍
CF就是收集许多其他用户的偏爱信息来对该用户的兴趣进行预测,从数学角度来看,就是一个矩阵补全问题,如下图所示:
如何补全上图中的问号处的值,许多算法应运而生:
- User-based CF:基于用户的协同过滤可以挖掘那些有共同兴趣的小团体,通常具备一定的新颖性,但是准确性稍差,其典型公式如下: W u v = ∣ N ( u ) ∩ N ( v ) ∣ ∣ N ( u ) ∪ N ( v ) ∣ { {\rm{W}}_{uv}} = { {\left| {N\left( u \right) \cap N\left( v \right)} \right|} \over {\left| {N\left( u \right) \cup N\left( v \right)} \right|}} Wuv=∣N(u)∪N(v)∣∣N(u)∩N(v)∣ N ( u ) N(u) N(u)表示用户u喜欢的物品集合,但是这个公式有个问题,比如对于热门物品,可能很多人都买过这个物品,那么就会导致用户交集变大,从而也导致了用户相似性变大,所以需要对热门物品进行惩罚,改进版本如下所示: W u v = ∑ i ∈ N ( u ) ∩ N ( v ) 1 log ( 1 + ∣ N ( i ) ∣ ) ∣ N ( u ) ∣ ∣ N ( v ) ∣ { {\rm{W}}_{uv}} = { {\sum\nolimits_{i \in N\left( u \right) \cap N\left( v \right)} { {1 \over {\log (1 + \left| {N(i)} \right|)}}} } \over {\sqrt {\left| {N\left( u \right)||N\left( v \right)} \right|} }} Wuv=∣N(u)∣∣N(v)∣∑i∈N(u)∩N(v)log(1+∣N