当历史交互数据为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 ) 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 计算得到了。