再看《推荐系统实践》这本书的时候,在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
案例二:我们有如下购买行为记录,分别计算矩阵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 无矩阵转置等关系,维度各不相同。