正文
当历史交互数据为MCAR(Missing Completely At Random,完全随机缺失)时,评级预测损失函数可以定义为:
其中,Y ^ 表示预测的评级;Y 表示 u 对 i i的实际评级;o u , i = 1 表示 u 对 i 有评级;∣ { ( u , i ) : o u , i = 1 } ∣ 表示所有被浏览项目的数量;δ u , i ( Y , Y ^ ) \表示 Y 与 Y ^ 之间匹配程度的度量,可以定义为:
但是历史记录往往是MNAR(Missing Not At Random,非随机缺失)的,那么整体评级预测损失就是有偏的:
其中,p ( o u , i = 1 ) 是指 u 浏览 i 的概率;指的是所有 u u 对所有 i ii 平均评分损失,它是一种算术平均;z指的是被浏览的 i ii 的期望评分损失,它是一种加权平均。
加权平均是有偏的,它的偏差就来自于给不同自变量分配的权值,在推荐任务中,这个权值指的就是物品被观测(浏览)到的概率。一种减轻MNAR反馈中偏差的影响的IPS估计法这样定义评级预测损失函数:
该公式的思想是消除权值(浏览概率)的影响,于是就有了无偏估计的公式:
注意到,与的区别不仅仅在于消除权值,而且 是整体的损失,而浏览过的项目的损失。
所以要使这个公式真正起作用,必须知道全部项目的 p ( o u , i = 1 ) p(o_{u,i}=1)p(o
u,i
=1) 的具体值。在实际的应用中,历史交互数据中记录了部分评级数据,因此可以利用某种拟合方法来推断 p ( o u , i = 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 ) )。这种方法必须要确保有部分可用的MCAR数据。并且它只能拟合出被评分过项目的浏览概率。
通过逻辑回归进行倾向估计
p ( o u , i ∣ X , ϕ ) = σ ( ω T X u , i + β i + γ u )
其中,σ ( ⋅ ) 是Sigmoid函数,用于将数值归一化;X u ,是用户-项目对的特征;ϕ 代表参数集合,包括:ω T是权重参数、β i 是项目的偏置项参数、γ u 是和用户的偏置项参数。这种方法不需要实现筛选出一个MCAR数据集,且可以拟合所有项目的浏览概率。
获得了权重 p ( o u , i = 1 ) 后就可以预测对应的无偏评级了。需要说明的是,通过朴素贝叶斯进行倾向估计是相对简单易实现的方法,但这种方法得到的结果是没法直接用来产生推荐的,但是下一步已经很好继续下去了。例如可以使用矩阵分解(matrix factorization,MF)来预测其余项目的评分。
我随手找了一张矩阵分解方法的示意图,可以认为,拟合出权重 p ( o u , i = 1 ) 的项目的无偏评级就是上表中红色的数值,未拟合出权重的项目评级就是上表中的问号。矩阵分解通过下面的公式将用户-物品交互矩阵分解成两个隐特征矩阵:
其中 p u 是用户的隐特征矩阵;q i 是项目的隐特征矩阵;a u 、b i 、c分别是用户、项目和全局偏置项。那么此时,矩阵分解的损失函数就表达为:
其中指的是无偏的预测评级与真实评级之间的损失是为了防止过拟合加入的正则化项。优化的参数P , Q , A 分别代表用户的隐特征矩阵、项目的隐特征矩阵和偏置项,最终的预测评级就表示为:
这时候,之前未拟合出权重的项目评级也可以通过公式计算得到了