逆向倾向评分 (Inverse Propensity Scoring, IPS) 原理解析与MF算法的结合使用

当历史交互数据为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,iy^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,iy^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=1Ni=1Mp(ou,i=1)1u=1Ni=1Mp(ou,i=1)δu,i(Y,Y^)=NM1u=1Ni=1Mδ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}) NM1u=1Ni=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=NM1(u,i):ou,i=1p(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]=NM1u=1Ni=1Mp(ou,i=1)p(ou,i=1)δu,i(Y,Y^)=NM1u=1Ni=1Mδ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) 的模型,例如:

  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=1yu,i=r)=p(y=r)p(y=ro=1)p(o=1)其中 p ( y = r ∣ o = 1 ) p(y=r|o=1) p(y=ro=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)=1y(u,i)=r)。这种方法必须要确保有部分可用的MCAR数据。并且它只能拟合出被评分过项目的浏览概率。
  2. 通过逻辑回归进行倾向估计
    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,iX,ϕ)=σ(ω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=1p(ou,i=1)δ(Y,Y^)+λ(PPPF2+QQQF2))其中, ∑ ( 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) λ(PPPF2+QQQF2)是为了防止过拟合加入的正则化项。优化的参数 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 计算得到了。

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白水baishui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值