Summary of recommended methods(1)
1.Metrics
- RMSE
- MAE
- Coverage
- Diversity
- Recall
- Precision
1.1 RMSE(均根方误差)
RMSE=∣T∣∑u,i∈T(rui−r^ui)2
- u : 用户 u
- i : 物品 i
- rui : 用户 u 对 i 的评分
- r^ui : 算法预测的评分
1.2 MAE(平均绝对值误差)
MAE=∣T∣∑u,i∈T∣rui−r^ui∣
RMSE vs MAE
- RMSE : 增加的对预测物品评分不准的惩罚(平方项惩罚),系统更加苛刻
- MAE : 对于整数评分系统,对预测分数取整会降低MAE误差
1.3 Coverage(覆盖率:推荐物品占物品集合的比例)
描述推荐算法对物品长尾的发掘能力(推荐结果中尽可能覆盖多的物品且出现次数差不多=长尾发掘能力强)
Coverage=∣I∣∣⋃u∈UR(u)∣
- U : 用户的集合
- R(u) : 推荐给用户 u 长度为N的物品列表
- ∣I∣ : 物品总集合
1.3.1 信息熵(H),基尼系数(G)
H=−i=1∑np(i)log(p(i))
- p(i) : 物品 i 的流行度/所有物品的流行度之和
- 物品的流行度:对物品产生过行为的用户总数
G=n−11j=1∑n(2j−n−1)p(ij)
- ij : 根据物品流行度 p() 从小到大排序的物品列表中的 jth 个物品
1.3.2 马太效应
马太效应:强者更强,弱者更弱,在推荐问题中,会存在热门问题更热,长期霸占首页展示获得更多的曝光机会.
1.3.3 如何检测推荐算法是否存在马太效应
1.从原始的用户行为中计算出物品的流行度和基尼系数 G1
2.从推荐算法给出的推荐结果列表中计算出物品流行度的基尼系数 G2
3.如果 G2>G1 ,推荐算法存在马太效应
1.4 Diversity(多样性)
用户的兴趣往往是多样的,但具体到用户访问推荐系统的某一刻兴趣往往是单一的,如果推荐结果也比较单一极有可能不能覆盖到用户此刻的兴趣.
Diversity=1−21∣R(u)∣(∣R(u)∣−1)∑i,j∈R(u),i=jS(i,j)
- s(i,j)∈[0,1] : 物品 $i, j $之间的相似度
D=∣U∣1u∈U∑Diversity(R(u))
1.5 Recall(召回率)
Recall=∑u∣T(u)∣∑u∣R(u)⋂T(u)∣
- R(u) : 给用户 u 推荐的 N 个物品
- T(u) : 用户 u 在测试集上的真实喜欢物品的集合
1.6 Precision
Precision=∑u∣R(u)∣∑u∣R(u)⋂T(u)∣
1.7 Novelty(新颖性)
新颖:推荐用户没有见过的,推荐结果的平均流行度,一定程度上可以比较粗犷的反映新颖性.
1.8 Serendipity(惊喜度)
令人惊喜的推荐结果:推荐的结果跟用户的喜好不相似,但是用户对推荐的结果很满意.
1.9 Trust(信任度)
推荐结果的让用户信任,会增加用户和推荐系统的交互行为
1.10 Real-time(实时性)
-
在用户和推荐系统交互的过程中可以实时的更新推荐列表
-
可以实时的将新的物品进行推荐
1.11 Robustness(健壮性:推荐系统抗击作弊的能力)
-
尽量使用代价较高的用户行为
-
对数据进行攻击检测,清洗异常数据
2.基于邻域的算法
2.1 UserCF
- 找到和目标用户相似的用户集合
- 从这个集合当中,推荐给用户没有见过的物品
2.1.1 相似度计算(基于物品集合计算相似度)
1. Jaccard
Wuv=∣N(u)⋃N(v)∣∣N(u)⋂N(v)∣
2. 余弦相似度
Wuv=∣N(u)∣∣N(v)∣∣N(u)⋂N(v)∣
- N(u) : 表示用户 u 曾经有过正反馈的物品集合
- N(v) : 表示用户 v 曾经有过正反馈的物品集合
3. 相似度计算的改进(用户相似度矩阵)
两用户计算相似度,时间复杂度:O(∣U∣∗∣U∣)
事实上,很多用户之间并有交集,很多∣N(u)⋂N(v)∣=0的情况.
所以,可以之计算出用户两两之间有交互的用的相似度.
- 构建物品到用户的倒排表
- 建立用户的相似度矩阵
|
item1 |
item2 |
item3 |
---|
user |
|
|
|
---|
A |
a |
b |
d |
---|
B |
a |
c |
None |
---|
C |
b |
e |
None |
---|
D |
c |
d |
e |
---|
|
user1 |
user2 |
---|
item |
|
|
---|
a |
A |
B |
---|
b |
A |
C |
---|
c |
B |
D |
---|
d |
A |
D |
---|
e |
C |
D |
---|
如何构造相似度矩阵WMat : 为余弦相似度中的分子
- item.a : W[A][B],W[B][A]位置权重加1
- item.b : W[A][C],W[A][C]位置权重加1
WMat
|
A |
B |
C |
D |
---|
A |
0 |
1 |
1 |
1 |
---|
B |
1 |
0 |
0 |
1 |
---|
C |
1 |
0 |
0 |
1 |
---|
D |
1 |
1 |
1 |
1 |
---|
4.计算对物品的喜爱度
P(u,i)=v∈S(u,K)⋂N(i)∑wuvrvi
- S(u,K): 跟用户 u 最相似的top K个用户
- N(i) : 对物品i 有过行为的的用户集合
- S(u,K)⋂N(i) : 在与i有过交互行为的用户中取前top K个
- Wuv : 用户 u,v 的相似度
- rvi : 用户 v ,对物品 i 的喜好度(单一反馈:喜欢不喜欢,为1)
计算用例(根据WMat)
P(A,c)=WA,B+WA,D=61+31=0.7416
- 计算用户A 对 物品 c,的喜爱程度
- 跟物品 c,有过交互行为的用户只有B,D
2.1.2 User-IIF
削弱两两用户之间共有的热门物品对相似度计算的影响.
Wuv=∣N(u)∣∣N(v)∣∑i∈N(u)⋂N(v)log1+∣N(i)∣1
log1+∣N(i)∣1 : 物品热度的倒数
2.1.3 相似度计算(基于用户-物品的评分矩阵)
RMat
|
user |
p1 |
p2 |
p3 |
p4 |
p5 |
---|
0 |
a |
5 |
3 |
4 |
4 |
NaN |
---|
1 |
b |
3 |
1 |
2 |
3 |
3.0 |
---|
2 |
c |
4 |
3 |
4 |
3 |
5.0 |
---|
3 |
d |
3 |
3 |
1 |
5 |
4.0 |
---|
4 |
e |
1 |
5 |
5 |
2 |
1.0 |
---|
- Pearson相关系数
sim(a,b)=∑p∈P(ra,p−rˉa)2∑p∈P(rb,p−rˉb)2∑p∈P(ra,p−rˉa)(rb,p−rˉb)
- P : 物品集合
- a,b : 用户 a,b
- ra,p : 用户 a 对物品 p 的评分
- rˉa : 用户 a 对其评价过物品的平均分
- sim(a,b) :相似度的取值区间在[-1, 1]
- 预测评分
pred(a,p)=rˉa+∑b∈Nsim(a,b)∑b∈Nsim(a,b)∗(rb,p−rˉb)
2.2 ItemCF
- 计算物品的相似度
- 根据物品的相似度和用户购买历史给用户推荐相似的物品
Wij=∣N(i)∣∣N(i)⋂N(j)∣
- N(i) : 喜欢物品 i 的用户数量
- ∣N(i)⋂N(j)∣ : 同时喜欢物品 i 和 j 的用户数量
- Wij : 喜欢物品 i 的用户中有多少比例也喜欢物品 j
2.2.1 针对热门物品的改进
如果物品很热门,很多人喜欢,那么热门物品会和其他物品的相似度增加.不利于对长尾物品的挖掘,增加了马太效应
Wij=∣N(i)∣∣(N(j)∣∣N(i)⋂N(j)∣
对分母增加了物品 j 的权重,减小热门物品对相似度的影响.
同理:ItemCF的计算和UserCF类似:
- 构建用户-物品的倒排表(避免没有用户交集的物品相似度计算)
- 构建物品的相似度矩阵W
P(u,j)=i∈N(u)⋂S(j,K)∑wjirui
2.2.2 针对过活跃用户的改进IUF(Inverse User Frequence)
ItemCF两个物品的相似度是基于共同喜它们的Users,所以每个用户的历史纪录都会影响到相似度计算,如果有的用户过于活跃,因为这一个用户产生很大的开销.
Wij=∣N(i)∣∣N(j)∣∑u∈N(i)⋂N(j)log1+∣N(u)∣1
IUF是通过对两两物品的交集用户的活跃度进行变换,减小过活跃用户的影响.
2.2.3 物品相似度的归一化
ItemCF中对相似度矩阵进行最大值归一化,可以提高推荐的准确率,推荐结果的多样性.一般情况下,热门的类其类内的物品相似度一般比较大.如果不进行归一化,就会推荐热门类内的物品,增加马太效应.会降低模型覆盖率.
W′=MaxjWijWij
2.2.4 物品相似度计算(用户-物品评分矩阵)
RMat
|
user |
p1 |
p2 |
p3 |
p4 |
p5 |
---|
0 |
a |
5 |
3 |
4 |
4 |
NaN |
---|
1 |
b |
3 |
1 |
2 |
3 |
3.0 |
---|
2 |
c |
4 |
3 |
4 |
3 |
5.0 |
---|
3 |
d |
3 |
3 |
1 |
5 |
4.0 |
---|
4 |
e |
1 |
5 |
5 |
2 |
1.0 |
---|
- 余弦相似度
sim(a⋅b)=∣a∣∗∣b∣a⋅b
- a : 物品 a 对应的评分向量
- b : 物品 b 对应的评分向量
- 改进余弦相似度(考虑了用户平均评分的差异)
sim(p1,p2)=∑u∈U(ru,p1−rˉu)2∑u∈U(ru,p2−rˉu)2∑u∈U(ru,p1−rˉu)(ru,p2−rˉu)
预测评分
pred(a,p1)=∑pi∈ratedItems(a)sim(pi,p1)∑pi∈ratedItems(u)sim(pi,p1)∗ra,pi
2.2.5 哈利波特问题
ItemCF算法对图书推荐问题中,很多图书都和<哈利波特>相关,主要是哈利波特太畅销了,大多数买书的人都会同时购买<哈利波特>.
wij=∣N(i)∣∣N(j)∣∣N(i)⋂N(j)∣
如果 j 非常热门,∣N(i)⋂N(j)∣,会很接近 ∣N(i)∣,尽管分母已经 j的热度,但是实际应用中,热门商品仍会获得很高的相似度.
解决方法:增加对热门物品的惩罚
Wij=∣N(i)∣1−α∣N(j)∣α∣N(i)⋂N(j)∣
- α : α∈[0.5,1]
- α=0.5 : 准确率和召回率最高
- α越大 : 覆盖率越高,推荐结果的平均热度降低
2.3 UserCF vs ItemCF
|
UserCF |
ItemCF |
---|
Item |
|
|
---|
性能 |
用户少于物品 |
物品少于用户 |
---|
领域 |
时效较强,个性化弱 |
长尾挖掘,个性化强 |
---|
实时性 |
用户新行为不会立即反馈到推荐结果 |
用户的新行为会实时影响推荐结果 |
---|
冷启动 |
新用户不友好,用户矩阵定时更新,新物品产生用户行为后才会被推荐给相似用户 |
新用户产生一个行为即可为其推荐,物品矩阵不能实时更新 |
---|
推荐理由 |
推荐结果可解释性弱 |
根据用户的历史推荐,结果使用户比较信服 |
---|