(一)哈利波特问题
问题:购买任何一本书的人似乎都会购买《哈利波特》,因为《哈利波特》太热门了,确实是购买任何一本书的人几乎都会购买它。
解决方案:
(1)在item-based CF的相似度计算公式的分母上,加大对热门物品的惩罚
w
i
j
=
∣
N
(
i
)
∩
N
(
j
)
∣
∣
N
(
i
)
∣
1
−
α
∣
N
(
j
)
∣
α
w_{ij}=\frac{|N(i)\cap N(j)|}{|N(i)|^{1-\alpha}|N(j)|^\alpha}
wij=∣N(i)∣1−α∣N(j)∣α∣N(i)∩N(j)∣
其中
N
(
i
)
N(i)
N(i)表示四环物品
i
i
i的用户集合;
α
∈
[
0.5
,
1
]
\alpha\in[0.5,1]
α∈[0.5,1],提高
α
\alpha
α就可以惩罚热门物品
j
j
j。
(2)引入物品的内容数据
(二)推荐系统冷启动物品
(1)用户冷启动
热门排行榜(非个性化推荐),注册信息(粗粒度个性化推荐),社交网络账号
(2)物品冷启动
利用物品的内容信息,推荐给“和该物品相似物品”的喜欢人群
(3)系统冷启动
引入专家知识,建立物品相关度表
(三)推荐系统评估
(1)评分预测
均
方
根
误
差
R
M
S
E
=
∑
u
,
i
∈
T
(
r
u
i
−
r
^
u
i
)
2
∣
T
∣
均方根误差RMSE=\sqrt{\frac{\sum_{u,i\in T} (r_{ui}-\hat{r}_{ui})^2}{|T|}}
均方根误差RMSE=∣T∣∑u,i∈T(rui−r^ui)2
平
均
绝
对
误
差
M
A
E
=
∑
u
,
i
∈
T
∣
r
u
i
−
r
^
u
i
∣
∣
T
∣
平均绝对误差MAE=\frac{\sum_{u,i\in T}|r_{ui}-\hat{r}_{ui}|}{|T|}
平均绝对误差MAE=∣T∣∑u,i∈T∣rui−r^ui∣
其中
r
u
i
r_{ui}
rui是用户
u
u
u对物品
i
i
i的实际评分,
r
^
u
i
\hat{r}_{ui}
r^ui是推荐算法给出的预测评分。
(2)TopN推荐
召
回
率
R
e
c
a
l
l
=
∑
u
∈
U
∣
R
(
u
)
∩
T
(
u
)
∣
∑
u
∈
U
∣
T
(
u
)
∣
召回率Recall=\frac{\sum_{u\in U}|R(u)\cap T(u)|}{\sum_{u\in U}|T(u)|}
召回率Recall=∑u∈U∣T(u)∣∑u∈U∣R(u)∩T(u)∣
准
确
率
P
r
e
c
i
s
i
o
n
=
∑
u
∈
U
∣
R
(
u
)
∩
T
(
u
)
∣
∑
u
∈
U
∣
R
(
u
)
∣
准确率Precision=\frac{\sum_{u\in U}|R(u)\cap T(u)|}{\sum_{u\in U}|R(u)|}
准确率Precision=∑u∈U∣R(u)∣∑u∈U∣R(u)∩T(u)∣
其中
R
(
u
)
R(u)
R(u)是推荐算法给出用户
u
u
u的推荐列表,
T
(
u
)
T(u)
T(u)是用户
u
u
u实际感兴趣的物品列表。召回率——用户实际感兴趣的物品,给推了几个;准确率——给用户推的物品里,有几个是用户感兴趣的。
[3]覆盖率
C
o
v
e
r
a
g
e
=
∣
∪
u
∈
U
R
(
u
)
∣
∣
I
∣
Coverage=\frac{|\cup_{u\in U}R(u)|}{|I|}
Coverage=∣I∣∣∪u∈UR(u)∣
其中
U
U
U表示用户集合,
R
(
u
)
R(u)
R(u)表示给用户
u
u
u推荐的长度为
N
N
N的物品列表。
[4]基尼系数
(四)长尾分布、用户活跃度、物品流行度
长尾分布:极少数个体(横轴)对应极高的值(纵轴),而拥有极低值的个体,数量却占总体的绝大多数。形象地描述可称曲线靠近纵轴的部份为tall head,而靠近横轴的部份则是所谓的long tail。
f
(
x
)
=
α
x
k
f(x)=\alpha x^k
f(x)=αxk
https://www.zhihu.com/question/20027490
用户活跃度:用户 产生过行为的 物品总数。
物品流行度:对 物品 产生过行为的 用户数。
(五)user-based CF和item-based CF对比
user-based CF适合新闻推荐,用户兴趣不是特别细化,绝大多数都喜欢看热门新闻;新闻作为item更新非常快,如果用item-based CF需要更新item相关表,无法做到实时计算。时效性|个性化需求低
item-based CF适合图书、电影、商品等推荐,这些方向的用户的兴趣比较固定和持久;这些方向的物品数相对用户数要少很多,维护低维度的item相关表更容易。挖掘长尾物品|个性化需求高