赞
踩
目前协同过滤是应用最广泛、最成功的个性化推荐技术,其中基于近邻的协同过滤是重要的一类。他的基本思想是用一种相似度度量方法找到最近邻居集合(目标用户的最相似用户集合或者项目的最相似项目集合),最后通过对最近邻居集合的评分进行加权平均求和产生推荐集。
相似度计算的准确性直接影响推荐质量,传统的相似度度量方法利用两个用户对相同项目的共同评分来计算用户之间的相似度;项目之间的相似度通过对项目的共同评分用户的评分计算得到。然而在数据极大稀疏的时候无法保证足够的共同评分数据,传统的相似度计算方法的推荐效果不佳。
所以使用协同过滤,其关键在于最近邻居集合的选择,推荐系统的性能直接依赖于目标用户/项目邻居的选择,依赖于用户/项目之间相似度的度量,从而改进相似度计算方法,缓解数据稀疏性问题、提高推荐质量。协同过滤中常用的相似度度量方法包括余弦相似度、调整余弦相似度、Pearson相关系数和、Jaccard相似度等。
s
i
m
c
o
s
(
u
,
v
)
=
∑
i
∈
I
u
,
v
r
u
,
i
r
v
,
i
∑
i
∈
I
u
,
v
r
u
,
i
2
∑
i
∈
I
u
,
v
r
v
,
i
2
sim_{cos}(u,v)=\frac{\sum_{i \in I_{u,v}} r_{u,i}r_{v,i}} {\sqrt {\sum_{i \in I_{u,v}} r_{u,i}^2} \sqrt {\sum_{i \in I_{u,v}} r_{v,i}^2}}
simcos(u,v)=∑i∈Iu,vru,i2
∑i∈Iu,vrv,i2
∑i∈Iu,vru,irv,i
其中
I
u
,
v
I_{u,v}
Iu,v为用户
u
u
u和用户
v
v
v的共同评分项目集;
r
u
,
i
,
r
v
,
i
r_{u,i},r_{v,i}
ru,i,rv,i分别表示用户
u
u
u和用户
v
v
v对项目
i
i
i的评分。
余弦相似度使用两个向量的夹角余弦值度量相似度,两个向量的夹角越小,他们的夹角余弦值越大,余弦相似度越高。这种方式对于评分数据不敏感,它过分关注向量之间的夹角而忽略向量的长度,并且过于依赖两个用户的共同评分。
s
i
m
a
c
o
s
(
u
,
v
)
=
∑
i
,
j
∈
I
u
,
v
(
r
u
,
i
−
r
u
‾
)
(
r
v
,
i
−
r
v
‾
)
∑
i
∈
I
u
(
r
u
,
i
−
r
u
‾
)
2
∑
i
∈
I
v
(
r
v
,
i
−
r
v
‾
)
2
sim_{acos}(u,v)=\frac{\sum_{i,j \in I_{u,v}} (r_{u,i}- \overline{r_u})(r_{v,i}- \overline{r_v})} {\sqrt {\sum_{i \in I_{u}} (r_{u,i}- \overline{r_u})^2} \sqrt {\sum_{i \in I_{v}} (r_{v,i}- \overline{r_v})^2}}
simacos(u,v)=∑i∈Iu(ru,i−ru)2
∑i∈Iv(rv,i−rv)2
∑i,j∈Iu,v(ru,i−ru)(rv,i−rv)
其中
r
u
‾
\overline{r_u}
ru为用户
u
u
u的平均评分,
r
v
‾
\overline{r_v}
rv为用户
v
v
v的平均评分.
调整余弦相似度通过减去平均值来提升对评分数值的敏感程度,但是没有办法辨别正负相关性。例如 r u = ( 4 , 5 ) , r v = ( 5 , 4 ) , s i m a c o s ( u , v ) = − 1 r_u=(4,5),r_v=(5,4),sim_{acos}(u,v)=-1 ru=(4,5),rv=(5,4),simacos(u,v)=−1,尽管两个用户在逻辑上相似,计算结果却展现出了不相符的结果。
s i m P e a r ( u , v ) = ∑ i , j ∈ I u , v ( r u , i − r u ‾ ) ( r v , i − r v ‾ ) ∑ i , j ∈ I u , v ( r u , i − r u ‾ ) 2 ∑ i , j ∈ I u , v ( r v , j − r v ‾ ) 2 sim_{Pear}(u,v)=\frac{\sum_{i,j \in I_{u,v}} (r_{u,i}- \overline{r_u})(r_{v,i}- \overline{r_v})} {\sqrt {\sum_{i,j \in I_{u,v}} (r_{u,i}- \overline{r_u})^2} \sqrt {\sum_{i,j \in I_{u,v}} (r_{v,j}- \overline{r_v})^2}} simPear(u,v)=∑i,j∈Iu,v(ru,i−ru)2 ∑i,j∈Iu,v(rv,j−rv)2 ∑i,j∈Iu,v(ru,i−ru)(rv,i−rv)
Pearson相关系数是衡量两个数据集合之间的线性关系。该系数考虑到了用户评分的偏差,却忽略了用户共同评分的项目数,不能完美的度量相似度。
s
i
m
J
a
c
(
u
,
v
)
=
∣
I
u
∩
I
v
I
u
∪
I
v
∣
sim_{Jac}(u,v)= |\frac {I_u \cap I_v}{I_u \cup I_v}|
simJac(u,v)=∣Iu∪IvIu∩Iv∣
其中
I
u
I_u
Iu为用户
u
u
u评分的项目,
I
v
I_v
Iv为用户
v
v
v评分的项目.
Jaccard相似度仅考虑了两个用户的共同评分数,未考虑绝对评分,从而影响用户相似度的准确性。
巴氏系数是对两个统计样本的重叠的近似计算,可以用来对两组样本的相关性进行测量。统计学中巴氏系数用于测量两种离散概率分布的可离性,测量两个概率分布之间的相似度。
在连续域,两个密度分布p_1(x)和p_2(x)之间的相似度用巴氏系数定义如下
B
C
(
p
1
,
p
2
)
=
∫
p
1
(
x
)
p
2
(
x
)
d
x
BC(p_1,p_2) = \int \sqrt{p_1(x)p_2(x)}dx
BC(p1,p2)=∫p1(x)p2(x)
dx
在离散域上,定义如下
B
C
(
p
1
,
p
2
)
=
∑
x
∈
X
p
1
(
x
)
p
2
(
x
)
BC(p_1,p_2) = \sum_{x \in X} \sqrt{p_1(x)p_2(x)}
BC(p1,p2)=x∈X∑p1(x)p2(x)
其中密度
p
1
(
x
)
p_1(x)
p1(x)和
p
2
(
x
)
p_2(x)
p2(x)表示已知的评分数据。
计算用户
u
u
u和
v
v
v之间的
B
C
BC
BC相似度,使用两个用户的评分类别
p
u
h
p_uh
puh和
p
v
h
p_vh
pvh来评估其离散密度
B
C
(
u
,
v
)
=
B
C
(
p
u
^
,
p
v
^
)
=
∑
h
=
1
m
(
p
u
h
^
)
(
p
v
h
^
)
BC(u,v)=BC(\hat{p_u}, \hat{p_v})=\sum_{h=1}^m \sqrt{(\hat{p_{uh}})(\hat{p_{vh}})}
BC(u,v)=BC(pu^,pv^)=h=1∑m(puh^)(pvh^)
其中,
m
m
m为评分类别总数,
p
v
h
^
=
#
h
#
u
\hat{p_{vh}}=\frac{\#h}{\#u}
pvh^=#u#h,其中
#
u
\#u
#u为对用户
u
u
u评分的项目总量,
#
h
\#h
#h为用户
u
u
u评分为
h
h
h的项目总量,
∑
h
=
1
m
p
u
h
^
=
∑
h
=
1
m
p
v
h
^
=
1
\sum_{h=1}^m \hat{p_{uh}}=\sum_{h=1}^m \hat{p_{vh}}=1
∑h=1mpuh^=∑h=1mpvh^=1
例如,用户
u
u
u和用户
v
v
v的评分向量
r
u
=
(
1
,
0
,
2
,
0
,
1
,
0
,
2
,
0
,
3
,
0
)
,
r
v
=
(
0
,
1
,
0
,
1
,
0
,
2
,
0
,
2
,
0
,
3
)
r_u=(1,0,2,0,1,0,2,0,3,0),r_v=(0,1,0,1,0,2,0,2,0,3)
ru=(1,0,2,0,1,0,2,0,3,0),rv=(0,1,0,1,0,2,0,2,0,3),则:
B
C
(
u
,
v
)
=
∑
h
=
1
5
p
u
h
^
p
v
h
^
=
2
5
×
2
5
+
2
5
×
2
5
+
1
5
×
1
5
+
0
+
0
=
1
BC(u,v)=\sum_{h=1}^5 \sqrt{\hat{p_{uh}} \hat{p_{vh}}} = \sqrt{ \frac{2}{5} \times \frac{2}{5}} + \sqrt{ \frac{2}{5} \times \frac{2}{5}} + \sqrt{ \frac{1}{5} \times \frac{1}{5}} + 0 + 0 = 1
BC(u,v)=h=1∑5puh^pvh^
=52×52
+52×52
+51×51
+0+0=1
巴氏系数在没有共同评分的情况下也可以计算用户 u u u和用户 v v v之间的相似度,如果两个用户在全局角度上是相似的,则 B C ( u , v ) BC(u,v) BC(u,v)可以提高用户 u u u和 v v v评分之间的局部相似性;如果两个用户完全不相似,则 B C ( u , v ) BC(u,v) BC(u,v)降低两个用户评分之间局部相似度的重要性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。