召回与排序业务流程
als(alternative least square),即交替最小二乘法,是用于计算损失函数最小化的一种方法,当然更为熟知的还有随机梯度下降法。
再正式介绍als之前,需要先引入矩阵分解的思想。
假定已有user对item的评分矩阵R,希望通过矩阵分解来预测user对其它item的评分,可以通过构造两个矩阵P和Q,使得
R
~
=
P
Q
T
\tilde{R}=P Q^{T}
R~=PQT
然后通过不断迭代,来使
R
~
\tilde{R}
R~不断逼近 R 的值。
在这里,P代表user的特征矩阵,Q代表item的特征矩阵,特征的每一维代表一个隐形因子,特征维度一般可通过根据经验设定,而隐形因子的具体值是由机器学到的。
以单用户
u
u
u 对商品
i
i
i 为例,则公式可变为
r
~
u
i
=
p
u
∗
q
i
⊤
\tilde{r}_{u i}=p_{u} * q_{i}^{\top}
r~ui=pu∗qi⊤ 构造损失函数为:
J
=
min
q
∗
,
p
∗
∑
u
,
i
∈
K
(
r
u
i
−
q
i
⊤
p
u
)
2
+
λ
(
∥
q
i
∥
2
+
∥
p
u
∥
2
)
J=\min _{q^{*}, p^{*}} \sum_{u, i \in K}\left(r_{u i}-q_{i}^{\top} p_{u}\right)^{2}+\lambda\left(\left\|q_{i}\right\|^{2}+\left\|p_{u}\right\|^{2}\right)
J=q∗,p∗minu,i∈K∑(rui−qi⊤pu)2+λ(∥qi∥2+∥pu∥2)
交替二乘法的基本思想是:
- 随机初始化矩阵QQ,
- 将Q当做已知,对损失函数求导=0,得到P的值;
- 得到矩阵P后,再将P当作已知,重新去计算矩阵Q,
- 两个过程交替进行,直到误差达到可以接受的程度。
当学习到user矩阵 P和特征矩阵 Q 以后,则可以计算任意user对item的预测评分了,可从候选item集中,选择top N个评分最高的items作为召回集合。