当历史交互数据为MCAR(Missing Completely At Random,完全随机缺失)时,评级预测损失函数可以定义为:
L
o
s
s
N
a
i
v
e
=
1
∣
{
(
u
,
i
)
:
o
u
,
i
=
1
}
∣
∑
(
u
,
i
)
:
o
u
,
i
=
1
δ
u
,
i
(
Y
,
Y
^
)
\mathcal{Loss}_{Naive}=\frac{1}{|\{(u,i):o_{u,i}=1\}|}\sum_{(u,i):o_{u,i}=1}\delta_{u,i}(Y,\hat{Y})
LossNaive=∣{(u,i):ou,i=1}∣1(u,i):ou,i=1∑δu,i(Y,Y^)其中,
Y
^
\hat{Y}
Y^表示预测的评级;
Y
Y
Y 表示
u
u
u 对
i
i
i 的实际评级;
o
u
,
i
=
1
o_{u,i}=1
ou,i=1 表示
u
u
u 对
i
i
i 有评级;
∣
{
(
u
,
i
)
:
o
u
,
i
=
1
}
∣
|\{(u,i):o_{u,i}=1\}|
∣{(u,i):ou,i=1}∣ 表示所有被浏览项目的数量;
δ
u
,
i
(
Y
,
Y
^
)
\delta_{u,i}(Y,\hat{Y})
δu,i(Y,Y^) 表示
Y
Y
Y 与
Y
^
\hat{Y}
Y^ 之间匹配程度的度量,可以定义为:
δ
u
,
i
M
S
E
(
Y
,
Y
^
)
=
(
y
u
,
i
−
y
^
u
,
i
)
2
\delta^{MSE}_{u,i}(Y,\hat{Y})=(y_{u,i}-\hat{y}_{u,i})^2
δu,iMSE(Y,Y^)=(yu,i−y^u,i)2
δ
u
,
i
M
A
E
(
Y
,
Y
^
)
=
∣
y
u
,
i
−
y
^
u
,
i
∣
\delta^{MAE}_{u,i}(Y,\hat{Y})=|y_{u,i}-\hat{y}_{u,i}|
δu,iMAE(Y,Y^)=∣yu,i−y^u,i∣
但是历史记录往往是MNAR(Missing Not At Random,非随机缺失)的,那么整体评级预测损失就是有偏的: E [ L o s s N a i v e ] = 1 ∑ u = 1 N ∑ i = 1 M p ( o u , i = 1 ) ∑ u = 1 N ∑ i = 1 M p ( o u , i = 1 ) δ u , i ( Y , Y ^ ) ≠ 1 N ⋅ M ∑ u = 1 N ∑ i = 1 M δ u , i ( Y , Y ^ ) \begin{aligned} \mathbb{E}[\mathcal{Loss}_{Naive}] & = \frac{1}{\sum^{N}_{u=1}\sum^{M}_{i=1}p(o_{u,i}=1)}\sum^{N}_{u=1}\sum^{M}_{i=1}p(o_{u,i}=1)\delta_{u,i}(Y,\hat{Y}) \\ & \neq \frac{1}{N\cdot M}\sum^{N}_{u=1}\sum^{M}_{i=1}\delta_{u,i}(Y,\hat{Y}) \\ \end{aligned} E[LossNaive]=∑u=1N∑i=1Mp(ou,i=1)1u=1∑Ni=1∑Mp(ou,i=1)δu,i(Y,Y^)=N⋅M1u=1∑Ni=1∑Mδu,i(Y,Y^)其中, p ( o u , i = 1 ) p(o_{u,i}=1) p(ou,i=1) 是指 u u u 浏览 i i i 的概率; 1 N ⋅ M ∑ u = 1 N ∑ i = 1 M δ u , i ( Y , Y ^ ) \frac{1}{N\cdot M}\sum^{N}_{u=1}\sum^{M}_{i=1}\delta_{u,i}(Y,\hat{Y}) N⋅M1∑u=1N∑i=1Mδu,i(Y,Y^) 指的是所有 u u u 对所有 i i i 平均评分损失,它是一种算术平均; E [ L o s s N a i v e ] \mathbb{E}[\mathcal{Loss}_{Naive}] E[LossNaive]指的是被浏览的 i i i 的期望评分损失,它是一种加权平均。
加权平均是有偏的,它的偏差就来自于给不同自变量分配的权值,在推荐任务中,这个权值指的就是物品被观测(浏览)到的概率。一种减轻MNAR反馈中偏差的影响的IPS估计法这样定义评级预测损失函数: L o s s I P S = 1 N ⋅ M ∑ ( u , i ) : o u , i = 1 δ ( Y , Y ^ ) p ( o u , i = 1 ) \mathcal{Loss}_{IPS}=\frac{1}{N\cdot M}\sum_{(u,i):o_{u,i}=1}\frac{\delta(Y,\hat{Y})}{p(o_{u,i}=1)} LossIPS=N⋅M1(u,i):ou,i=1∑p(ou,i=1)δ(Y,Y^)该公式的思想是消除权值(浏览概率)的影响,于是就有了无偏估计的公式: E [ L o s s I P S ] = 1 N ⋅ M ∑ u = 1 N ∑ i = 1 M p ( o u , i = 1 ) δ u , i ( Y , Y ^ ) p ( o u , i = 1 ) = 1 N ⋅ M ∑ u = 1 N ∑ i = 1 M δ u , i ( Y , Y ^ ) \begin{aligned} \mathbb{E}[\mathcal{Loss}_{IPS}] & = \frac{1}{N\cdot M}\sum^{N}_{u=1}\sum^{M}_{i=1}\frac{p(o_{u,i}=1)\delta_{u,i}(Y,\hat{Y})}{p(o_{u,i}=1)} \\ & = \frac{1}{N\cdot M}\sum^{N}_{u=1}\sum^{M}_{i=1}\delta_{u,i}(Y,\hat{Y}) \\ \end{aligned} E[LossIPS]=N⋅M1u=1∑Ni=1∑Mp(ou,i=1)p(ou,i=1)δu,i(Y,Y^)=N⋅M1u=1∑Ni=1∑Mδu,i(Y,Y^)注意到, L o s s I P S \mathcal{Loss}_{IPS} LossIPS 与 L o s s N a i v e \mathcal{Loss}_{Naive} LossNaive 的区别不仅仅在于消除权值,而且 L o s s I P S \mathcal{Loss}_{IPS} LossIPS 是整体的损失,而 L o s s N a i v e \mathcal{Loss}_{Naive} LossNaive 是浏览过的项目的损失。
所以要使这个公式真正起作用,必须知道全部项目的 p ( o u , i = 1 ) p(o_{u,i}=1) p(ou,i=1) 的具体值。在实际的应用中,历史交互数据中记录了部分评级数据,因此可以利用某种拟合方法来推断 p ( o u , i = 1 ) p(o_{u,i}=1) p(ou,i=1) 的模型,例如:
- 通过朴素贝叶斯进行倾向估计
p ( o u , i = 1 ∣ y u , i = r ) = p ( y = r ∣ o = 1 ) p ( o = 1 ) p ( y = r ) p(o_{u,i}=1|y_{u,i}=r)=\frac{p(y=r|o=1)p(o=1)}{p(y=r)} p(ou,i=1∣yu,i=r)=p(y=r)p(y=r∣o=1)p(o=1)其中 p ( y = r ∣ o = 1 ) p(y=r|o=1) p(y=r∣o=1) 和 p ( o = 1 ) p(o=1) p(o=1) 是通过MNAR数据集中的历史交互数据统计出来的。 p ( y = r ) p(y=r) p(y=r) 是从一个MCAR数据集获取的,这样就能计算出MCAR的 p ( o ( u , i ) = 1 ∣ y ( u , i ) = r ) p(o_{(u,i)}=1| y_{(u,i)}=r) p(o(u,i)=1∣y(u,i)=r)。这种方法必须要确保有部分可用的MCAR数据。并且它只能拟合出被评分过项目的浏览概率。 - 通过逻辑回归进行倾向估计
p ( o u , i ∣ X , ϕ ) = σ ( ω T X u , i + β i + γ u ) p(o_{u,i}|X,\phi)=\sigma(\omega^TX_{u,i}+\beta_i+\gamma_u) p(ou,i∣X,ϕ)=σ(ωTXu,i+βi+γu)其中, σ ( ⋅ ) \sigma(\cdot) σ(⋅) 是Sigmoid函数,用于将数值归一化; X u , i X_{u,i} Xu,i 是用户-项目对的特征; ϕ \phi ϕ 代表参数集合,包括: ω T \omega^T ωT 是权重参数、 β i \beta_i βi 是项目的偏置项参数、 γ u \gamma_u γu 是和用户的偏置项参数。这种方法不需要实现筛选出一个MCAR数据集,且可以拟合所有项目的浏览概率。
获得了权重 p ( o u , i = 1 ) p(o_{u,i}=1) p(ou,i=1) 后就可以预测对应的无偏评级了。需要说明的是,通过朴素贝叶斯进行倾向估计是相对简单易实现的方法,但这种方法得到的结果是没法直接用来产生推荐的,但是下一步已经很好继续下去了。例如可以使用矩阵分解(matrix factorization,MF)来预测其余项目的评分。
我随手找了一张矩阵分解方法的示意图,可以认为,拟合出权重 p ( o u , i = 1 ) p(o_{u,i}=1) p(ou,i=1) 的项目的无偏评级就是上表中红色的数值,未拟合出权重的项目评级就是上表中的问号。矩阵分解通过下面的公式将用户-物品交互矩阵分解成两个隐特征矩阵: y ^ u , i = p u T q i + a u + b i + c \hat{y}_{u,i}=\pmb{p}_u^T\pmb{q}_i+a_u+b_i+c y^u,i=pppuTqqqi+au+bi+c其中 p u \pmb{p}_u pppu 是用户的隐特征矩阵; q i \pmb{q}_i qqqi是项目的隐特征矩阵; a u a_u au、 b i b_i bi、 c c c分别是用户、项目和全局偏置项。那么此时,矩阵分解的损失函数就表达为: arg min P , Q , A ( ∑ ( u , i ) : o u , i = 1 δ ( Y , Y ^ ) p ( o u , i = 1 ) + λ ( ∥ P ∥ F 2 + ∥ Q ∥ F 2 ) ) \argmin_{\pmb{P},\pmb{Q},\pmb{A}}\biggl(\sum_{(u,i):o_{u,i}=1}\frac{\delta(Y,\hat{Y})}{p(o_{u,i}=1)}+\lambda(\Vert \pmb{P}\Vert^2_F+\Vert \pmb{Q}\Vert^2_F)\biggr) PPP,QQQ,AAAargmin((u,i):ou,i=1∑p(ou,i=1)δ(Y,Y^)+λ(∥PPP∥F2+∥QQQ∥F2))其中, ∑ ( u , i ) : o u , i = 1 δ ( Y , Y ^ ) p ( o u , i = 1 ) \sum_{(u,i):o_{u,i}=1}\frac{\delta(Y,\hat{Y})}{p(o_{u,i}=1)} ∑(u,i):ou,i=1p(ou,i=1)δ(Y,Y^)指的是无偏的预测评级与真实评级之间的损失, λ ( ∥ P ∥ F 2 + ∥ Q ∥ F 2 ) \lambda(\Vert \pmb{P}\Vert^2_F+\Vert \pmb{Q}\Vert^2_F) λ(∥PPP∥F2+∥QQQ∥F2)是为了防止过拟合加入的正则化项。优化的参数 P , Q , A \pmb{P},\pmb{Q},\pmb{A} PPP,QQQ,AAA分别代表用户的隐特征矩阵、项目的隐特征矩阵和偏置项,最终的预测评级就表示为: Y ^ = P T Q + A \hat{Y}=\pmb{P}^T\pmb{Q}+\pmb{A} Y^=PPPTQQQ+AAA这时候,之前未拟合出权重的项目评级也可以通过公式 Y ^ = P T Q + A \hat{Y}=\pmb{P}^T\pmb{Q}+\pmb{A} Y^=PPPTQQQ+AAA 计算得到了。