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

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

正文


当历史交互数据为MCAR(Missing Completely At Random,完全随机缺失)时,评级预测损失函数可以定义为:

1.png


其中,Y ^ 表示预测的评级;Y  表示 u 对 i i的实际评级;o u , i = 1  表示 u 对 i 有评级;∣ { ( u , i ) : o u , i = 1 } ∣ 表示所有被浏览项目的数量;δ u , i ( Y , Y ^ ) \表示 Y  与 Y ^  之间匹配程度的度量,可以定义为:


2.png

但是历史记录往往是MNAR(Missing Not At Random,非随机缺失)的,那么整体评级预测损失就是有偏的:

3.png

其中,p ( o u , i = 1 ) 是指 u 浏览 i  的概率;4.png指的是所有 u u 对所有 i ii 平均评分损失,它是一种算术平均;z5.png的是被浏览的 i ii 的期望评分损失,它是一种加权平均。

加权平均是有偏的,它的偏差就来自于给不同自变量分配的权值,在推荐任务中,这个权值指的就是物品被观测(浏览)到的概率。一种减轻MNAR反馈中偏差的影响的IPS估计法这样定义评级预测损失函数:

6.png

该公式的思想是消除权值(浏览概率)的影响,于是就有了无偏估计的公式:


7.png

注意到,8.png9.png的区别不仅仅在于消除权值,而且 8.png是整体的损失,而9.png浏览过的项目的损失。

所以要使这个公式真正起作用,必须知道全部项目的 p ( o u , i = 1 ) p(o_{u,i}=1)p(o

u,i


=1) 的具体值。在实际的应用中,历史交互数据中记录了部分评级数据,因此可以利用某种拟合方法来推断 p ( o u , i = 1 )  的模型,例如:

通过朴素贝叶斯进行倾向估计


10.png


其中 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)来预测其余项目的评分。

11.png

我随手找了一张矩阵分解方法的示意图,可以认为,拟合出权重 p ( o u , i = 1 )  的项目的无偏评级就是上表中红色的数值,未拟合出权重的项目评级就是上表中的问号。矩阵分解通过下面的公式将用户-物品交互矩阵分解成两个隐特征矩阵:

12.png


其中 p u  是用户的隐特征矩阵;q i 是项目的隐特征矩阵;a u 、b i  、c分别是用户、项目和全局偏置项。那么此时,矩阵分解的损失函数就表达为:


13.png

其中14.png指的是无偏的预测评级与真实评级之间的损失15.png是为了防止过拟合加入的正则化项。优化的参数P , Q , A 分别代表用户的隐特征矩阵、项目的隐特征矩阵和偏置项,最终的预测评级就表示为:16.png

这时候,之前未拟合出权重的项目评级也可以通过公式16.png计算得到了

相关文章
|
5天前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
122 6
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
16天前
|
机器学习/深度学习 存储 算法
动态规划算法深度解析:0-1背包问题
0-1背包问题是经典的组合优化问题,目标是在给定物品重量和价值及背包容量限制下,选取物品使得总价值最大化且每个物品仅能被选一次。该问题通常采用动态规划方法解决,通过构建二维状态表dp[i][j]记录前i个物品在容量j时的最大价值,利用状态转移方程避免重复计算子问题,从而高效求解最优解。
229 1
|
16天前
|
算法 搜索推荐 Java
贪心算法:部分背包问题深度解析
该Java代码基于贪心算法求解分数背包问题,通过按单位价值降序排序,优先装入高价值物品,并支持部分装入。核心包括冒泡排序优化、分阶段装入策略及精度控制,体现贪心选择性质,适用于可分割资源的最优化场景。
143 1
贪心算法:部分背包问题深度解析
|
17天前
|
机器学习/深度学习 边缘计算 人工智能
粒子群算法模型深度解析与实战应用
蒋星熠Jaxonic是一位深耕智能优化算法领域多年的技术探索者,专注于粒子群优化(PSO)算法的研究与应用。他深入剖析了PSO的数学模型、核心公式及实现方法,并通过大量实践验证了其在神经网络优化、工程设计等复杂问题上的卓越性能。本文全面展示了PSO的理论基础、改进策略与前沿发展方向,为读者提供了一份详尽的技术指南。
粒子群算法模型深度解析与实战应用
|
17天前
|
机器学习/深度学习 资源调度 算法
遗传算法模型深度解析与实战应用
摘要 遗传算法(GA)作为一种受生物进化启发的优化算法,在复杂问题求解中展现出独特优势。本文系统介绍了GA的核心理论、实现细节和应用经验。算法通过模拟自然选择机制,利用选择、交叉、变异三大操作在解空间中进行全局搜索。与梯度下降等传统方法相比,GA不依赖目标函数的连续性或可微性,特别适合处理离散优化、多目标优化等复杂问题。文中详细阐述了染色体编码、适应度函数设计、遗传操作实现等关键技术,并提供了Python代码实现示例。实践表明,GA的成功应用关键在于平衡探索与开发,通过精心调参维持种群多样性同时确保收敛效率
机器学习/深度学习 算法 自动驾驶
135 0
|
23天前
|
机器学习/深度学习 人工智能 资源调度
大语言模型的核心算法——简要解析
大语言模型的核心算法基于Transformer架构,以自注意力机制为核心,通过Q、K、V矩阵动态捕捉序列内部关系。多头注意力增强模型表达能力,位置编码(如RoPE)解决顺序信息问题。Flash Attention优化计算效率,GQA平衡性能与资源消耗。训练上,DPO替代RLHF提升效率,MoE架构实现参数扩展,Constitutional AI实现自监督对齐。整体技术推动模型在长序列、低资源下的性能突破。
193 8
|
24天前
|
算法 API 数据安全/隐私保护
深度解析京东图片搜索API:从图像识别到商品匹配的算法实践
京东图片搜索API基于图像识别技术,支持通过上传图片或图片URL搜索相似商品,提供智能匹配、结果筛选、分页查询等功能。适用于比价、竞品分析、推荐系统等场景。支持Python等开发语言,提供详细请求示例与文档。
|
26天前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
118 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
2月前
|
机器学习/深度学习 算法 文件存储
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
神经架构搜索(NAS)正被广泛应用于大模型及语言/视觉模型设计,如LangVision-LoRA-NAS、Jet-Nemotron等。本文回顾NAS核心技术,解析其自动化设计原理,探讨强化学习、进化算法与梯度方法的应用与差异,揭示NAS在大模型时代的潜力与挑战。
297 6
神经架构搜索NAS详解:三种核心算法原理与Python实战代码

热门文章

最新文章

推荐镜像

更多
  • DNS