刘华玲,郭 渊,马 俊
上海对外经贸大学 统计与信息学院,上海 201620
随着大数据、互联网的快速发展,网络数据量增速越来越快[1]。如何从海量的文章和数据中搜索用户的历史信息,满足用户的推荐需求,产生高质量推荐已经成为各大平台的研究目标。满足用户的个性化需求是产生高质量推荐的基础,在推荐系统的设计中涉及到两个关键问题:一是构建用户的偏好模型,得到用户感兴趣的项目或近邻用户;二是设计个性化推荐算法,对用户产生准确的推荐。
目前应用最广泛的是协同过滤[2-4]算法和基于内容的推荐。协同过滤根据用户的历史数据寻找相似用户或偏好项目并进行推荐,协同过滤算法在各领域应用广泛,但是也面临着以下问题:与推荐系统中的用户数量和项目数据相比,大多用户只对一小部分项目进行过评价,用户对项目的评分信息非常稀疏;数据量大,算法很难短时间内产生最优推荐;数据具有动态性,用户的兴趣也是在不断变化的。解决上述问题,提高推荐精度一直是推荐领域的重点研究方向。相似度的计算决定了协同过滤算法的准确性,是算法中最重要的部分,相似度的计算决定了近邻用户和近邻项目的选择,进而影响整个推荐结果,因此协同过滤算法中的核心问题是相似度算法。
协同过滤中常用Jaccard相似度、余弦相似度、Pearson相似系数等来衡量用户或项目之间的相似程度,但是一般的传统相似度不足以捕捉相似用户,尤其是在数据稀疏的场景和新用户评分不足的场景,使用传统的相似度算法不能准确定位相似用户。为提高推荐质量,许多学者从相似度方向进行研究,以解决传统的相似度算法存在的缺点。本文首先介绍了常用的相似度计算公式,从数据稀疏、冷启动、用户兴趣偏移和用户偏好三个方面归纳相关学者在相似度算法方向上的创新与不足,最后对未来可能的改进方向进行了展望。
基于用户历史行为的推荐称为协同过滤推荐,目前协同过滤算法是最常用的推荐算法,在各大平台应用广泛,协同过滤算法主要包括基于用户的推荐[5-8]、基于项目的协同过滤推荐[9-10]和基于模型的推荐[11-12]。
基于用户的协同过滤推荐算法目标是根据用户的历史数据找到与目标用户相似的用户[13],根据寻找的近邻用户的评分数据,寻找目标用户可能感兴趣的项目,进而产生推荐。
基于项目的协同过滤是根据用户对物品的历史评分信息,找到物品之间的相似性,然后通过目标用户偏好信息,将目标用户可能感兴趣的项目推荐给该用户[14-15]。
此种类型的推荐系统向活跃用户进行推荐时基于该活跃用户和其他类似用户的先前评分,并且没有关于项目和用户的附加信息。
基于模型的协同过滤推荐就是基于历史数据训练一个推荐模型,然后在模型中引入用户的实时评分信息,并进行预测和推荐,基于模型的方法大多试图使用矩阵分解来建模系统。
设计基于协同过滤方法的关键是使用有效的相似度函数来计算用户或项目之间的相似性,相似度函数直接影响推荐模型的性能,本文对传统的相似度算法进行了总结比较,并总结了相关学者对相似度算法的扩展和改进。
相似度常用来判断事物之间的相似性,通过计算事物之间的距离来进行判断,距离值越小相似度越大。在推荐系统中,常用Pearson相关系数、余弦相似度等计算推荐系统中的用户相似性。
Pearson相关系数:常用来衡量向量之间的相关性,取值范围为[−1,1][16],计算时通常需要具有共同评分的项目。
樊艳清等[17]通过准确率、召回率等指标深入分析了余弦相似度、修正的余弦相似度、Pearson 相关系数、欧式距离、Jaccard相似度、古本系数等指标,综合分析准确率、召回率等指标,发现基于Pearson相关系数的相似度具有更加广泛的应用领域,而且Pearson 相似度在量纲不同的数据集中同样适用。不同的相似度适用不同的应用场景,本文对常用的相似度进行了总结比较,如表1所示。
表1 传统相似度适用条件及优缺点Table 1 Applicable conditions and advantages and disadvantages of traditional similarity
传统的相似度计算方法依赖于共同评分信息,不能很好的解决推荐系统中冷启动问题[18]和数据稀疏问题,越来越多的学者开始将传统的相似度算法与其他潜在因素结合,构造新的模型提高推荐质量。
当系统中产生新项目或新用户时,缺少项目或用户的相关信息,此时无法根据历史信息进行推荐,系统需要解决冷启动问题,相关学者从冷启动方向对推荐系统进行了一些改进。
一些学者从相似度公式本身出发,在公式构建时加入影响因子。Ahn[19]将邻近性、影响力和知名度等因素引入到相似度算法中,构建了称为PIP 的相似度算法,该度量利用数据在特定领域的含义,而不仅仅是采用传统的相似性,以便在冷启动条件下更有效,相似度公式为:
否则:
其中μu、μv分别表示用户的评分均值,σu、σv表示用户的评分方差,所提出的算法很好的提高了推荐精度,但是算法的时间效率不足。
在传统相似度中加入反映偏好和兴趣的影响因子,改进了传统相似度计算较为单一的问题,能很好解决系统没有新用户历史信息的缺陷,但是改进的混合相似度往往具有较高的时间复杂度。
一些学者提出利用传统的相似度构建混合相似度[21],以解决单一算法的局限性。Bobadilla等[22]提出将Jaccard 相似度与均方差(MSD)相结合,认为Jaccard 和MSD 的组合可以用投票的数值来补充Jaccard,并可以缓解MSD 使用中的覆盖率不足问题,其混合相似度公式如下:
Bag等[23]的目标是开发新的简单而有效的相似性模型,在更低的计算时间内提高推荐的准确性。Ajaegbu[24]为解决冷启动问题,提出了一种优化算法,通过在相似度公式中增加一个平衡因子和改变α值来解决这个问题,改进后的算法在冷启动问题中具有较好的推荐效果。谭学清等[25]将用户特征、专家信任度等因素引入到相似度计算中,当新用户进入系统时,采用专家用户信息对未评分项目进行预测,进而提升推荐效果。基于冷启动改进的相似度算法优缺点对比如表2所示。
表2 基于冷启动改进的相似度Table 2 Similarity based on cold start improvement
一些学者在对相似度进行改进时与基于模型的方法相结合,将其他统计学方法与相似度结合起来,产生高质量推荐。韩胜宝等[26]为了缓解用户冷启动问题,将相似度和层次聚类相结合,利用用户的统计学信息、用户的评分信息和项目的类别信息,提出了混合相似度,作者进行层次聚类时考虑用户的人口统计学信息,当新用户进入系统,尽管没有新用户的历史信息,但可以利用新用户的统计学信息计算冷启动用户与其所在类簇中的其他用户之间的相似度,从而进行推荐。Rajendran等[27]为了缓解协同过滤算法中的用户冷启动问题,将维基百科数据和浏览历史结合并引入到推荐算法中,通过使用维基百科数据上的潜在狄利克雷分布模型来生成主题,然后使用用户浏览历史上的主题来提取用户偏好,采用层次聚类法对用户进行聚类,在为冷启动用户进行推荐时,寻找冷启动用户所在簇,只需在所在簇中寻找近邻用户进行推荐。Wang等[28]提出了基于α-散度的相似性度量,该度量根据评分的概率密度分布进行计算,大大减少了对共同评分案例的依赖性,在评分矩阵中,选取项目a和b的评分列,基于α-散度来计算项目a和项目b之间的相似程度。
对于基于模型的改进,当推荐系统中加入的新用户或新产品,依旧可以产生较好的推荐,突破了共同评分项目的限制,可以使用更多的信息来计算相似度,有利于提高预测精度,但是时间复杂度过高,很难产生高效率的推荐。
推荐系统中评分矩阵往往是稀疏的,大多用户只对一小部分项目进行评分,数据稀疏性严重影响了推荐精度。
有学者构建了不依赖于共同评分项目的相似度,充分利用评分矩阵的信息。Patra 等[29]在传统计算公式中引入Bhattacharyya 系数,提出了BCS 相似性度量;其次,加入信任权重,精确计算直接信任值,引入信任传递机制,计算用户的间接信任值,将用户的评分偏好和用户信任度结合起来构建混合相似度。从评分数据中获得的两个项目i和j的BC系数:
在公开数据集上证明,加入一致性因子和折中因子的相似度算法可以提高推荐效率,但是改进的算法目前只在公开数据集中进行了验证,无法有效验证算法在其他领域是否具有较好的推荐效果。
Deng等[31]考虑商品的非对称性,提出了基于概率分布的新型K-medoids 聚类推荐算法,在KL 散度的基础上引入聚类算法。KL散度常常被用来描述两个概率分布之间的差异问题,不仅考虑共同评分信息,还充分利用了项目的隐形信息,很好地解决了数据稀疏问题,改进的KL散度为:
部分学者在相似度计算时采用混合模型进行计算,将其他模型融入到协同过滤中,以解决数据稀疏带来的局限性。Slope one 算法具有实时高效、操作方便的特点,在推荐系统中常被用于数据填充,通过数据填充进一步对相似度进行改进。Song 等[33]提出了一种融合评分偏好和聚类的Slope one 推荐算法。国内,向小东等[34]也将Slope one 算法应用在推荐系统中,用户—项目矩阵往往是稀疏的,通过改进Slope one 算法计算预测值时利用用户和项目的综合相似度过滤干扰项。对于算法存在的不足,研究人员对用户相似度和项目相似度进行改进[35-38],通过用户特征属性和用户评分构建混合相似度提高推荐质量。Thakkar等[39]提出了一种结合推荐方法预测的方法:通过使用多元线性回归将常用的推荐方法进行结合,以减少预测误差。稀疏场景下经典的相似度算法优缺点对比如表3所示。
表3 基于数据稀疏的相似度改进Table 3 Similarity improvement based on data sparsity
上述算法能降低绝对平均误差,推荐效果相较其他算法而言有较大的提升,但是在公用的标准数据集上进行实证,在面对其他多样性的推荐和较新的数据时并不一定适用。
用户的兴趣偏好往往是不断变化的[40-43],随着时间的推移,可能会导致推荐结果偏离用户的需求,在建立用户动态偏好模型时[44-46],时间动态性是重要问题。
王道平等[47]针对传统协同过滤算法中存在的相似度分辨性低和未考虑用户兴趣漂移的问题,提出了一种融合时间因素和灰色关联分析的推荐模型,以提高实验精度,在相似度公式中引入时间权重函数,公式为:
王道平等[47]提出的混合相似度有效降低了实验的绝对平均误差(MAE),明显提高了实验精度,但算法模型较为复杂,效率不高。
陈海涛等[48]根据用户对项目的评分时间来考察用户兴趣的变化,在相似度计算中给予兴趣相似性权重,改进的用户相似性计算方法解决了不能动态衡量用户兴趣变化的问题,用户兴趣的计算公式为:
用户在某些类别中具有相同偏好,但在其他类别中偏好完全不同,所以在推荐过程中还需要考虑项目[51-52]。因为某些项目类别边界模糊,很难对其进行精准定位,在项目类别分类中,无法充分发挥项目属性在分类中的作用。程文娟等[53]提出了一种融合项目特征和用户特征的算法,在进行分类时考虑标签属性,进一步挖掘用户偏好信息。Chen 等[54]认为利用项目等辅助信息可以提高推荐精度,通过建立用户-项目-权重矩阵来进行推荐,给予用户特别喜欢的项目一定的权重,可以用来向用户解释为什么推荐某些项目,相较于推荐系统中的KNN模型,此方法有较好的覆盖率,可以实时进行预测。标签具有同时反映项目特征和用户兴趣的特点,用户Chen 等[55]从用户行为和标签语义两个方面计算标签相似度,并通过标签扩展提高推荐精度,在计算项目相似度时,给予标签和项目不同的权重构成混合相似度,以增加用户标注和喜欢的项目的权重。
通过γ进行权重调整,simt为基于标签的相似度,simr为基于评分的项目相似度。
关联规则在发现用户兴趣偏好的文献中有较多应用[56],可以发掘更多的属性特点,可以通过与社交关系相结合[57],快速寻找目标用户的近邻用户,挖掘潜在偏好。胡文江等[58]在社交网络的改进中引入关联规则,通过关联规则寻找目标用户的好友用户,建立用户的关系矩阵,改进用户标签相似度,对关系矩阵中标签相似度较大的用户,增加推荐权重。纪文璐等[59]归纳总结了基于关联规则的推荐算法,关联规则一定程度上可以发现数据潜在关系以及用户的潜在偏好,在数据稀疏和冷启动问题中具有较好的表现。针对用户兴趣偏移和偏好改进的相似度优缺点对比如表4所示。
表4 基于用户兴趣偏移和偏好的相似度改进Table 4 Similarity improvement based on user interest offset and preference
许多学者对相似度算法的改进提高了推荐精度,有些学者解决了传统的相似度计算方法往往需要用户之间具有共同评分项目的问题,但其相关研究在未来发展中仍旧面临诸多挑战,值得进一步深入研究。
(1)通过构建混合相似度来寻找用户的近邻用户集合可以很好的提升推荐效果,但是混合相似度寻找近邻集合的过程往往需要耗费更多的时间,时间效率不足,复杂度相较于传统方法更高,从推荐效率的角度出发,重点关注在提升推荐质量的同时提升推荐系效率。混合相似度的权重设置多为人工设置,如何摆脱手动调整,用机器自动调整权重应该成为重点关注方向。
(2)考虑到传统相似度受共同评分项目的影响,可将其他领域如环境领域、物理领域、信号理论中衡量相似程度的方法引入到推荐系统中,尝试创造新的相似度计算方法,解决传统相似度应用的局限。
(3)协同过滤中评分矩阵往往是稀疏的,用户对项目的偏好信息较少,将协同过滤与目标用户的位置信息相结合,得到用户兴趣点的信息,更准确定位用户的偏好将是未来的重要研究方向。
(4)目前多数研究都是在公开数据集上验证的,众多学者选择电影评分数据集来验证算法的精度及可行性,但是实际应用场景不能局限于电影领域,从算法的可扩展性方向出发,探究新的算法在其他平台,如购物、音乐、短视频等领域的推荐效果,扩展算法的使用范围。
未来推荐系统仍是研究的热点,数据稀疏、冷启动等问题严重影响了推荐质量,相似度作为推荐的核心环节,一直是众多学者关注的重点研究方向。学者们对相似度的改进提出了自己的见解,可以很好地解决推荐质量低的问题。本文从数据稀疏、冷启动等方向对相关学者的研究进行了全面的综述,总结了以往提出的改进算法存在的不足,并对未来可能的研究方向进行了展望,为了得到更有效的结论,需要在未来可能的研究方向上进行更深入的研究和分析。