构建企业级推荐系统:算法、工程实现与案例分析
上QQ阅读APP看书,第一时间看更新

2.3.2 完全个性化范式

完全个性化范式是最常用的推荐模式,可用的推荐方法非常多。下面对常用的算法及最新的算法进展进行简单梳理。

1.基于内容的个性化推荐算法

这类推荐算法只依赖于用户自己的历史行为而不必知道其他用户的行为。该算法的核心思想是:标的物是有描述属性的,用户对标的物的操作行为为用户打上了相关属性的烙印,这些属性就是用户的兴趣标签,这样我们就可以基于用户的兴趣来为用户生成推荐列表。拿视频推荐来举例,如果用户过去看了科幻和恐怖两类电影,那么恐怖、科幻就是用户的偏好标签了,这时我们就可以给用户推荐科幻、恐怖类的其他电影。具体来说,我们有如下两类方法来为用户做推荐。

(1)基于用户特征表示的推荐

标的物是具备很多文本特征的,比如标签、描述信息、metadata信息等。我们可以将这些文本信息采用TF-IDF或者LDA等算法转化为特征向量,如果是用标签来描述标的物,那么我们可以构建一个以标签为特征的特征向量。

有了特征向量,就可以将用户所有操作过的标的物的特征向量的(时间加权)平均作为用户的特征向量,利用用户特征向量与标的物特征向量的余弦(向量的内积运算)就可以计算用户与标的物的相似度,从而计算出用户的推荐列表。

(2)基于倒排索引的推荐

如果我们基于标签来表示标的物属性,那么基于用户的历史行为,可以构建用户的兴趣画像,该画像即是用户对各个标签的偏好,并且有相应的偏好权重。

构建完用户画像后,我们可以构建出标签与标的物的倒排索引查询表(熟悉搜索的读者应该不难理解)。基于该倒排索引表及用户的兴趣画像,我们就可以为用户做个性化推荐了。该类算法其实就是基于标签的召回算法。

具体推荐过程如图2-7所示,从用户画像中获取用户的兴趣标签,基于用户的兴趣标签从倒排索引表中获取该标签关联的节目,这样就可以从用户关联到节目了。其中用户的每个兴趣标签及标签关联到的标的物都是有权重的。

图2-7 基于倒排索引的电影推荐

该类推荐算法是非常自然直观的,可解释性强。这样可以较好地解决冷启动问题,只要用户有一次行为,就可以基于该行为做推荐。但是,该类算法往往新颖性不足,给用户的推荐往往局限在一个狭小的范围中,如果用户不主动拓展自己的兴趣空间,该方法很难为用户推荐新颖的内容。第3章会对基于内容的推荐算法进行深入介绍。

2.基于协同过滤的推荐算法

基于协同过滤的推荐算法的核心思想是很朴素的“物以类聚、人以群分”的思想。所谓物以类聚,就是计算出与每个标的物最相似的标的物列表,我们就可以为用户推荐与用户喜欢的标的物相似的标的物,这就是基于物品的协同过滤。所谓人以群分,就是我们可以将与该用户相似的用户喜欢过的标的物(该用户未曾操作过)推荐给该用户,这就是基于用户的协同过滤。具体思想可以参考图2-8。

图2-8 “物以类聚,人以群分”的朴素协同过滤推荐

协同过滤的核心是计算标的物之间的相似度以及用户之间的相似度。我们可以采用非常朴素的思想来计算相似度。先将用户对标的物的评分(或者隐式反馈,如点击等)构建为如图2-9所示的矩阵,矩阵的某个元素代表某个用户对某个标的物的评分(如果是隐式反馈,值为1,如果某个用户对某个标的物未产生行为,值为0)。其中行向量代表某个用户对所有标的物的评分向量,列向量代表所有用户对某个标的物的评分向量。有了行向量和列向量,我们就可以计算用户与用户之间、标的物与标的物之间的相似度了。具体来说,行向量之间的相似度就是用户之间的相似度,列向量之间的相似度就是标的物之间的相似度。相似度的计算可以采用余弦相似度(Cosine Similarity)算法。

图2-9 用户对标的物的操作行为矩阵

在互联网产品中一般会采用基于物品的协同过滤,因为对于互联网产品来说,用户相对于标的物变化更大,用户增长较快,标的物的增长却相对较慢(这也不是绝对的,像新闻短视频应用,标的物数量增长就比较快),所以利用基于物品的协同过滤算法效果更稳定。

协同过滤算法的思路非常直观易懂,计算也相对简单,易于分布式实现,也不依赖于用户及标的物的其他信息,效果非常好,且能够为用户推荐新颖的内容,所以在工业界得到了非常广泛的应用。第4章会对协同过滤推荐算法进行深入介绍。

3.基于模型的推荐算法

基于模型的推荐算法种类非常多,最常用的有矩阵分解算法、分解机算法等。目前深度学习算法、强化学习算法、迁移学习算法也在推荐系统中得到了大规模应用。

基于模型的推荐算法基于用户历史行为数据、标的物metadata信息、用户画像数据等构建一个机器学习模型。利用数据训练模型,求解模型参数。最终利用该模型来预测用户对未知标的物的偏好。图2-10就是基于模型的推荐系统模型训练与预测的流程。

图2-10 基于模型的推荐系统

基于模型的推荐算法有三类预测方式,第一类是预测标的物的评分,利用评分的高低表示对标的物的偏好程度。第二类是采用概率的思路,预测用户对标的物的喜好概率,利用概率值的大小来衡量用户对标的物的喜好程度。第三类是采用分类的思路,将每个标的物看成一类,通过预测用户“消费”的下一个(几个)标的物所属的类别来做推荐。矩阵分解算法就是预测用户对标的物的评分,logistic回归算法就是概率预测方法,而YouTube发表的深度学习推荐就是基于分类思路的算法(参见本章参考文献[10])。

矩阵分解算法是将用户评分矩阵M分解为两个矩阵U、V的乘积。U代表用户特征矩阵,V代表标的物特征矩阵。某个用户对某个标的物的评分,就可以采用矩阵U对应的行(该用户的特征向量)与矩阵V对应的列(该标的物的特征向量)的内积。分解机算法是矩阵分解算法的推广,这里不做介绍。第6章和第7章会详细讲解矩阵分解和分解机算法。

最近几年深度学习在图像识别、语音识别领域大获成功。很多研究者及工业实践者也将深度学习用于推荐系统,如YouTube、Netflix、阿里、京东、网易、携程等都将深度学习部署到了实际推荐业务中,并取得了非常好的转化效果(参考后面的参考文献中对应的论文)。第10章会详细介绍深度学习推荐系统。

强化学习及迁移学习等新的方法也开始在推荐业务中崭露头角,有兴趣的读者可以阅读文末对应的参考文献。