5
10
15
20
25
30
35
40
中国科技论文在线
http://www.paper.edu.cn
基于用户的特征和用户评分相结合的协同
过滤推荐算法
潘超,郭莉**
(北京邮电大学通信工程学院)
摘要:当前协同过滤是在实际应用中的最为广泛的推荐系统,特别是在购物网站中。然而,
传统的协同过滤算法面临着一些缺陷,比如:冷启动问题,用户对物品评分数据量少导用户
评分矩阵出现稀疏矩阵的问题,稀疏矩阵会导致致推荐不准确的问题等,这些问题会影响推
荐系统给用户精确推荐合适的物品精确度。针对冷启动和稀疏矩阵的问题,本文提出了一种
新的推荐算法:利用用户自身的特征信息提取出用户特征矩阵和用户物品评分矩阵计算出用
户之间的相似度,然后找到最相似的 KNN(最邻近的 K 个用户),最后通过相似用户对物
品的评分得到用户自己对自己以前没有评分物品的评分值。从而解决了稀疏矩阵和冷启动的
问题。实验表明本文这种算法能够解决冷启动和稀疏矩阵的问题,从而提高了推荐准确度。
关键词:推荐算法; 协同过滤;用户特征;用户评分数据
中图分类号: TP312
Combining collaborative filtering recommendation
algorithm based on user characteristics and user ratings
(Communication Engineering, Beijing University of Posts and Telecommunications)
PAN Chao , Guoli
Abstract: Collaborative filtering is currently in the practical application of the most widely
recommendation system, especially in shopping site. However, the traditional collaborative
filtering algorithm faces some shortcomings, such as: cold start problem, the problem appears
sparse matrix user guide for items less user rating score data matrix, sparse matrix will result in
inaccurate recommend cause problems, these problems will precise impact of the recommendation
system to users recommend appropriate items accuracy. For cold start and sparse matrix problems,
this paper proposes a new recommendation algorithm: the use of the user's own user characteristic
feature information extracted from the matrix and user objects scoring matrix to calculate the
similarity between users, and then find the most similar KNN (Closest K users), and finally get
your own score on their own items not previously scores of articles ratings by similar users. Thus
solving the sparse matrix and cold start problems. Experiments show that this algorithm can solve
the problems of cold start and sparse matrix, thereby improving the accuracy of the
recommendation.
Key words: Recommendation algorithm; Collaborative filtering; User features;User ratings data
0 引言
互联网的发展为人们带来了大量的信息,随之而来的大量的信息是用户很难快速的准确
的找到自己满意的信息,不能快速有效的从大量的信息中找到我们所需要的信息。个性化推
荐系统能够帮助我们从大量的信息中找到我们所需要的、感兴趣的信息。推荐系统的研究成
为了一个热门的研究领域。
就目前来看协同过滤(CF)[1]是一种在实际中应用的最广泛并且最成功的推荐系统算法,
一些大型的电子商务网站都使用的是协同过滤的一种或几种协同过滤结合的推荐算法。协同
作者简介:潘超(1990-02-02),男,硕士,推荐系统
通信联系人:郭莉,女,教授,嵌入式,软件无线电. E-mail: guoli@bupt.edu.cn
- 1 -
45
50
55
60
65
中国科技论文在线
http://www.paper.edu.cn
过滤算法主要包括两种:基于物品的协同过滤算法和基于用户的协同过滤算法。这两个算法
都会面临一个共同的问题,稀疏矩阵的问题,即有大量的用户或商品没有评分或者被评分。
由于在实际应用中用的最多的是基于用户的协同过滤算法,所以本文中我们主要研究基于用
户的 CF 算法。
协同过滤算法主要是基于用户对一些物品的偏爱的数据为用户找到他们感兴趣的物品。
通常这些数据既可以直接询问用户的意见也可以通过分析用户的日志来获得。然而,在实际
中,通过这两种方式获得的数据不是那么的理想,大多数用户都不会去对所有的物品进行评
分,被评分的物品所占的比例是很小的,这就导致了用户评分矩阵大部分值都是空的。上面
这种情况就是协同过滤所面临的一个主要问题,即系数矩阵问题。这会影响推荐系统的准确
性。
传统的 CF 算法有一个不可避免的问题,稀疏矩阵的问题。由于在实际应用中被用户评
分的物品是很少的。只有一小部分物品被用户评分大部分的物品没有被用户评分,所以会出
现稀疏矩阵的问题,稀疏矩阵严重降低了推荐结果的准确性。为了提高基于用户的 CF 算法
性能,前人已经做过了许多研究。但很多方法的结果不是那么令人满意。一些研究者提出了
奇异值分解[2]的方式去提高推荐系统的准确性,这种方式的确可以提高准确性,但是消耗
了过多的系统资源并且在降维的时候失去了用户信息。此外,通过 SVD 方式的推荐系统没
法解释实际意义。有的利用反向传播神经网络方法,它在一定程度上减小了稀疏矩阵的影响
但增加了找到邻居用户的时间。对于稀疏矩阵的问题,本文提出了一种改进的协同过滤算法。
本文的算法充分利用的用户自身的信息,将用户自身信息提取出用户特征矩阵并结合用户的
评分矩阵以便找到某个用户的相似用户,然后通过用户的相似用户对物品的评分值来预测用
户对其他物品的评分值。本文的算法解决了冷启动的问题和稀疏矩阵的问题,最重要的是提
高了推荐精度。并且不会消耗过多的系统资源也没有丢失用户自身信息,因为本文把用户自
身信息考虑进来了。
本文结构如下:第一部分引言。第二部分我们回顾下传统的推荐算法,因为我们的算法
在他们基础上设计的。第三部分我们自己的算法介绍及实现。第四部分实验及结果分析。
70
1 相关工作
1.1 协同过滤推荐算法中常用的计算相似度的方法
推荐算法的重要的一步是计算出用户或物品的相似度,在推荐系统中最常用的计算相似
度的方法有:
①余弦相似度[3]:这种方式认为用户评价矩阵的每一行是一个向量。两个用户的相似
75
度就是两个向量的余弦:
sim(x,y) = cos(x,y) =
(1)
②皮尔逊相关系数[3]:
- 2 -
12211niiinniiiixyxy
中国科技论文在线
http://www.paper.edu.cn
sim(x,y) =
(2)
80
是用户 x 对物品 c 的评分, 表示同时被用户 x 和用户 y 品分的物品集合。 和 是
用户 x 和 y 评分的平均值,两个相似度计算方法都是制约大两个向量就越相似。
85
90
1.2 基于内容的推荐
基于内容的协同过滤推荐算法[4]的主要思想是假设用户倾向于喜欢跟用户以前喜欢的
物品相似的物品。物品之间的相似度可以通过物品特征矩阵来计算获得,物品特征矩阵可以
总物品特征中抽象出来。例如:电影的年份,流派和时间、每个物品都能够表示成一个特征
向量。通过公式 1 余弦公式计算相似度后,预测评分的值即 PCu,i 可以通过下列公式计算得
到:
(3)
其中 Ru,j 是用户对物品 j 的评分,Tu 是用户 u 评价过的物品的集合。
与传统的基于用户的 CF 不同,CR 没有稀疏矩阵的问题,这是因为一个物品只有有某
种特征和没有某种特征两种状况。所以计算物品之间的相似度是比较准确的。但是,CR 的
准确度总体上依赖于模型的质量,并且忽略了人的作用。最重要的一个缺点是 CR 推荐的物
品缺少多样性,因为它只推荐用户之前喜欢过的物品。一些冷门长尾物品可能永远也得不到
推荐,因为之前没有用户喜欢过这种物品。但是这会在下面的基于用户的推荐算法中得到解
决。
95
1.3 基于用户的协同过滤
基于用户的协同过滤[5]主要思想是将用户按他们的喜好进行分类。即通过用户的物品的
评分数据对用户之间计算他们的相似度,进而将用户分类。根据所有的用户的评分历史数据
能够产生一个巨大的用户物品评分矩阵[6],这是这个算法主要的的输入数据。例如:用户 u
和每个其他用户的相关度通常通过前面的皮尔逊或余弦公式计算。k 个最相关的 u 的邻居用
户集合能够通过选取相似度最大的 k 个用户。这儿的 k 代表了 KNN 中元素的个数并且 k 的
值会影响到协同过滤的性能。最后,用户 u 对物品 i 的预测值可以通过下列公式计算:
100
(4)
105
Ru 为用户 u 的评分品均值,Rv 为用户 v 的评分平均值,KNN 为用户 u 的最相似的 k 个用
户集合。Rv,i 为用户 v 对物品 i 的评分,sim(u,v)为用户 u 和 v 的相似度。尽管基于用户的
协同过滤的推荐系统被广泛应用,但它也有一些缺点:①新加入的物品不会被推荐,因为他
没有被评价过,这称之为冷启动的问题。②由于实际中用户评价的过物品只有很少的一部分,
所以会导致用户物品评分矩阵的稀疏问题[7]。
- 3 -
x,,22x,,(R)*(R)(R)*(R)xyxycxycycIcxycycIcIRRRRx,RcxyIxRyR,j,sim(i,j)*R(i,j)uuujTuikTPCsimv,i,sim(u,v)*(R)(u,v)vKNNuiuvKNNRvPRsim
中国科技论文在线
2 本文提出的推荐算法
110
2.1 本文算法分析
http://www.paper.edu.cn
从以上的分析可以看出,传统的推荐算法都有各自的缺点,当然也有优点。比如基于用
户的推荐算法会有冷启动[8]和稀疏矩阵[9]的问题。为了解决这些问题,最主要的方式就是
填充用户物品评价矩阵,最简单的方式就是用平均值来填充。虽然这种方式在一定程度上解
决稀疏矩阵问题,提高了基于用户的 CF 推荐算法的性能,但是忽略了很重要的一点,用户
不可能永远只评一种分数,所以这种方式是不可取的。一种更合适的方法是根据现有的用户
物品的数据来预测那些没有评分的评分值。
本文提出的推荐算法:本文提出的推荐算法主要解决的是冷启动和稀疏矩阵的问题。本
文算法同时利用了用户对物品评分的数据和用户自身的信息数据。首先将用户的特征信息提
取出来,本文提取出了用户的年龄,性别,职业和地区信息。提取出的用户特征信息构成一
个特征矩阵。然后提取出用户物品评分矩阵。由于用户自身的特征信息也可以反映一个人的
爱好信息,比如:程序员可能对一些程序相关的书籍感兴趣,音乐家可能对一些音乐相关的
书籍感兴趣等。所以本文算法将用户自身信息和直接体现用户兴趣的用户对物品评分的信息
同时考虑进来。先通过用户自身信息计算出各个用户之间的相关度,然后再利用用户评分矩
115
120
125
阵信息来计算用户相关度,最后取两者的线性和,得到最终的相关度。然后通过计算与其他
用户之间的相关度并且进行排序,找到相似度最高的的 K 个相似用户并且得到最后的预测
评分值。
本文算法同时考虑到了用户自身信息和用户对物品评分信息,这可以避免冷启动的问题
和稀疏矩阵的问题。因为每个用户都会有年龄,性别,职业等信息,本文算法认为用户信息
越相似的的用户他们的喜好就越相似,对物品的评分也会相似。因为往往年龄相近性别相同,
或职业相同的用户往往会有相同的爱好。如:音乐家肯定倾向于买音乐方面的书籍,程序员
倾向买编程放面的书籍,所以通过用户自身信息也能给用户推荐相关的物品。本文算法采用
了两部分数据不但解决的冷启动的问题和稀疏矩阵的问题,而且提高的推荐效果。具体结果
见实验部分。
本文提出的算法利用公式 5 计算得到任意两个用户之间的相似度,找到某个用户 k[1]
个邻居用户,这个公式同时考虑到了用户对物品的直接喜好(用户对物品的评分),同时也将用
户之间的联系考虑进来了,因为自身信息相似的用户之间的兴趣爱好很有可能也相似,所以
可以得到以下的计算相似度的公式:
similarity(u,v) = simu(u,v)*λ + simi(u,v)*( 1 -λ );(5)
130
135
140
其中 simu(u,v)是用户 u 和用户 v 通过用户特征矩阵计算出来的相似度,simi(u,v)是用户
u 和用户 v 通过用户物品评分矩阵计算出来的相似度,λ 是一个系数,首先计算出最合适的
λ 。在实际中可以选择最佳的λ ,经过反复测试本文选择了最优的λ =0.7,实验结果如图 1。
145
图 1 中横坐标表示λ 的值,纵坐标表示预测值和实际值的差值。
- 4 -
中国科技论文在线
http://www.paper.edu.cn
图 1.不同λ 值相同邻居用户的结果
通过公式 5 计算出某个用户 m 与所有其他用户的相似度后,从中选出相似度最大的 k 个
150
用户。通过这些用户利用公式 6 计算用户 m 对某个物品的预测评分值。
(6)
similarity(u,v)是用户 u 和用户 v 的相似度值, 是用户 v 给物品 i 的评分值,
是用户 v 的平均评分值。 [1]是 u 的邻居用户集,v 属于 u 的邻居用户集。 是最终的
预测值。
155
2.2 本文算法实现步骤
本文算法描述:首先利用用户的自身特征信息提取出对应的特征矩阵以及利用用户评分
信息提取出用户评分矩阵,然后利用本文提出的公式 5 计算各个用户之间的相关度,然后找
到用户的最相关的 k 个用户,通过公式 6 计算出用户没有评分的物品的评分值,最后利用本
文的评价方法评价预测结果,算法流程图如图 2:
- 5 -
v,i,(u,v)*(R) + (u,v)vKNNuiuvKNNsimilaritysimilarityRvPRv,iRRvKNN,uiP
中国科技论文在线
http://www.paper.edu.cn
160
165
图 2.本文算法流程图
3 实验及结果分析
3.1 实验数据
本文所采用数据是 movie-lens 100k 数据。这个数据集包括了 943 位用户对 1682 部电影
的 100000 条评价,评分值为 1-5 之间。每个用户至少评价了 20 部电影。还有一些用户的信
息,包括:用户编号,性别,职业和邮政编码。它的原始用户物品矩阵的稀疏度是 93.7%。
为了验证本文算法提出的有效性。我们对用户的信息抽象出来了用户特征向量。
3.2 评价方式
170
本文重点在于预测那些没有评分的评分值,所以我们使用的评价方法是平均绝对误差
(MAE)[10]来作为评价标准。MAE 的计算方法就是预测值与实际值的误差。如果 MAE
越小就代表预测越准确,推荐算法性能越好。MAE 公式:
(6)
- 6 -
计算用户之间的相关度用户特征矩阵用户评分矩阵提取用户评分矩阵提取用户特征矩阵预测用户的评分值评价结果输入1niiiprMAEn
中国科技论文在线
http://www.paper.edu.cn
其中集合{p1,p2,p3,…,pn}是预测值,集合{r1,r2,r3,….,rn}代表实际值,n 是评价值的数量。
3.3 结果分析
175
180
为了证明本文提出算法的准确性,将原始数据没有经过填充稀疏矩阵的 CF 与本文提出
的算法预测没有被用户评分的值,并且填充用户评分矩阵,解决了稀疏矩阵的问题以及冷启
动的问题。图 3 中横坐标表示选取相似用户的个数,纵坐标表示预测值和实际值的误差。从
图 3 可以看出基于用户的推荐算法的推荐结果的精度在相似用户数低于 100 的时候没有本文
提出的推荐算法的精度高。相似用户数如果增加量者的推荐精度的差距逐渐缩小,这是由于
相似用户的数目越多推荐结果越准确,但是如果相似用户选得越多计算的复杂度就会越高,
所以相似用户数不能选得太多。所以本文提出的推荐算法推荐效果要比基于用户的推荐算法
更好,推荐结果更加准确。本文的预测用户平分值比较接近用户实际的评分。
185
图 3. λ =0.7,基于用户和本文提出方法的比较结果
4 结论
190
本文中,我们提出一个新的 CF 算法,本文提出的算法可以达到更好的推荐效果。本
文算法的主要优点,由于本文的算法利用的用户的特征信息,所以不会出现冷启动问题。最
重要的是本文通过结合用户算法解决了稀疏矩阵的问题。
本文的算法虽然比传统的 CF 算法推荐效果要好,但是本文的算法与传统的相比只是多
考虑了用户的特征。在将来我们可以再将物品的特征考虑进来,希望能够达到更好的推荐效
果。
195
[参考文献] (References)
[1] Jiaqi Fan, Weimin Pan.An Improved Collaborative Filtering Algorithm Combining Content-based Algorithm
and User Activity.[2014-7-3]
[2] Faqing WU,Liang HE,Weiwei XIA,Lei REN A Collaborative Filtering Algorithm Based on Users'Partial
Similarity[OL].[2008-6-8].
[3] Suhuan Sun,Gongsheng Kong,Changwei Zhao Collaborative Filtering methods based on user relevance degree
and weights of recommend-items[OL].[2011-7-3].
[4] 安悦,李兵,杨瑞泰,胡沥丹.基于内容的热门微话题个性化推荐研究[OL].[2014-2-3].
200
- 7 -
中国科技论文在线
http://www.paper.edu.cn
[5] Yongli Cui,Shubin Song,Liang He,Guorong Li.A Collaborative Filtering Algorithm Based on User Activity
Level[OL].[2012-7-8]
[6] Pu WANG,HongWu. YE A Personalized Recommendation Algorithm Combining Slope One Scheme and User
Based Collaborative Filtering[OL].[2009-9-6]
[7] Zilei SUN,Nianlong LUO.A
new
data-distribution[OL].[2010-10-11].
[8] Jin-gang Kim,Eun-seok Lee.Intelligent Information Recommend System on the Internet[OL].[2005-5-7]
[9] YiBo Huang,Zhejiang.An
Prediction[OL].[2009-9-12]
[10] Hideyuki Mase,Hayato Ohwada.A Collaborative Filtering
Technology[OL].[2012-12-8].
Incorporating Hybrid-Clustering
Item Based Collaborative
algorithm
combining
Item Clustering
user-based
collaborative
filtering
Filtering Using
205
210
215
- 8 -