推荐系统的主要算法

主流的推荐系统算法大致分为两类:
1. 基于用户行为数据的协同过滤算法
2. 基于内容数据的过滤算法
大致而言,基于内容数据的算法适用于cold start,即用户和项目都比较少的时候,而基于用户行为数据的协同过滤算法在用户和项目较多,数据比较丰富的情况下有较高的准确率。

除此之外,还包括基于社会网络数据的推荐,基于语境(上下文)感知数据的推荐,基于心理学数据的推荐等等。

本文参考总结自:
雷建云, 何顺, and 王淑娟. “一种改进的基于用户项目喜好的相似度度量方法.” 中南民族大学学报 (自然科学版) 34.4 (2015).

1. 基于用户行为数据的算法

1.1 基于用户的协同过滤算法(user-based CF)

一个用户喜欢和他具有相似喜好的用户喜欢的项目, 两个用户喜欢的项目交集越大, 这两个用户越相似。
两个用户兴趣相似度的计算可以有多种方法, 常见的如 Pearson相关相似性余弦相似度计算。

1.2 基于项目的协同过滤

基于项目的协同过滤推荐(item-based CF)基于这样的假设[8]: 一个用户会喜欢与他之前喜欢的项目相似的项目。因此, 基于项目的协同过滤推荐关键在于计算物品之间的相似度。
基于用户的协同过滤和基于项目的协同过滤统称为基于邻域的推荐 (nearest neighbor recommendation),也称作基于记忆的推荐算法(memory-based recommendation)。
基于邻域的推荐算法需要维护一个用户相似度矩阵或项目相似度矩阵, 因此对于项目的数目更新速度远远小于用户数目的增长速度的情况, 宜采用基于项目的推荐算法, 如 Amazon 建立的推荐系统正是基于项目的协同过滤推荐算法[5], 还有移动应用产品的推荐[9]。另外, 有研究表明, 基于项目的算法一般在性能上要优于基于用户的算法[10]。

基于领域的推荐算法不足之处在于数据稀疏性等问题, 难以处理大数据量下的即时结果。因此提出了基于模型的协同过滤推荐算法。

1.3 基于模型的协同过滤

