0. 奇异值分解 Singular Value Decomposition
SVD是将一个
m
×
n
m\times n
m×n的矩阵分解成三个矩阵的乘积
即
A
=
U
Σ
V
T
A = U\Sigma V^T
A=UΣVT
其中
U
,
V
U,V
U,V分别为
m
×
m
,
n
×
n
n
m\times m,n\times nn
m×m,n×nn的矩阵
Σ
\Sigma
Σ是一个
m
×
n
m\times n
m×n的对角矩阵
其中
U
U
U,是左奇异矩阵,为
A
A
T
AA^T
AAT的所有特征向量组成的矩阵,
V
V
V是是右奇异矩阵,为
A
T
A
A^TA
ATA的所有特征向量组成的矩阵(按照特征值从大到小排序)
那么奇异值矩阵
Σ
=
U
−
1
A
V
\Sigma = U^{-1}AV
Σ=U−1AV
对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵。也就是说:
A m × n = U m × m Σ m × n V n × n T ≈ U m × k Σ k × k V k × n T A_{m\times n} = U_{m\times m}\Sigma_{m\times n} V^T_{n\times n}\approx U_{m\times k}\Sigma_{k\times k} V^T_{k\times n} Am×n=Um×mΣm×nVn×nT≈Um×kΣk×kVk×nT
这个性质使得它在推荐算法领域中有很多应用,因为它能够用少量数据来描绘用户,项目的特征。
1. ABSTRACT
推荐算法基于协同过滤(Collaborating Filtering),分析用户的交易记录,来建立产品和用户兴趣之间的联系。两种比较成功的模型分别是:
- 潜在因素模型(latent factor models):直接描述用户和产品之间的关系
- 邻域模型(neighborhood models):描述产品之间的相似性或者用户之间的相似性。
此篇论文讲两种方法结合起来,形成了更为精确更高的联合模型,且可以通过利用用户的显性或隐性反馈来进一步提高精确度。
并且作者提出了一种新的评价指标,可以在top-K推荐任务中突出不同方法的差异性。
另外作者提到,在Neflix的数据测试中,它的模型效果比之前这个数据集测试的结果要好。
2. INTRODUCTION
推荐系统大多是基于协同过滤(CF),它只利用用户过去的交易或者产品评级。因此它不需要更高维度的数据集,并且直接使用用户行为数据可以发现那些很难用已知数据直接发现的行为模式。
CF系统主要分析两种完全不同的对象:产品和用户。而两种经典模型就是潜在因素模型和邻域模型。
之前有论文提到将两种方法结合起来,但只是两种模型独立计算,然后把两种模型的结果进行加权。但作者的方法是,在建立模型的时候,就将两种模型给结合起来。
邻域模型 neighborhood models
邻域模型重点聚焦于描述产品之间的关系(或者用户之间),它基于同一用户对相似项目的评分来评估用户对项目的偏好。这样就可以不用分析产品和用户之间的关系,而是直接分析产品之间的关系。它在检验小范围关系的时候非常有效,因为它依赖于一些明显的邻域关系,但它会忽略大部分用户中不那么明显的邻域关系。
潜在因素模型 latent factor models
潜在因素模型将产品和用户变换到同一潜在因素空间,然后直接进行比较。它根据用户的反馈,通过自动推断的因素来分析用户和产品之间的联系。它可以有效地估计与大多数项目同时相关的因素。但它在检测密切相关的项目方面表现较差。
以下的研究方法是为了根据已知用户 u u u对项目 i i i的打分 r u i r_{ui} rui,来预测未知的 r u i r_{ui} rui
2.1 基线估计 Baseline estimates
在实际中,有的人给出的分数平均会高于/低于其他人给的分数,而有的项目的收到的打分平均也会高于/低于其它项目,所以要考虑到这些影响。
设所有项目的均分是
μ
\mu
μ,
b
i
b_i
bi表示项目
i
i
i与项目平均分的差值,
b
i
b_i
bi表示第
u
u
u个人的平均打分与项目均分的差距。那么第
u
u
u个人对
i
i
i的基线估计就是
b
u
i
=
μ
+
b
u
+
b
i
b_{ui}=\mu + b_u + b_i
bui=μ+bu+bi 。
文中给了一个例子:
假设我们想要用户 Joe 对电影泰坦尼克号的评分的基线估计。 设所有电影的平均评分 µ 是 3.7 颗星。 此外,泰坦尼克号比一般电影要好,因此它的评分往往比平均水平高 0.5 星。 另一方面,Joe 是一个挑剔的用户,他的评分往往比平均水平低 0.3 星。 因此,通过计算 3.7 − 0.3+0.5,Joe 对泰坦尼克号评级的基线估计将是 3.9 星。
那么
b
u
,
b
i
b_u,b_i
bu,bi 是可以通过最优化问题解决的,即:
m
i
n
b
∗
∑
(
u
,
i
)
∈
K
(
r
u
i
−
μ
−
b
u
−
b
i
)
2
+
λ
1
(
∑
μ
b
u
2
+
∑
b
i
2
)
min_{b*}^{} \sum_{(u,i)\in \Kappa}(r_{ui} - \mu - b_u - b_i)^2 + \lambda_1(\sum_{\mu}b_u^2 + \sum b_i^2)
minb∗(u,i)∈K∑(rui−μ−bu−bi)2+λ1(μ∑bu2+∑bi2)
计算得出使上式值最小的
b
u
,
b
i
b_u,b_i
bu,bi。其中
r
u
i
r_{ui}
rui是用户
u
u
u对项目
i
i
i的打分
而
λ
1
(
∑
μ
b
u
2
+
∑
b
i
2
)
\lambda_1(\sum_{\mu}b_u^2 + \sum b_i^2)
λ1(∑μbu2+∑bi2)是为了防止过拟合的。(原理暂不清楚)
2.2 邻域模型 Neighborhood models
文中使用的邻域模型是项目导向型(item-oriented approaches),与之相对的是用户导向型(user-oriented methods)。项目导向型拥有更高的精准度和拓展性。作者的解释是“用户了解他们以前喜欢的项目,但不了解那些和TA兴趣相同的用户”。
而作者介绍的此方法就是为了预测用户对相似物品打分,即相似性测量(similarity measure)
文中没有细讲皮尔逊相关系数(Pearson correlation coefficient),维基百科上是这么描述的:
我们用
s
i
j
s_{ij}
sij表示用户对项目
i
,
j
i,j
i,j打分的相似程度
s
i
,
j
=
n
i
,
j
n
i
j
+
λ
2
ρ
i
j
s_{i,j} = \frac{n_{i,j}}{n_{ij} + \lambda_2} \rho_{ij}
si,j=nij+λ2ni,jρij
其中
r
i
j
r_{ij}
rij表示都对项目
i
,
j
i,j
i,j进行打分的用户数量。
λ
2
\lambda_2
λ2是一个参数,通常为
100
100
100。
那么我们对
r
u
i
r_{ui}
rui的预测值就是:
r
^
u
i
=
b
u
i
+
∑
j
∈
S
k
(
i
;
u
)
s
i
j
(
r
u
j
−
b
u
j
)
∑
j
∈
S
k
(
i
;
u
)
s
i
j
\hat{r}_{ui} = b_{ui}+\frac{\sum_{j \in S^k(i;u)}s_{ij}(r_{uj}-b_{uj})}{\sum_{j \in S^k(i;u)}s_{ij}}
r^ui=bui+∑j∈Sk(i;u)sij∑j∈Sk(i;u)sij(ruj−buj)
但是上述方法有缺陷,比如,并非所有需要利用的数据都是已知的。并且这种方法计算的是两种物品之间相关性,而非物品和所有邻域关系中的相关性。(这一段看的不是太明白)
所以就引入了一个新的概念插值权重(interpolation weights):{
θ
i
j
u
∣
j
∈
S
k
(
i
;
u
)
\theta_{ij}^u|j \in S^k(i;u)
θiju∣j∈Sk(i;u)}。
经过修正后的结果预测算式就是:
r
^
u
i
=
b
u
i
+
∑
j
∈
S
k
(
i
;
u
)
θ
i
j
u
s
i
j
(
r
u
j
−
b
u
j
)
\hat{r}_{ui} = b_{ui}+ \sum_{j \in S^k(i;u)}\theta_{ij}^us_{ij}(r_{uj}-b_{uj})
r^ui=bui+j∈Sk(i;u)∑θijusij(ruj−buj)
2.3 潜在因素模型 Latent factor models
作者使用的是由奇异值分解 (SVD) 在用户项目评分矩阵上计算的模型。它具有较高的精准度和可拓展性,因此获得了较高的人气。
在该模型下,每个用户
u
u
u被赋予了一个特征向量
p
u
∈
R
f
p_u\in R^f
pu∈Rf,每个项目
i
i
i也被赋予了一个特征向量
q
i
∈
R
f
q_i\in R^f
qi∈Rf
预测值为:
r
^
u
i
=
b
u
i
+
p
u
T
q
i
\hat{r}_{ui}=b_{ui}+p_u^Tq_i
r^ui=bui+puTqi
但是,该方法在数据缺失较多时,效果不太好,使用插值的方法会使数据集变得庞大,且由于插值较多,会导致预测结果不准确。
为了改进上述方法,文中直接对已知数据进行建模,并通过适当的正则化模型(adequate regularized model)来避免过拟合。
m i n p ∗ q ∗ b ∗ ∑ ( u , i ) ∈ K ( r u i − μ − b u − b i − p u T q i ) + λ 3 ( ∣ ∣ p u ∣ ∣ 2 + ∣ ∣ q i ∣ ∣ 2 + b u 2 + q i 2 ) min_{p_*q_*b_*} \sum_{(u,i)\in K}\qquad (r_{ui}-\mu-b_u-b_i-p_u^Tq_i)+\lambda_3(||p_u||^2+||q_i||^2+b_u^2+q_i^2) minp∗q∗b∗(u,i)∈K∑(rui−μ−bu−bi−puTqi)+λ3(∣∣pu∣∣2+∣∣qi∣∣2+bu2+qi2)
2.4 Netflix 数据集 The Netflix data
论文中使用的数据集是Netflix,大约有一亿条电影相关的数据。
模型的预测质量通过以下算式计算:
R
M
S
E
=
∑
(
u
,
i
)
∈
T
e
s
t
S
e
t
(
r
u
i
−
r
^
u
i
)
/
∣
T
e
s
t
S
e
t
∣
RMSE = \sqrt{\sum_{(u,i)\in TestSet}(r_{ui}-\hat{r}_{ui})/|TestSet|}
RMSE=(u,i)∈TestSet∑(rui−r^ui)/∣TestSet∣
另外作者提到这是个Netflix举办的比赛,最高的模型的RMSE甚至达到了0.9514。
2.5 隐式反馈 Implicit feedback
隐士反馈包含用户的看某个电影的时长,浏览记录等,但是这些私密数据是不会提供的。但是作者提到了一个新的理论,当一个用户给电影打分时,无论分数是多少,这个行为都告诉了我们用户会给哪些电影打分。
3. 新的邻域模型 A NEIGHBORHOOD MODEL
作者提出了一种全局用户评分相似度,而非基于单个用户,用
w
i
j
w_{ij}
wij表示,意义为用户会给项目
i
,
j
i,j
i,j打相似分数的权重。从数据集进行计算从而得到它。那么预测方程就是:
r
^
u
i
=
b
u
i
+
∑
j
∈
R
(
u
)
(
r
u
j
−
b
u
j
)
w
i
j
\hat{r}_{ui}=b_{ui}+\sum_{j\in R(u)}(r_{uj}-b_{uj})w_{ij}
r^ui=bui+j∈R(u)∑(ruj−buj)wij
含义是,如果用户给 j j j项目打了比基线要高的分数,那么预测它会给项目 i i i打分会高于基线 ( r u j − b u j ) w i j (r_{uj}-b_{uj})w_{ij} (ruj−buj)wij分数。并且作者建议我们把 ( r u j − b u j ) (r_{uj}-b_{uj}) (ruj−buj)当作用户打分对基线估计的偏移量来看待
作者提到,可以利用隐式反馈,从而使得模型更精准
r
^
u
i
=
b
u
i
+
∑
j
∈
R
(
u
)
(
r
u
j
−
b
u
j
)
w
i
j
+
∑
j
∈
N
(
u
)
c
i
j
\hat{r}_{ui}=b_{ui}+\sum_{j\in R(u)}(r_{uj}-b_{uj})w_{ij} + \sum_{j\in N(u)}c_{ij}
r^ui=bui+j∈R(u)∑(ruj−buj)wij+j∈N(u)∑cij
c
i
j
c_{ij}
cij表示的是,通过隐式反馈获得到的权重。
对于提供数据较多的用户,对其建模比较清楚,作者提到可以冒更多的风险去给用户推荐比较 “古怪”和曝光度较低的内容。而对于提供数据比较少的用户,我们对其的建模比较模糊,所以推荐内容应该是预测值在基线附近的。
但是作者提到,当前的模型似乎过分强调了这种性质。(“However, our experience shows that the current model somewhat overemphasizes the dichotomy between heavy raters and those that rarely rate.”)。于是又给出了新的调整:
r
^
u
i
=
μ
+
b
u
+
b
i
+
∣
R
(
u
)
∣
−
1
2
∑
j
∈
R
(
u
)
(
r
u
j
−
b
u
j
)
w
i
j
+
∣
N
(
u
)
∣
−
1
2
∑
j
∈
N
(
u
)
c
i
j
\hat{r}_{ui} = \mu + b_u + b_i + |R(u)|^{-\frac{1}{2}}\sum_{j\in R(u)}(r_{uj}-b_{uj})w_{ij}+|N(u)|^{-\frac{1}{2}}\sum_{j\in N(u)}c_{ij}
r^ui=μ+bu+bi+∣R(u)∣−21j∈R(u)∑(ruj−buj)wij+∣N(u)∣−21j∈N(u)∑cij
R ( u ) R(u) R(u)表示的是显式反馈, N ( u ) N(u) N(u)表示的是隐式反馈
为了剔除掉相关性不大的项目带来的对预测结果的影响,作者采用了只计算相关性最强的的
k
k
k个项目。
S
k
(
i
)
S^k(i)
Sk(i)表示与
i
i
i相关性最强的
k
k
k个项目。同时定义:
R
k
(
i
;
u
)
=
R
(
u
)
∩
S
k
(
i
)
,
N
k
(
i
;
u
)
=
N
(
u
)
∩
S
k
(
i
)
R^k(i;u)=R(u)\cap S^k(i),N^k(i;u)=N(u)\cap S^k(i)
Rk(i;u)=R(u)∩Sk(i),Nk(i;u)=N(u)∩Sk(i),经过修改后的算法为:
r
^
u
i
=
μ
+
b
u
+
b
i
+
∣
R
k
(
i
;
u
)
∣
−
1
2
∑
j
∈
R
k
(
i
;
u
)
(
r
u
j
−
b
u
j
)
w
i
j
+
∣
N
k
(
i
;
u
)
∣
−
1
2
∑
j
∈
N
k
(
i
;
u
)
c
i
j
\hat{r}_{ui} = \mu + b_u + b_i + |R^k(i;u)|^{-\frac{1}{2}}\sum_{j\in R^k(i;u)}(r_{uj}-b_{uj})w_{ij}+|N^k(i;u)|^{-\frac{1}{2}}\sum_{j\in N^k(i;u)}c_{ij}
r^ui=μ+bu+bi+∣Rk(i;u)∣−21j∈Rk(i;u)∑(ruj−buj)wij+∣Nk(i;u)∣−21j∈Nk(i;u)∑cij
可见当
k
=
∞
k=\infty
k=∞时,上式就与之前的式子一样。其中的参数可由求解下方的最优化问题获得:
m
i
n
b
∗
,
w
∗
,
c
∗
∑
(
u
,
i
∈
K
)
(
r
u
i
−
μ
−
b
u
−
b
i
−
∣
N
k
(
i
;
u
)
∣
−
1
2
∑
j
∈
N
k
(
i
;
u
)
c
i
j
−
∣
R
k
(
i
;
u
)
∣
−
1
2
)
2
+
λ
4
(
b
u
2
+
b
i
2
+
∑
j
∈
N
k
(
i
;
u
)
w
i
j
2
+
∑
j
∈
N
k
(
i
;
u
)
c
i
j
2
)
min_{b_*,w_*,c_*}\sum_{(u,i\in K)}(r_{ui}-\mu-b_u-b_i-|N^k(i;u)|^{-\frac{1}{2}}\sum_{j\in N^k(i;u)}c_{ij}-|R^k(i;u)|^{-\frac{1}{2}})^2+\lambda_4(b_u^2+b_i^2+\sum_{j\in N^k(i;u)}w_{ij}^2+\sum_{j\in N^k(i;u)}c_{ij}^2)
minb∗,w∗,c∗(u,i∈K)∑(rui−μ−bu−bi−∣Nk(i;u)∣−21j∈Nk(i;u)∑cij−∣Rk(i;u)∣−21)2+λ4(bu2+bi2+j∈Nk(i;u)∑wij2+j∈Nk(i;u)∑cij2)
对于Netflix数据集,作者令 λ 4 = 0.002 \lambda_4=0.002 λ4=0.002
4.重新审视潜在因子模型 LATENT FACTOR MODELS REVISITED
在原有的模型基础上,作者又加入了隐式反馈:
r
^
u
i
=
b
u
i
+
q
i
T
(
∣
R
(
u
)
∣
−
1
2
∑
j
∈
R
(
u
)
(
r
u
j
−
b
u
j
)
x
j
+
∣
N
(
u
)
∣
−
1
2
∑
j
∈
N
(
u
)
y
j
)
\hat{r}_{ui}=b_{ui}+q_i^T(|R(u)|^{-\frac{1}{2}}\sum_{j \in R(u)}(r_{uj}-b_{uj})x_j+|N(u)|^{-\frac{1}{2}}\sum_{j\in N(u)}y_j)
r^ui=bui+qiT(∣R(u)∣−21j∈R(u)∑(ruj−buj)xj+∣N(u)∣−21j∈N(u)∑yj)
称之为非对称SVD(Asymmetric-SVD)
它在原有的模型上有以下几种优势:
- 更少的参数,用户的数量远大于产品的数量,所以用项目参数转化用户参数显著地降低了复杂度
- 可以实时处理新用户,可以直接根据新用户的反馈,对其进行推荐,而不用对整个模型重新进行计算
- 具有可解释性
- 对隐式反馈的反应更快
5.联合模型 INTEGRATED MODEL
联合模型就是将邻域模型,潜在因子模型,再加上隐式反馈。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mXsUmK5Z-1657674629373)(./lianhe.png)]
此模型依然具有可解释性,以及预测精准度有了很大提升。且依然可以根据新用户的反馈来推荐,而不需要重新建立模型。(除了在第一次根据已知数据计算参数时花了很长时间)
6. EVALUATION THROUGH A TOP-K RECOMMENDER
作者简要介绍了在Netflix举办的大赛的情况。同时,他提出一个问题,RMSE值的减少(值越小,误差越小),能给用户的体验带来多大的提升?
采用的推荐算法是,对于用户评价5星的电影,我们随机找1000个(与之有相似性的)电影,然后进行评分估计,向用户推荐预测值最高的K个电影,然后通过验证集检验这K个电影是不是这1000个电影中最为感兴趣的电影。
然后经过对不同模型的测试测试,得出作者的联合模型准确率最高(即RMSE最低) : )
7.DISCUSSION
作者简要总结了讲的内容。同时提出,衡量推荐算法的性能有很多指标:准确性、多样性、推荐让用户感到惊喜的内容、可解释性、适当的 topK 推荐和计算效率,其中一些是可以很容易检验的,而另外一些则难以被检验。
此外,通过Top—K检验方法,可以更好地突出不同模型之间的精确度。
最后作者又提到,多样的数据对提高模型的精准度来说很重要,尤其是隐式反馈。