推荐系统提出的动机是什么呢?
🎉 推荐系统
理念
基本假设
通过这个基本假设,我们可以发现,推荐系统是将人们的过去数据(喜好什么的)当作聚类点进行聚类了,相似的簇具有类似的行为,而且这个行为在时间序列上是平稳变化(或者周期性变化)
从形式上讲,推荐系统采用一组用户
U
U
U和一组项目
I
I
I,学习函数
f
f
f使其满足关系
R
R
R
f
:
U
×
I
→
R
f:U\times I\to R
f:U×I→R
推荐系统与搜索引擎最大的区别在于,搜索引擎并没有考虑用户的喜好,而是考虑内容的相关性。
基于内容的方法基于这样一个事实:用户的兴趣应该与ta应该被推荐的项目的描述相匹配。
商品的描述与用户感兴趣的描述越相似,用户就越有可能觉得商品的推荐有趣。
核心思想
步骤
评价指标
我们用一组向量表示项目和用户属性:
I j = ( i j , 1 , i j , 2 , . . . , i j , k ) I_j=(i_{j,1},i_{j,2},...,i_{j,k}) Ij=(ij,1,ij,2,...,ij,k)
U i = ( u i , 1 , u i , 2 , . . . , u j , k ) U_i=(u_{i,1},u_{i,2},...,u_{j,k}) Ui=(ui,1,ui,2,...,uj,k)
他们之间(用户 u u u和项目 i i i)的相似性扩压用余弦距离度量:
s i m ( U i , I j ) = c o s ( U i , I j ) = ∑ l = 1 k u i , l i j , l ∑ l = 1 k u i , l 2 ∑ l = 1 k i j , l 2 sim(U_i,I_j)=cos(U_i,I_j)=\frac{\sum_{l=1}^ku_{i,l}i_{j,l}}{\sqrt{\sum_{l=1}^ku_{i,l}^2}\sqrt{\sum_{l=1}^k}i_{j,l}^2} sim(Ui,Ij)=cos(Ui,Ij)=∑l=1kui,l2∑l=1kij,l2∑l=1kui,lij,l
接着就是计算最接近的top(k)项目啦!
上面的算法只是用用户去评价一个商品,比较适合喜好推荐,并没有基于用户群体给出一个客观的评价。
我们知道,某些商品虽然描述的很好,但可能并不受到群体喜欢(比如某些盗版),除却考虑推荐内容的相关性,还需要考虑目标群体,那怎么办呢?
协同过滤算法基于用户-项目矩阵:
举个例子:User-Item Matrix
Lion King | Aladdin | Mulan | Anastasia | |
---|---|---|---|---|
John | 3 | 0 | 3 | 3 |
Joe | 5 | 4 | 0 | 2 |
Jill | 1 | 2 | 4 | 2 |
Jane | 3 | ? | 1 | 0 |
Jorge | 2 | 2 | 0 | 1 |
在商品评价中,得分可以由用户显示打分给出(explicit)
也可以从其他用户的行为中推测得到(implicit)
算法的具体步骤为:
评价指标
余弦距离
皮尔逊相关系数
s i m ( U i , U j ) = ∑ k ( r i , k − r ˉ i ) ( r j , k − r ˉ j ) ∑ k ( r i , k − r ˉ i ) 2 ∑ k ( r j , k − r ˉ j ) 2 sim(U_i,U_j)=\frac{\sum_k(r_{i,k}-\bar r_i)(r_{j,k}-\bar r_j)}{\sqrt{\sum_k(r_{i,k}-\bar r_i)^2}\sqrt{\sum_k(r_{j,k}-\bar r_j)^2}} sim(Ui,Uj)=∑k(ri,k−rˉi)2∑k(rj,k−rˉj)2∑k(ri,k−rˉi)(rj,k−rˉj)
相较于余弦距离,皮尔逊系数做了中心缩放
更新指数
r u , i = r ˉ u + ∑ v ∈ N ( u ) s i m ( u , v ) ( r v , i − r ˉ v ) ∑ v ∈ N ( u ) S i m ( u , v ) r_{u,i}=\bar r_u+\frac{\sum_{v\in N(u)}sim(u,v)(r_{v,i}-\bar r_v)}{\sum_{v\in N(u)}Sim(u,v)} ru,i=rˉu+∑v∈N(u)Sim(u,v)∑v∈N(u)sim(u,v)(rv,i−rˉv)
其中, r u , i r_{u,i} ru,i表示用户 u u u对商品 i i i的得分, r ˉ u \bar r_u rˉu表示用户的平均分, v ∈ N ( u ) v\in N(u) v∈N(u)表示与用户 u u u最相似的邻居组
举个例子
Lion King | Aladdin | Mulan | Anastasia | |
---|---|---|---|---|
John | 3 | 0 | 3 | 3 |
Joe | 5 | 4 | 0 | 2 |
Jill | 1 | 2 | 4 | 2 |
Jane | 3 | ? | 1 | 0 |
Jorge | 2 | 2 | 0 | 1 |
我们现在要评价 J a n e Jane Jane对 A l a d d i n Aladdin Aladdin的评分,需要怎么做呢?
1️⃣ 计算用户之间的相似度
KaTeX parse error: Undefined control sequence: \ at position 82: …+0^2}}=0.73 \\ \̲ ̲\\ sim(Jane,Joe…
2️⃣ 选择最相似的topk
,并计算他们的平均分。例如,我们选两个:
r
ˉ
j
o
e
=
5
+
4
+
0
+
2
4
=
2.75
\bar r_{joe}=\frac{5+4+0+2}{4}=2.75
rˉjoe=45+4+0+2=2.75
joe
是个老好人
r
ˉ
j
o
r
g
e
=
2
+
2
+
0
+
1
4
=
1.25
\bar r_{jorge}=\frac{2+2+0+1}{4}=1.25
rˉjorge=42+2+0+1=1.25
jorge
给分不咋样
3️⃣ 基于最近的邻居计算得分
r
J
a
n
e
,
A
l
a
d
d
i
n
=
r
ˉ
J
a
n
e
+
s
i
m
(
J
a
n
e
,
J
o
e
)
(
r
J
o
e
,
A
l
a
d
d
i
n
−
r
ˉ
J
o
e
)
s
i
m
(
J
a
n
e
,
J
o
e
)
+
s
i
m
(
J
a
n
e
,
J
o
r
g
e
)
+
s
i
m
(
J
a
n
e
,
J
o
r
g
e
)
(
r
J
o
r
g
e
,
A
l
a
d
d
i
n
−
r
ˉ
J
o
r
g
e
)
s
i
m
(
J
a
n
e
,
J
o
e
)
+
s
i
m
(
J
a
n
e
,
J
o
r
g
e
)
=
1.33
+
0.88
∗
(
4
−
2.75
)
+
0.84
∗
(
2
−
1.25
)
0.88
+
0.84
=
2.33
r_{Jane,Aladdin}=\bar r_{Jane}+\frac{sim(Jane,Joe)(r_{Joe,Aladdin}-\bar r_{Joe})}{sim(Jane,Joe)+sim(Jane,Jorge)} \\ \ \\ +\frac{sim(Jane,Jorge)(r_{Jorge,Aladdin}-\bar r_{Jorge})}{sim(Jane,Joe)+sim(Jane,Jorge)} \\ \ \\=1.33+\frac{0.88*(4-2.75)+0.84*(2-1.25)}{0.88+0.84}=2.33
rJane,Aladdin=rˉJane+sim(Jane,Joe)+sim(Jane,Jorge)sim(Jane,Joe)(rJoe,Aladdin−rˉJoe) +sim(Jane,Joe)+sim(Jane,Jorge)sim(Jane,Jorge)(rJorge,Aladdin−rˉJorge) =1.33+0.88+0.840.88∗(4−2.75)+0.84∗(2−1.25)=2.33
推荐系统偏向于数据导向,不同的算法在不同的数据集上会有不同的表现
早期的工作中,人们比较关注准确性,后来呢,也逐渐重视用户满意度和性能。所以说,决定在比较评价中应采用何种综合措施是一项挑战。
1️⃣ 平均绝对误差(MAE)
M
A
E
=
∑
i
j
∣
r
^
i
j
−
r
i
j
∣
n
MAE=\frac{\sum_{ij}|\hat r_{ij}-r_{ij}|}{n}
MAE=n∑ij∣r^ij−rij∣
2️⃣ 标准平均绝对误差(NMAE)
N
M
A
E
=
M
A
E
r
m
a
x
−
r
m
i
n
NMAE=\frac{MAE}{r_{max}-r_{min}}
NMAE=rmax−rminMAE
3️⃣ 均方根误差(RMSE)
更加强调偏差
R
M
S
E
=
1
n
∑
i
,
j
(
r
^
i
j
−
r
i
j
)
2
RMSE=\sqrt{\frac{1}{n}\sum_{i,j}(\hat r_{ij}-r_{ij})^2}
RMSE=n1i,j∑(r^ij−rij)2
4️⃣ 精度(Precision)
P
=
T
P
T
P
+
N
P
P=\frac{TP}{TP+NP}
P=TP+NPTP
用来评价模型本身的性能
5️⃣ 召回率(Recall)
完整性(覆盖率)的度量,更像在数据上的性能
R
=
T
P
T
P
+
F
N
R=\frac{TP}{TP+FN}
R=TP+FNTP
6️⃣ F-Score
精确率和召回率互相影响,理想状态下肯定追求两个都高,但是实际情况是两者相互“制约”,此时需要综合考虑二者
F
=
(
1
+
β
2
)
P
⋅
R
β
2
P
+
R
F=(1+\beta^2)\frac{P\cdot R}{\beta^2P+R}
F=(1+β2)β2P+RP⋅R
β
\beta
β用于控制权重。
7️⃣ 斯皮尔曼相关系数
ρ
=
1
−
6
∑
i
=
1
n
(
x
i
−
y
i
)
2
n
3
−
n
\rho=1-\frac{6\sum_{i=1}^n(x_i-y_i)^2}{n^3-n}
ρ=1−n3−n6∑i=1n(xi−yi)2
8️⃣ Kendall’s
τ
\tau
τ
按照预测顺序是否与实际顺序相同,计算得到consistent
和concordant
值,最终的结果为:
τ = c − d C 2 n \tau=\frac{c-d}{C_2^n} τ=C2nc−d