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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 逆向倾向评分 (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计算得到了

相关文章
|
8天前
|
算法 容器
令牌桶算法原理及实现,图文详解
本文介绍令牌桶算法,一种常用的限流策略,通过恒定速率放入令牌,控制高并发场景下的流量,确保系统稳定运行。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
令牌桶算法原理及实现,图文详解
|
17天前
|
负载均衡 算法 应用服务中间件
5大负载均衡算法及原理,图解易懂!
本文详细介绍负载均衡的5大核心算法:轮询、加权轮询、随机、最少连接和源地址散列,帮助你深入理解分布式架构中的关键技术。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
5大负载均衡算法及原理,图解易懂!
|
12天前
|
算法 Linux 定位技术
Linux内核中的进程调度算法解析####
【10月更文挑战第29天】 本文深入剖析了Linux操作系统的心脏——内核中至关重要的组成部分之一,即进程调度机制。不同于传统的摘要概述,我们将通过一段引人入胜的故事线来揭开进程调度算法的神秘面纱,展现其背后的精妙设计与复杂逻辑,让读者仿佛跟随一位虚拟的“进程侦探”,一步步探索Linux如何高效、公平地管理众多进程,确保系统资源的最优分配与利用。 ####
45 4
|
13天前
|
缓存 负载均衡 算法
Linux内核中的进程调度算法解析####
本文深入探讨了Linux操作系统核心组件之一——进程调度器,着重分析了其采用的CFS(完全公平调度器)算法。不同于传统摘要对研究背景、方法、结果和结论的概述,本文摘要将直接揭示CFS算法的核心优势及其在现代多核处理器环境下如何实现高效、公平的资源分配,同时简要提及该算法如何优化系统响应时间和吞吐量,为读者快速构建对Linux进程调度机制的认知框架。 ####
|
16天前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
31 1
|
21天前
|
数据采集 存储 编解码
一份简明的 Base64 原理解析
Base64 编码器的原理,其实很简单,花一点点时间学会它,你就又消除了一个知识盲点。
59 3
|
23天前
|
算法 数据库 索引
HyperLogLog算法的原理是什么
【10月更文挑战第19天】HyperLogLog算法的原理是什么
38 1
|
3天前
|
存储 供应链 物联网
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景
|
3天前
|
存储 供应链 安全
深度解析区块链技术的核心原理与应用前景
深度解析区块链技术的核心原理与应用前景
10 0
|
18天前
|
供应链 安全 分布式数据库
探索区块链技术:从原理到应用的全面解析
【10月更文挑战第22天】 本文旨在深入浅出地探讨区块链技术,一种近年来引起广泛关注的分布式账本技术。我们将从区块链的基本概念入手,逐步深入到其工作原理、关键技术特点以及在金融、供应链管理等多个领域的实际应用案例。通过这篇文章,读者不仅能够理解区块链技术的核心价值和潜力,还能获得关于如何评估和选择适合自己需求的区块链解决方案的实用建议。
37 0

推荐镜像

更多