2. 计算智能与信号处理教育部重点实验室(安徽大学),安徽 合肥 230039
2. Key Lab. of Intelligent Computing & Signal Processing(Anhui Univ.), Ministry of Education, Hefei 230039, China
随着互联网的不断飞速发展,数据指数级的增长带来了信息过载等一系列问题,于是推荐系统由此诞生并得到飞速发展。如国外的亚马逊、ebay等,国内的京东、阿里巴巴等都在推荐系统上做出了各种尝试[1–2]。其广泛应用于电子商务、音乐、视频及新闻等各种领域。目前主要的推荐算法有基于协同过滤的推荐、基于关联规则的推荐、基于内容的推荐、基于图的推荐及混合推荐等。其中协同过滤算法是最经典且最成功的推荐算法之一[3–5],该算法主要分为基于用户的协同过滤算法和基于项目的协同过算法。基于用户的协同过滤算法的主要思想为参照与目标用户相似的其他用户,计算相似度并找出最近邻居,最后根据最近邻居的评分预测出目标用户对目标项目的评分;基于项目的协同过滤算法则是从项目角度出发,找出与其最相似的项目集合,最后预测评分[6–7]。传统的协同过滤算法的优点是无需考虑内容信息和一些复杂的概念,缺点是推荐精度不高,以及存在稀疏性、扩展性、冷启动等一些问题[8–9]。
针对推荐精度不高的问题,研究人员提出了很多改进方法。文献[10]提出一种基于时间段划分的协同过滤算法,传统的协同过滤算法认为用户的兴趣是静态的,没有考虑用户兴趣的转变,且用户有长时间的兴趣和短时间的兴趣。对此,本文引入了时间因子,将用户评分历史划分为几个周期,分析在这些周期中用户兴趣的分布,并量化用户兴趣,通过设置时间窗口发现用户最近的兴趣。
文献[11]提出一种不确定近邻的协同过滤推荐算法,该算法自适应地选择目标用户的最近邻居作为推荐群,提高了推荐质量。文献[12]提出一种基于时间上下文的协同过滤算法,考虑到用户的兴趣会发生改变,故加入时间上下文,在不需要额外信息的前提下,进一步缓解稀疏性。除此之外,二部图算法也得到了广泛的应用[13–14],且与协同过滤相结合提高推荐精度。文献[15]提出一种结合二部图投影与排序的协同过滤,该算法将用户和项目看成节点,用户对项目的评分则可用边权表示,利用二部图投影和随机游走对节点进行排序,最终形成推荐。
上述方法虽然在一定程度上提高了推荐质量,但还是具有不足的地方。比如,在相似度计算时只依赖共同评分项目,但当共同评分项目个数较少时,计算出来的相似度可信度会非常低。另外,在预测评分时也均只考虑了正相关最近邻居,忽略了负相关最近邻居对预测评分的价值,若两个用户之间的负相关程度较高,说明这两个用户的评分呈现较高的相反趋势,可从另一个角度对评分进行预测。
基于此,为进一步提高推荐精度,提出一种基于正相关和负相关最近邻居的协同过滤算法(PNCF)。在相似度计算时,通过用户之间变异系数的差异反映出用户评分特点的接近程度,从而对相似度计算结果进行修正,弥补了只依赖共同评分项目计算相似度带来的不足;在邻居选取时根据一定的选取规则分别选取正相关最近邻居和负相关最近邻居,并在评分预测的同时考虑这两类不同的最近邻居,将基于正相关最近邻居和负相关最近关邻居的预测评分进行加权,作为最终的预测评分。利用GroupLens提供的标准数据集MovieLens[16]进行算法验证,实验表明本文算法有效地提高了推荐的准确度和多样性。
1 传统的协同过滤算法 1.1 构建评分矩阵协同过滤算法所需要的输入数据
相似度的计算是协同过滤算法中非常重要的一部分,利用第1.1节中构建的用户–项目评分矩阵可计算用户之间的相似度,常用的计算相似度的方法有Pearson相关系数和修正的余弦相似度。Pearson相关系数[18]的公式为:
$sim(i,j) = \frac{{\displaystyle\sum\limits_{p \in {P_{ij}}} {({r_{ip}} - {\overline {r}_i} )({r_{jp}} - {\overline {r}_{j}} )} }}{{\sqrt {\displaystyle\sum\limits_{p \in {P_{ij}}} {{{({r_{ip}} - {\overline {r}_i} )}^2}} } \sqrt {\displaystyle\sum\limits_{p \in {P_{ij}}} {{{({r_{jp}} - {\overline {r}_j} )}^2}} } }}$ | (1) |
式中,
修正的余弦相似度[19]公式为:
$sim(i,j) = \frac{{\displaystyle\sum\limits_{p \in {P_{ij}}} {({r_{ip}} - {\overline {r}_i} )({r_{jp}} - {\overline {r}_j} )} }}{{\sqrt {\displaystyle\sum\limits_{p \in {P_i}} {{{({r_{ip}} - {\overline {r}_i} )}^2}} } \sqrt {\displaystyle\sum\limits_{p \in {P_j}} {{{({r_{jp}} - {\overline {r}_j} )}^2}} } }}$ | (2) |
式中,
计算出目标用户与其他用户的相似度后,按相似度值从大到小进行排序得到邻居集合
$pred(i,p) = {\overline {r}_i} + \frac{{\displaystyle\sum\limits_{j \in N} {sim(i,j) \cdot ({r_{jp}} - {\overline r}_j )} }}{{\displaystyle\sum\limits_{j \in N} {sim(i,j)} }}$ | (3) |
式中,
引入变异系数(coefficient of variation)对相似度的计算结果进行修正,变异系数用以衡量数据的离散程度,其值越大表明离散程度越大;反之,离散程度越小。
对于一个用户,通过对项目的评分计算变异系数的值。变异系数的公式[21]:
$C{V_i} = \frac{{\sqrt {\displaystyle\frac{1}{{\left| {{p_i}} \right|}}{{\displaystyle\sum\limits_{p \in {P_i}} {({r_{ip}} - {\overline {r}_i} )} }^2}} }}{{\overline r_i} }$ | (4) |
式中,
计算出所有用户的变异系数之后,对于任意两个用户计算相似度,可利用其变异系数的差值对相似度进行修正,差值越小表明这两个用户评分的离散程度越接近,由此引入平衡因子
$\lambda (i,j) = 1 - \left| {C{V_i} - C{V_j}} \right|$ | (5) |
式中,当用户
最后将平衡因子
$simCV(i,j) = \lambda (i,j) \cdot sim(i,j)$ | (6) |
式中,
改进后的用户相似度计算流程见图1。
![]() |
图1 用户相似度计算流程 Fig. 1 User similarity calculation flow chart |
2.2 邻居选取
传统的协同过滤算法在选取最近邻居时往往只考虑正相关最近邻居,即相似度为正的情况。由于Pearson相关系数和修正的余弦相似度取值为
算法1 基于正相关和负相关最近邻居的邻居选取算法。
输入:用户–项目评分矩阵
输出:正相关最近邻居列表
Step 1 根据用户–项目评分矩阵
Step 2 将Step 1中
Step 3 对于给定需要选取的正相关最近邻居个数
Step 4 输出
基于正相关和负相关最近邻居的邻居选取算法流程如图2所示。
![]() |
图2 基于正相关最近邻居和负相关最近邻居的邻居选取算法流程 Fig. 2 Positive correlation and negative correlation nearest neighbors selection flow chart |
2.3 预测评分
基于选取的正相关最近邻居和负相关最近邻居分别进行预测评分。最后,将基于正相关最近邻居和负相关最近邻居的预测评分进行加权,作为最终的预测评分。对于第2.2节得到的
对于
$pre{d_{{Pos}}}(i,p) = {\overline {r}_i} + \frac{{\displaystyle\sum\limits_{j \in Pos} {simCV(i,j) \cdot ({r_{jp}} - {\overline {r}_j} )} }}{{\displaystyle\sum\limits_{j \in Pos} {simCV(i,j)} }}$ | (7) |
式中,
对于负相关的最近邻居,由于其与目标用户的评分呈相反趋势,所以定义如下的预测评分:
$pre{d_{Neg}}(i,p) = {\overline {r}_i} - \frac{{\displaystyle\sum\limits_{j \in Neg} {simCV(i,j) \cdot ({r_{jp}} - {\overline {r}_j} )} }}{{\displaystyle\sum\limits_{j \in Neg} {simCV(i,j)} }}$ | (8) |
式中,
最后设置权重参数
$pred(i,p) = \alpha \cdot pre{d_{Pos}}(i,p) + (1 - \alpha ) \cdot pre{d_{Neg}}(i,p)$ | (9) |
式中,权重参数
对于
$\alpha = \frac{{\left| {Pos} \right|}}{{\left| {Pos} \right| + \left| {Neg} \right|}}$ | (10) |
式中,
评分预测流程如图3所示。
![]() |
图3 评分预测流程 Fig. 3 Ratings prediction flow chart |
3 实验及结果分析
通过实验比较本文基于正相关和负相关邻居的协同过滤算法(PNCF)、传统的基于用户的协同过滤算法(CF)、基于优化用户相似度的改进协同过滤推荐算法(ICFOS)[22]的推荐精度。并通过实验给出通常情况下阈值
实验采用的MovieLens 100 k数据集是GroupLens小组从MovieLens网站(http://movielens.org)不同时期收集并整理的评分数据集合,由943名用户对1 682部电影的100 000个评分构成,评分值大小为1~5,评分值越大表明用户对电影的喜爱程度越大,且每个用户至少有20个评分。
3.2 评价标准采用3种评价标准,分别为均方根误差(root mean squared error,RMSE)、平均绝对偏差(mean absolute error,MAE)[23]及多样性(diversification)[24]。MAE和RMSE都是利用预测评分与实际评分的偏差判断预测评分的准确性,其值越大,表明偏差越大,推荐精度越差;反之,表明推荐精度越好,预测越准确。多样性用以衡量用户推荐列表的多样化程度,其值越大,表示多样性越高。
${MAE} = \frac{{\displaystyle\sum\limits_{p \in {T_i}} {\left| {{R_{i,p}} - {P_{i,p}}} \right|} }}{{\left| {{T_i}} \right|}}$ | (11) |
${RMSE} = \sqrt {\frac{{\displaystyle\sum\limits_{p \in {T_i}} {{{({R_{i,p}} - {P_{i,p}})}^2}} }}{{\left| {{T_i}} \right|}}} $ | (12) |
多样性的定义公式:
${Diversification = }\frac{{\displaystyle2\sum\limits_{i \ne j} {(1 - \frac{{\left| {{L_i} \cap {L_j}} \right|}}{{\left| {{L_i}} \right|}})} }}{{n(n - 1)}}$ | (13) |
式中,
由于基于正相关和负相关最近邻居的改进协同过滤推荐算法在选取负相关最近邻居时需要设置阈值
![]() |
图4 基于不同阈值β的MAE实验结果 Fig. 4 MAE with different β |
由图4可以看出,当
比较本文基于正相关和负相关最近邻居的改进协同过滤算法(PNCF)、传统的基于用户的协同过滤算法(CF)、基于优化用户相似度的改进协同过滤推荐算法(ICFOS)[22]的
![]() |
图5 MAE对比结果 Fig. 5 Comparison results of MAE |
![]() |
图6 RMSE对比结果 Fig. 6 Comparison results of RMSE |
由图5可以看出,本文算法的
多样性值的对比结果如图7所示。由图7可以看出,当正相关最近邻居个数分别取10、20、50时,本文算法在所有给定的推荐长度
![]() |
图7 多样性对比结果 Fig. 7 Comparison of Diversification |
4 结 论
针对传统协同过滤算法推荐精度不高的问题,提出基于正相关和负相关最近邻居的协同过滤算法。算法对相似度的计算过程进行了修正,综合考虑正相关最近邻居和负相关最近邻居,基于选取的正相关最近邻居和负相关最近邻居分别进行预测评分,然后将两次结果进行加权计算,作为最终的预测评分。实验结果表明本文算法在有效提高推荐准确度的同时,使推荐更加多样化。但本文算法还有进一步改进的空间,由于正相关最近邻居及负相关最近邻居的选取需要相似度值介于
[1] |
Meng Xiangwu,Liu Shudong,Zhang Yujie,et al. Research on social recommender system[J]. Journal of Software, 2015, 26(6): 1356-1372. [孟祥武,刘树栋,张玉洁,等. 社会化推荐系统研究[J]. 软件学报, 2015, 26(6): 1356-1372.] |
[2] |
Zhang Jia,Lin Yaojin,Lin Menglei,et al. An effective collaborative filtering algorithm based on user preference clustering[J]. Applied Intelligence, 2016, 45(2): 230-240. DOI:10.1007/s10489-015-0756-9 |
[3] |
Wu Xiaokun,Cheng Bo,Chen Junliang. Collaborative filtering service recommendation based on a novel similarity computation method[J]. IEEE Transactions on Services Computing, 2017, 10(3): 352-365. DOI:10.1109/TSC.2015.2479228 |
[4] |
Meng Xiangwu,Hu Xun,Wang Licai,et al. Mobile recommender systems and their applications[J]. Journal of Software, 2013, 24(1): 91-108. [孟祥武,胡勋,王立才,等. 移动推荐系统及其应用[J]. 软件学报, 2013, 24(1): 91-108.] |
[5] |
Wei Jian,He Jianhua,Chen Kai,et al. Collaborative filtering and deep learning based recommendation system for cold start items[J]. Expert Systems with Applications, 2017, 69: 29-39. DOI:10.1016/j.eswa.2016.09.040 |
[6] |
Bok K,Lim J,Yang H,et al. Social group recommendation based on dynamic profiles and collaborative filtering[J]. Neurocomputing, 2016, 209(C): 3-13. |
[7] |
Li Hongtao,He Keqing,Wang Jian,et al. A friends recommendation algorithm based on formal concept analysis and random walk in social network[J]. Journal of Sichuan University(Engineering Science Edition), 2015, 47(6): 131-138. [李宏涛,何克清,王健,等. 基于概念格和随机游走的社交网朋友推荐算法[J]. 四川大学学报(工程科学版), 2015, 47(6): 131-138.] |
[8] |
Gasmi I,Seridi-Bouchelaghem H,Hocine L,et al. Collaborative filtering recommendation based on dynamic changes of user interest[J]. Intelligent Decision Technologies, 2015, 9(3): 271-281. DOI:10.3233/IDT-140221 |
[9] |
Su Jahwung,Chang Weiyi,Tseng V S. Effective social content-based collaborative filtering for music recommendation[J]. Intelligent Data Analysis, 2017, 21: S195-S216. DOI:10.3233/IDA-170878 |
[10] |
Zhang Yuchuan,Liu Yuzhao.A collaborative filtering algorithm based on time period partition[C]//Third International Symposium on Intelligent Information Technology and Security Informatics.New York:IEEE,2010:777–780.
|
[11] |
Huang Chuangguang,Yin Jian,Wang Jing,et al. Uncertain neighbors’collaborative filtering recommendation algorithm[J]. Chinese Journal of Computers, 2010, 33(8): 1369-1377. [黄创光,印鉴,汪静,等. 不确定近邻的协同过滤推荐算法[J]. 计算机学报, 2010, 33(8): 1369-1377.] |
[12] |
He Liang,Wu Faqing.A time-context-based collaborative filtering algorithm[C]//IEEE International Conference on Granular Computing.New York:IEEE,2009:209–213.
|
[13] |
Jiang Bo,Zhang Xiaoxiao,Pan Weifeng,et al.BIGSIR:A bipartite graph based service recommendation method[C]//Services.New York:IEEE,2013:363–369.
|
[14] |
Lien D T,Phuong N D.Collaborative filtering with a graph-based similarity measure[C]//International Conference on Computing,Management and Telecommunications.New York:IEEE,2014:251–256.
|
[15] |
Liu Qi,Chen Enhong. Collaborative filtering through combining bipartite graph projection and ranking[J]. Journal of Chinese Computer Systems, 2010, 31(5): 835-839. [刘淇,陈恩红. 结合二部图投影与排序的协同过滤[J]. 小型微型计算机系统, 2010, 31(5): 835-839.] |
[16] |
Wu Lei,Fang Qing,Jin Zhou. Improved personalized recommendation based on causal association rule and collaborative filtering[J]. International Journal of Distance Education Technologies, 2016, 14(3): 21-33. DOI:10.4018/IJDET |
[17] |
Patra B K,Launonen R,Ollikainen V,et al. A new similarity measure using Bhattacharyya coefficient for collaborative filtering in sparse data[J]. Knowledge-Based Systems, 2015, 82(C): 163-177. |
[18] |
Yang Chong,Yu Xiaohui,Liu Yang,et al. Collaborative filtering with weighted opinion aspects[J]. Neurocomputing, 2016, 210(C): 185-196. |
[19] |
Liu Qi,Chen Enhong,Xiong Hui,et al. Enhancing collaborative filtering by user interest expansion via personalized ranking[J]. IEEE Transactions on Systems Man & Cybernetics Part B Cybernetics A Publication of the IEEE Systems Man & Cybernetics Society, 2012, 42(1): 218-233. |
[20] |
Schafer J B,Dan F,Herlocker J,et al. Collaborative filtering recommender systems[J]. Acm Transactions on Information Systems, 2004, 22(1): 5-53. DOI:10.1145/963770 |
[21] |
Bedeian A G,Mossholder K W. On the use of the coefficient of variation as a measure of diversity[J]. Organizational Research Methods, 2000, 3(3): 285-297. DOI:10.1177/109442810033005 |
[22] |
Chen Hao,Li Zhongkun,Hu Wei. An improved collaborative recommendation algorithm based on optimized user similarity[J]. Journal of Supercomputing, 2016, 72(7): 2565-2578. DOI:10.1007/s11227-015-1518-5 |
[23] |
Xie Feng,Chen Zhen,Shang Jiaxing,et al.Item similarity learning methods for collaborative filtering recommender systems[C]//IEEE,International Conference on Advanced Information Networking and Applications.New York:IEEE,2015:896–903.
|
[24] |
Shang Mingsheng,Zhang Zike,Zhou Tao,et al. Collaborative filtering with diffusion-based similarity on tripartite graphs[J]. Physica A Statistical Mechanics & Its Applications, 2009, 389(6): 1259-1264. |