基于模型的协同过滤推荐 (model-based CF) 是采用机器学习或数据挖掘等算法, 用训练数据来学习识别复杂模式, 从而得到学习模型, 然后基于学习模型在数据集上进行智能预测[12]。主要有以下模型:

  • 隐语义模型 (latent semantic CF models)/矩阵分解模型(matrix factorization)
  • 贝叶斯信念网协同过滤模型(Bayesian belief nets CF models
  • 聚类协同过滤模型 (clustering CF models)
  • 概率因素模型(probabilistic factor models)

2. 基于内容数据的推荐

对一个给定的用户, 推荐与他之前喜欢的项目在内容上有相似性的其他项目。

这种推荐仅需要得到两类信息: 项目特征的描述和用户过去的喜好信息。

  • 利用领域专家给项目打标签的方法 [25], 也即传统的分类系统(Taxonomy),
  • 另一种是用户给项目打标签, 也即大众分类系统 (Folksolomy)。

3. 基于社会网络数据的推荐

在社会网络中, 与其他用户进行链接的用户, 表示愿意分享一定共同的兴趣爱好, 或者他们之间有相似的品味(同质性原理), 这里的相似性被期望来帮助改进推荐准确率和质量

基于社会网络数据的推荐(social network-based recommendation)早先大部分是基于领域的方法。首先探索打分者的社会网络, 聚集打分者的打分来计算预测打分; 然后找到打分者的邻居。除了简单的基于邻域的方法,
还有许多是基于模型的推荐方法,如采用矩阵分解方法[26]、 图模型[27], 将用户的社会网络和用户物品的喜好关系建模到一张图中, 联合基于项目的推荐和基于信任(trust-based)的推荐, 然后利用随机游走算法给用户做推荐。采用异构数据源对用户兴趣进行建模, 从异构社会网络中学习相关性[28]。
这里, 基于信任的推荐是将信任度引入推荐系统, 用信任度代替相似度。有许多方法可以计算用户的 top-N信任邻居。用一个信任矩阵 (如 Eigentrust[29])来计算 top-N 被信任的用户, 或者激活扩散模型(spreading activation model) [30]通过他们接收到的能量来给结点排序。

4. 基于语境(上下文)感知数据的推荐(context aware-based recommendation)

语境信息类型包括时间、 信息、 外界物理环境 (如天气、温度等)、 设备类型、 周围人员、 活动状态、 目的/意图等。
还有些系统考虑了情绪、 计算平台、 网络条件、社会网络等更为广泛的语境。

  • 通过语境驱动的查询和搜索推荐
    典型的是使用语境信息来查询或搜索一个特
    定的资源应答(如餐馆), 并给出最好的匹配资源推荐给用户(如离用户最近的当前营业着的餐馆)
  • 通过语境喜好的启发和评估推荐
    使用多维方法来整合语境信息到推荐系统, 这里传统的二维用户/项目范例被延伸来支持额外的语境维度, 如时间、 位置和公司。

5. 基于人口统计学数据的推荐

基于人口统计学数据的推荐 (demographic-based recommendation)是根据人口统计学数据对每个用户建立一个用户剖面(user profile), 系统根据用户的剖面图, 计算用户间相似度, 得到当前用户的最近邻集, 最后系统会把基于 “邻居” 用户群喜好的项目推荐给当前用户。

6. 基于心理学数据的推荐

人的心理特征和情感因素在用户做决策时非常重要[42-43]。人类情感、 个性及其模型已经被广泛地在计算机上实施[44]。基于心理学数据的推荐(psychology-based recommendation)方法有情感智能 (emotional intelligence) [45]、 满意度 (satisfaction) [46]、 心理作用 (psychological effects) [47]、 个性特质 (personalitybased) [48]。
值得一提的是, Neflix竞赛获奖者之一就是学心理学的。

7. 基于大数据的推荐(big data-based recommendation)

目前, 大数据通常被认为是当前传统技术难以处理的, 这里的传统技术也包括传统推荐技术。
基于大数据的推荐(big data-based recommendation)有两个内涵: 一个是大数据使得传统推荐技术更加准确; 另一个是传统的技术已经不能满足需求, 大数据需要新的推荐技术
大数据的来源多样, 对推荐系统而言,“大数据”包含系统可触及到的数据, 如用户行为数据、 社会网络数据、 人口统计学数据、 语境感知数据等。
大数据环境下的推荐是至少基于两种类型的数据而进行的推荐。研究表明, 基于大数据的各种混合推荐算法的推荐效果要优于单纯的基于一种数据的推荐,
如将基于社会网络的推荐和协同过滤推荐结合[50], 将基于内容的推荐和协同过滤方法结合[51], 跨领域推荐[52]。

8. 比较与分析

《推荐系统的主要算法》

9. 推荐系统的评测

目前大多数推荐系统的评价指标有预测准确度[58]、 覆盖率、 召回率、 多样性 [59]、 ROC(receiver operating characteristic)等 [60], 文献[61]从准确度、 多样性、 新颖性及覆盖率等方面进行多角度阐述, 细分为 27个评价指标, 并对各自的优缺点以及适用环境进行了深入的分析, 如表2所示。其中准确度是最重要也是最常用的推荐系统评测指标, 用来度量推荐系统预测的能力。对于top-N推荐,用准确率 (precision) 和召回率 (recall) 来评测推荐系统。
《推荐系统的主要算法》

10. 展望

从大数据的4V角度看, 主要的挑战及未来研究方向有以下几个方面:
– Volume(数据规模)。
数据量巨大加剧了数据稀疏性问题和长尾(long tail)问题。
在推荐系统中, 可获得的已打分数目通常远小于需要预测的打分数目。常用的数据集都非常稀疏, 当评分矩阵达到某种程度之后, 相比标准的协同过滤技术, 推荐质量会有所下降, 而且距离关系的计算代价很高, 很难实际应用到大规模评分数据上。
长尾是指那些原来不受到重视的销量小但种类多的产品或服务由于总量巨大, 累积起来的总收益超过主流产品的现象。
– Variety (数据类型多样)。推荐系统可使用的数据复杂繁多, 如社交网络里面的信息、 地点位置信息和其他上下文感知信息都考虑进来, 不但数据量
增加, 计算复杂度亦会成倍增加。
– Value (价值)。大数据本身的价值密度低, 但价值巨大。对推荐系统而言, 对用户兴趣建模, 并将用户可能感兴趣的项目推荐给他, 这里的项目相对用户而言, 是有价值的项目(数据)。
– Velocity(时效性)。推荐系统对时效性要求较高, 想真正捕获最优的推荐机会, 时效性非常重要。如何将海量的用户数据应用到实时的用户交互中以提高用户体验, 这就涉及到推荐系统可扩展性(scalability)问题。

    原文作者:adrianna_xy
    原文地址: https://blog.csdn.net/u012223913/article/details/52807717
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