推荐系统

推荐系统

 推荐系统是什么

  推荐系统是帮助用户发现内容,克服信息过载的重要工具

   信息过载: 信息过载是信息时代信息过于丰富的负面影响之一。指社会信息超过了个人或系统所能接受、处理或有效利用的范围,并导致故障的状况。

  它通过分析用户行为,对用户兴趣建模。从而预测用户的兴趣并给用户做推荐;

   兴趣建模: 根据用户过去的喜好来推测未来可能喜欢什么物料的过程。

 早期的推荐系统

  基于热度推荐

   好处:热度高的直播质量有保证。热度高大概率符合大众的喜好或者符合当前的潮流趋势等等,是有脱颖而出的地方。

   坏处:流量全部集中在头部主播,小主播难以得到有效的曝光。 如果这一情况长期存在,小主播直播热情没了,可能就不直播了。这样会对平台的整体利益造成损害。 难以做到“千人千面”的个性化推荐效果。 有可能所有用户看到的都是头部主播,这样就无法做到个性化推荐,也会造成用户看腻的情况。

现代推荐系统

 架构

  

 召回 VS 排序

  召回阶段: 用些成本低、易实现、速度快的模型(如协同过滤)进行初步筛选

   Youtube召回模型

    

Youtube的召回模型是比较复杂的,上面提到的召回模型都是用到了用户和物品的id类特征,而Youtube模型用到了性别、地理信息、样本的时间和一些embedded特征等。这个模型的特点就是:模型最后一层的输出当作用户的隐向量,是在线上实时计算的,就是每次用户来经过嵌入层变成向量再到ReLU这样的网络得到一个输出作为用户的隐向量;最后一层的权重当作物品的隐向量,这一部分是离线训练好后直接存储起来,线上不用直接更新,直接拿出来用就行;这些线上拿到用户的隐向量以及存储的物品隐向量以后,做一个基于类似最近邻查找的方法基于内积进行最近邻查找,其实就是把用户隐向量和所有物品隐向量做内积,然后根据内积进行排序。

   

  排序阶段: 用更全面的数据、更精细的特征、更复杂的模型进行精挑细选;

   重排阶段一般用List Wise排序,关于List Wise排序,可以从两个角度来说:一个是优化目标或损失函数;一个是推荐模块的模型结构。

https://zhuanlan.zhihu.com/p/100019681

    早期的排序模型

     逻辑回归(LR)

      

      

     因式分解机(FM)

      

      缺点

       FM只能进行二阶特征交叉,如果想学高阶特征交叉,FM公式后边又要加入很多项,这样组合起来的维度是爆炸的,所以就引入了GBDT+LR模型。

     GBDT+LR

      

He X, Pan J, Jin O, et al. Practical lessons from predicting clicks on ads at facebook[C]//Proceedings of the Eighth International Workshop on Data Mining for Online Advertising. 2014: 1-9.

    深度排序模型

     Wide&Deep类模型,如(x)DeepFM、DCN、DIN;

      Wide&Deep

       

       FM + DNN = DeepFM

       

      DIN

       

      

Wide&Deep类模型区别就在两部分:一是特征交叉的方式是隐式/显示、元素级/向量级、二阶/高阶中的哪一个;二是所有Embedding的级联方式是concatenate/weighted sum/product/attention中的哪一种。

https://mp.weixin.qq.com/s/e6Spp7smIEUUExJxHzUOFA

 基于邻域的协同过滤

  邻域建模的目的

   

   把用户对电影的原始评分日志转换成评分矩阵的形式,并且矩阵中会存在大量的空白项;

   建模的过程就是填充空白项的过程,这样就得到了所有用户对所有电影的评分(喜好程度),然后就可据此进行个性化推荐了

  方法

   计算用户/物品之间的余弦相似度

    

   基于相似度和现有评分矩阵填充缺失值

    

  缺点

   这是一种基于统计的方法,不是优化学习的方法。(没有学习过程和设立指标进行优化得到最优模型的过程) 只用了局部数据计算相似度、进行推荐,更像是一种策略。没有用到全局数据。 当用户或物品维度很大时,会占用很大的内存。

 基于隐向量的协同过滤

  基于矩阵分解方法建模的目的也是补全缺失值

   

   方法

    

    显示反馈常用方法

     

    隐示反馈常用方法

     

Hu Y, Koren Y, Volinsky C. Collaborative filtering for implicit feedback datasets[C]//2008 Eighth IEEE International Conference on Data Mining. Ieee, 2008: 263-272.

      

     优点

      模型简单易实现; 线上速度快(可以离线训练,线上只需要做点积); 存储少(高维稀疏的评分矩阵变为两个低维稠密的隐向量矩阵);

     缺点

      推荐结果可解释性较差; 未用到其他特征,不够综合、全面(和ranking系列模型比)

  基于深度学习的矩阵分解

   why

    学到用户/物品的隐向量后,直接用内积描述用户-物品交互关系(matching function) 有一定的局限性,即内积函数(inner product function)限制了MF的表现力 。

   how

    即借鉴深度学习中的方法,使用深度神经网络 (DNN) 从数据中自动学习用户/物品隐向量的交互函数(即内积函数),在增强表现力的同时也可以引入一定的泛化能力。

   paper

    Neural Collaborative Filtering(NCF)

He X, Liao L, Zhang H, et al. Neural collaborative filtering[C]//Proceedings of the 26th international conference on world wide web. 2017: 173-182.

     

    NeuMF

He X, Liao L, Zhang H, et al. Neural collaborative filtering[C]//Proceedings of the 26th international conference on world wide web. 2017: 173-182.

     

它提出了一个GMF Layer(广义矩阵分解层)和一个DNN层。可以看到拿到用户和物品的隐向量之后,一方面在GMF层做元素级别的乘积,其实内积就是对应位置相乘再相加,NeuMF稍微改进了一下,对应位置相乘完之后,不是直接相加,而是再学一次权重,这就是在接一个Dense层来学习一下权重,相当于传统的矩阵分解权重不在都为1,而是用网络学习。另一方面,加入了一个DNN层。把用户隐向量和物品隐向量直接Concatenate起来以后,直接接入一个DNN层。最后将两方面的结果Concatenate起来接到输出层。

 特征工程

  

 

(基于邻域的协同过滤, 基于隐向量的协同过滤)