usercf 与 itemcf的原理分析

时间:2022-10-23 20:36:39


再看《推荐系统实践》这本书的时候,在usercf与itemcf的推荐原理上,不是很清晰,特此做了一下总结:


用户:A,B,C,D

商品:a,b,c,d,e


案例一:我们有如下购买行为记录,分别计算矩阵usercf 与 itemcf相似度矩阵

A:a,b,d

B:a,c

C:b,e

D:c,d,e


分别计算usercf 与 itemcf的相似度矩阵:


1,计算usercf:

第一步:建立倒排表:


a:A,B

b:A,C

c:B,D

d:A,D

e:C,D


第二步:根据,总体的倒排关系(注意:这里不是在倒排表上一行一行计算矩阵相似),建立用户的相似度矩阵:


从倒排表整体统计用户之间的相似次数:

A:(B,C,D),B-1次,C-1次,D-1次

B:(A,D),A-1次,D-1次

C:(A,D),A-1次,D-1次

D:(A,B,C)A-1次,B-1次,C-1次

从而得到基于user的相似度矩阵为:


      A    B    C    D

A   0    1      1     1

B   1    0      0     1

C   1    0      0     1

D   1    1      1     0


2,计算itemcf:

第一步:根据最初矩阵计算,全量计算每个item(a,b,c,d,e)之间的相关性

A:a,b,d

B:a,c

C:b,e

D:c,d,e

得到:

a:(b,d,c),b-1次,d-1次,c-1次,

b:(a,d,e),a-1次,d-1次,e-1次

c:(a,d,e)a-1次,d-1次,e-1次

d:(a,b,c,e)a-1次,b-1次,c-1次,e-1次

e:(b,c,d)b-1次,c-1次,d-1次


itemcf的相似度矩阵为

      a    b    c    d    e

a   0    1     1    1    0

b   1    0      0   1    1

c   1    0      0   1    1

d   1    1      1   0    1

e   0    1      1   1    0

在这个样例中,大家发现在除去e以外,usercf 与 itemcf的矩阵是相同的。


案例二:我们有如下购买行为记录,分别计算矩阵usercf 与 itemcf相似度矩阵

A:a,b,d

B:b,c,e

C:c,d

D:b,c,d

E:a,d


1,计算usercf:

第一步:建立倒排表:


a:A,E

b:A,B,D

c:B,C,D

d:A,C,D,E

e:B


第二步:根据,总体的倒排关系(注意:这里不是在倒排表上一行一行计算矩阵相似),建立用户的相似度矩阵:


从倒排表整体统计用户之间的相似次数:

A:(E,B,D,C,D,E),B-1次,C-1次,D-2次,E-2次

B:(A,D,C,D),A-1次,C-1次,D-2次

C:(B,D,A,D,E),A-1次,B-1次,D-2次,E-1次

D:(A,B,B,C,A,C,E),A-2次,B-2次,C-2次,E-1次

E:(A,A,C,D),A-2次,C-1次,D-1次


从而得到基于user的相似度矩阵为:


      A    B    C    D    E

A   0    1      1     2    2

B   1    0      1     2    0

C   1    1      0     2    1

D   2    2      2     0    1

E   2    0      1     1    0


2,计算itemcf:

第一步:根据最初矩阵计算,全量计算每个item(a,b,c,d,e)之间的相关性:

A:a,b,d

B:b,c,e

C:c,d

D:b,c,d

E:a,d


得到:

a:(b,d,d),b-1次,d-2次

b:(a,d,c,e,c,d),a-1次,c-2次,d-1次,e-1次

c:(b,e,d,b,d),b-2次,d-2次,e-1次

d:(a,b,c,b,c,a),a-2次,b-2次,c-2次

e:(b,c)b-1次,c-1次


itemcf的相似度矩阵为

      a    b    c    d    e

a   0    1     0    2    0

b   1    0     2    1    1

c   0    2     0    2    1

d   2    2     2    0    0

e   0    1     1    0    0


与usercf矩阵相比较:

      A    B    C    D    E

A   0    1      1     2    2

B   1    0      1     2    0

C   1    1      0     2    1

D   2    2      2     0    1

E   2    0      1     1    0


结论:

1,usercf 比itemcf多了一次按照商品的倒排,来建立用户之间的关系

2,itemcf与usercf 无矩阵转置等关系,维度各不相同。