system: [SYSTEM]

user: 4. 经典推荐算法 4.1. 基于内容的推荐算法 基于内容的推荐算法充分利用用户的个人资料和项目的特征来生成推荐项，向目标用户推荐与其过去喜欢的内容特征相似的项目 [ 36 ]。比如，用户经常阅读包含“推荐”、“协同过滤”和“偏好”关键词的文章，基于内容的推荐系统就会推荐与推荐系统有关的文章。 基于内容推荐算法的步骤主要有三步：第一步：项目表示。提取项目内容特征来表示项目；第二步：学习用户偏好模型。利用用户过去喜欢(及不喜欢)的项目特征数据，学习用户的偏好模型；第三步：产生推荐列表。通过比较用户偏好模型与候选项目的特征，为用户推荐一组相似度最大的项目。具体过程如图2所示。基于内容推荐的关键就是计算项目内容特征向量之间的相似度，相似度计算的主要通过向量的余弦相似度来表示 [ 37 ]。 图2. 基于内容的推荐算法架构 基于内容的推荐又可以分为基于案例的推理技术和基于属性的技术 [ 3 ]。基于案例的推理技术会推荐与用户之前喜欢的项目相关度最高的项目，而基于属性的技术是推荐与用户个人资料属性匹配的项目。 基于内容的推荐系统的主要优点是用户独立性、可解释性，以及可解决项目冷启动问题。然而，随着个人隐私问题越来越受到互联网用户的关注，基于内容的推荐方法收集用户档案变得越来越困难，同时这种方法需要有效的特征提取，传统的浅层模型依赖于人工设计特征，其有效性及可扩展性非常有限，制约了基于内容的推荐方法的性能。由于只依赖于用户过去对某些项目的喜好，所以无法挖掘出用户的潜在兴趣，又新用户没有喜好历史，它还面临着新用户冷启动问题。 4.2. 协同过滤推荐算法 协同过滤推荐算法是推荐系统中最流行的推荐算法，它充分利用用户的历史行为数据来生成推荐项，协同过滤是建立在这样的假设基础上的，如果用户X和Y对t个项目进行相似的评分，或者有相似的行为(例如购买、观看、聆听)，那么用户就会对其他项目进行类似的评分或行为 [ 38 ]。 通常，基于CF推荐系统包含m个用户的列表 U = { u 1 ， u 2 ， ⋯ ， u m } 和n个项目列表 P = { p 1 ， p 2 ， ⋯ ， p n } 。系统构造一个m × n的用户–项目矩阵，其中包含用户对项目的评分，其中每个元素值r ij 表示用户u i 对项目p j 给出的评分。CF算法要么预测目标用户a对某个未评分项目q的评分，要么向用户a推荐其最喜欢的Top-N项目列表。CF算法的一般过程如图3所示。 图3. CF算法的一般过程 CF算法主要采用两大类方法来解决推荐生成问题： 1. 基于内存的协同过滤算法 基于内存的CF算法可以使用所有的用户–项目数据或一个样本集来生成预测。每个用户都有一个与其有着相似兴趣的群体，被称为邻居，通过识别新用户(或活动用户)的邻居，可以预测他或她对新项目的偏好。 基于内存的CF算法主要采用基于邻域的协同过滤，步骤如下：计算两个用户或两个项目之间的相似度，相似度反映了用户之间或项目之间的距离或相关性；通过将用户对所有项目所有评分加权平均或将所有用户对项目的所有评分加权平均，也可以使用简单的加权平均 [ 5 ]，为活动用户生成预测。当任务是生成Top-N推荐时，需要在计算相似度后找到N个最相似的用户或项目(最近邻)，然后将这些邻居聚合起来，得到Top-N项目列表作为推荐。基于内存的推荐算法主要有：UserCF、ItemCF和混合的。UserCF使用了目标用户a最近邻的过去偏好，而ItemCF则使用了与某一项目q最相似的项目的评分。 UserCF是推荐系统中最古老的算法，它的诞生标志着推荐系统的诞生。UserCF向目标用户推荐与其兴趣相似的用户过去喜欢且目标用户不知道的项目。兴趣相似度计算是通过用户的历史行为的相似度来衡量的。ItemCF是目前业界应用最多的算法，很多推荐算法的基础都是该算法。ItemCF给用户推荐那些和他们之前喜欢的项目相似的项目。不同于基于内容的推荐算法，ItemCF不是利用项目的内容特征计算项目之间的相似度，而是通过分析用户的行为记录计算项目之间的相似度。相似度的计算通常有三种方法：Pearson相关系数、Jaccard相似系数和余弦相似度 [ 39 ]。而调整余弦相似度是目前效果最好，也是最流行的相似度计算方法。 2. 基于模型的协同过滤算法 不同于基于内存的算法，基于模型的算法是根据已有数据应用统计和机器学习得到模型进行预测。模型的设计和开发(如机器学习、数据挖掘算法等)可以使系统学会根据训练数据识别复杂的模式，然后根据所学习的模型对测试数据或真实数据的协同过滤任务进行智能预测。基于模型的CF算法包括聚类模型、贝叶斯模型、概率模型、最大熵模型和矩阵分解等等。 基于聚类模型的推荐算法通常将聚类作为一个中间步骤，利用聚类的结果进行进一步的分析或处理，以执行分类或其他任务。聚类CF模型可以有不同方式的应用。比如，O’Connor和Herlocker [ 8 ] 以及胡蓉等人 [ 9 ] 使用聚类技术将数据划分为簇，然后在每个簇中使用基于内存的CF算法进行预测。Chee等人 [ 40 ] 使用k = 2的k-means方法，提出了RecTree方法，在递归地构造RecTree的过程中，将原始的大型评级数据划分为两个子簇。所得到的RecTree类似于一个不平衡的二叉树，预测是由目标用户所属的叶子节点进行的。基于聚类的推荐算法具有很好的可扩展性，因为它们在更小的集群中进行预测，而不是在整个数据集中进行预测。但其推荐质量普遍较低。 基于矩阵分解的协同过滤算法是近年来协同过滤算法中一种非常著名的方法，是一种基于潜在变量分解和降维的无监督学习方法。矩阵分解模型将用户和项目映射到维数为d的联合潜在因子空间，将用户与项目的交互结果建模为该空间的内积 [ 14 ]。每个项目i与一个向量 q i ∈ R d 相关联，每个用户u与一个向量 p u ∈ R d 相关联。对于给定的项目i，q i 中的元素值表示拥有这些因子的正负程度。对于给定的用户u，p u 中的元素衡量的是用户对相应的正负因子中较高的项目的兴趣程度。内积 q i T p u 表示用户u和项目i之间的交互，即用户对项目特征的总体兴趣，这近似于用户u对项目i的打分r ui ，即: r u i = q i T p u (1) 矩阵分解是一种发现数据背后隐藏结构的强大技术，是一种非常精确的降维方法。常用的分解模型主要有：奇异值分解(Singular Value Decomposition， SVD)、主成分分析(Principal Component Analysis， PCA)、概率矩阵分解(Probabilistic Matrix Factorization， PMF)、非负矩阵分解(Probabilistic Matrix Factorization， PMF) [ 41 ]。矩阵分解能够有效地处理海量数据集、稀疏的评价矩阵、可扩展性以及基于用户/项目的CF算法的冷启动问题。 协同过滤算法是目前最流行的推荐技术，不仅可以发现用户潜在的兴趣偏好，具有推荐新信息的能力，还能解决基于内容推荐中一些项目难以进行内容分析的问题，如：电影、音乐、艺术品等。 4.3. 混合推荐算法 每种方法都有各自的局限性，没有一种方法可以独领风骚，它们在各自的领域表现出来的效果也各有千秋，于是在实际的应用中，通常根据实际情况将各种算法混合在一起使用，所以就有了混合推荐技术。混合推荐技术融合了基于内容的过滤和协同过滤算法中两种或两种以上推荐技术的特点，从而利用每种技术的优势，提高性能。混合推荐技术非常有用，因为它可以克服传统推荐方法的大多数限制，将它们组合起来以获得更好的结果。混合推荐技术的方法有很多：加权型、切换型、交叉型、特征组合型、瀑布型、特征递增型、元层次型。 加权型：输出是由多种不同推荐方法加权组合而成。 切换型：根据问题背景和实际情况采用不同的推荐技术。 交叉型：同时采用多种推荐技术给出多种推荐结果，为用户提供参考。 瀑布型：后一个推荐方法优化前一个推荐方法：它是一个分阶段的过程，首先用一种推荐技术产生一个较为粗略的候选结果，在此基础上使用第二种推荐技术对其做出进一步精确地推荐。 特征组合型：将来自不同推荐数据源的特征组合起来，由另一种推荐技术采用。 特征递增型：将一种方法的推荐输出作为另一种方法的输入。 元层次型：用一种推荐方法产生的模型作为另一种推荐方法的输入。