技术细分|推荐系统——推荐系统中的数据去偏方法

news2024/11/17 6:03:14

本篇的主要脉络同样依据中科大何向南教授、合工大汪萌教授联合在 TKDE 上的一篇综述文章展开:Bias and Debias in Recommender System: A Survey and Future Directions

下面按照前导文章中介绍的数据偏差 Selection Bias、Conformity Bias、Exposure Bias、Position Bias,分别介绍相应的去偏方法。Popularity Bias、Unfairness 以及如何减缓闭环累积误差的方法,暂时不会在本文中涉及。

一、基础概念

1. Propensity Score

Propensity Score 的详细介绍建议查看下文,,注意掌握几个变量定义:干预变量 T,结果变量 Y,混淆变量 X,观测变量 U

集智科学家:如何在观测数据下进行因果效应评估78 赞同 · 1 评论文章​编辑

    • 定义:在干预变量之外的其他特征变量为一定值的条件下,个体被处理的概率
    • 倾向指数概括了群体的特征变量,如果两个群体的倾向指数相同,那他们的干预变量就是与其他特征变量相独立的。对于药物实验来说,如果能保证两群人的他吃药的概率完全一样,那么可以说这两群人其他特征分布也是一样
    • 倾向指数在实际应用中观测不到,但可以使用有监督学习的方法进行估计,一般是回归

在推荐中来说“被处理”可以理解为“被观测到”,如何计算某个 item 被某个 user 观测到的概率?容易想到的思路是在保持其他条件相同再计算概率,例如排序队列位置不同时重复同个 user 在同个 item 上的观测概率,但这种理想情况一般会伤害用户体验。

如何计算 Propensity Score 是一个独立问题,可以 naive 的统计方法(统计历史上同位置的平均点击率)、隐变量学习(例如 click models 中预估 position bias 的方法,可以参考我之前的文章  成指导:深入点击模型(二)PBM, UBM 与 EM 算法),或者 [SIGIR 2018] Unbiased Learning to Rank with Unbiased Propensity Estimation 中介绍的通过对偶学习 Ranking Model 和 Propensity Model 来求解 Propensity Score 思路,也可以用于参考。

2. 点击模型(click models)

介绍点击模型之前,需要区分 click models 区别于 FM/FFM/Wide&Deep/DeepFM 等一系列近年大火的 CTR 模型,点击模型关注更多的是可解释性,通过人为知识提出先验假设,再通过概率图模型独立建模各因素,更多时候依赖于 EM 算法求解。因此各种 bias 其实都可以作为其中一个因素存在于概率图,然后被求解出来。点击模型被广泛使用于解决 exposure bias/ position bias 中,之前我有两篇文章深入介绍过点击模型,这里就不重复写了:

  1. 成指导:深入点击模型(一)RCM, CTR, CM 与 极大似然估计
  2. 成指导:深入点击模型(二)PBM, UBM 与 EM 算法

二、数据偏差

数据偏差的处理方法有一些共通思路,这里先把共通思路介绍一下,再分开介绍各种 Bias 的独特处理方法。一般需要去偏的步骤有 2 个,分别是在评估中去偏、训练中去偏。

1. 评估去偏

评估推荐系统在评分预测、推荐准确率上的常见 user-item 评估度量指标吧δ_{u,i}可以是 AUC、MAE、MSE、DCG@K、Precision@K,对多个评分样本的评估度量 H(R^) ,一般是单个样本度量的加权平均。这里“多个样本”常规做法是指观测到的样本而不是真实的全量样本,此时会出现 selection bias 造成的评估指标上的偏差,修正后的评估度量为 

常用工具有 Propensity Score(倾向分数) 。做法是在单个样本的评估指标中加入 IPS(逆倾向得分,即倾向指数的倒数),倾向性 P_{u,i}定义为观测某个 user-item 评分值的边际概率 P(O_{u,i}=1) ,因此修正评估度量

2. 训练去偏

  1. 数据代入法。数据偏差的本质是缺少无偏数据,那么通过协同过滤、社交关系加强等方式,补充尽可能相似的数据源,并且根据相似程度决定数据源的贡献程度
  2. 倾向分数。这个比较好理解,利用 IPS(逆倾向分数)修正每组样本的 loss 贡献值,如  ,其中Reg(θ) 是参数的正则化限制
  3. Meta Learning。Meta Learning 的 motivation 就是如果模型可以先在数据较多的数据集上学到这些有关“该如何学习新的知识”的先验知识,由此让模型先学会“如何快速学习一个新的知识”,再去数据较少的数据集上学习就变得很容易了。这么看 Meta Learning 完美契合 selection bias 的解决方案,但因为这是个独立学科方向,建议参考以下回答单独理解:

什么是meta-learning?599 关注 · 17 回答问题​编辑

三、选择偏差

1. 评估去偏

  • ATOP
ATOP 是另一种度量推荐系统效果的无偏指标。ATOP 方法同时建立在 2 个假设之上:(1)高相关性评分在观测数据上是随机缺失的;(2)其他评级值允许任意丢失数据机制只要丢失的概率高于相关的评分值。这两个假设实际上较难同时符合,因此 ATOP 的应用也较少
为用户 u 已观测到的相关性 item 的个数,  为在 TopK item 中的个数,作者证明 ATOP 是对平均召回率的无偏估计,并与用户的平均精度成正比

2. 训练去偏

Doubly Robust 模型。这个方法需要根据已有数据,再学习一个预测的模型反事实评估某个个体在干预变量变化后,结果变量的期望值。经过证明,只要倾向指数的估计模型和反事实预测模型中有一个是对的,计算出的平均因果效应就是无偏的;但如果两个模型估计都是错误的,那产生的误差可能会非常大(看起来也并非多么 robust)。

四、一致性偏差

conformity bias 大多数情况下是由于人们的“从众心理”导致的,比较简单的处理方法就是将投票人数(样本数量)、投票分布、得分平均值,都作为建模的输入信号,用一个拟合器去拟合去偏后的修正得分值。本质上就是希望把“社会因素“作为考虑的一部分。

五、曝光偏差

1. 训练去偏

  • 倾向分数
类似 selection debias 小节,使用逆倾向分数计算即可。当计算度量指标的时除以倾向分数。这里提一篇文章 [WSDM 2020] Unbiased Recommender Learning from Missing-Not-At-Random Implicit Feedback,先假设: 即物品必须曝光给用户且相关才会发生点击。之后定义了一个理想化的 loss 函数对 label=0/1 的样本求损失和,每个样本会被相关性等级度量: 
经过去偏操作之后,能够得到修正后的损失函数无偏预估值形式:
  • 采样
虽然曝光的内容有偏,但是一般学习中使用到的正负样本都是采样得到的,那么这里就有一个阶段需要独立处理:采样。而在一般的信息检索问题中,负例一般是远远大于正例,所以对冗余的负例选择性采样是一个需要探索的问题。可以使用最简单的随机采样,或者对于比较流行的负例内容做重复采样(流行数据一般经过充分曝光,负例程度比较确信)。更复杂的思路里,会把样本的 side information 或者图关系作为预测采样率的工具,按照采样率工作。
这里多说一点,实际工作中,我们尝试对于未曝光的样本,适当采样作为”伪负样本“(因为不确定未曝光是正是负,但因为推荐问题中正例占比很低)可以增加模型的泛化能力。

六、位置偏差

Position bias 广泛存在于搜索系统中(大家自己想想是不是经常性点击百度/谷歌搜索结果的第一位返回结果),推荐系统中也同样存在。而经典去偏方法就是使用点击模型(包括 click models 的各种书籍或经典论文中,一般也都是拿 position bias 作为分析示例)。同理,逆倾向分数同样适用。点击模型、倾向分数的解释,请参考本文的文章开头。

在神经网络 CTR 模型中,华为发表的[RecSys 2019] PAL: A Position-bias Aware Learning Framework for CTR Prediction in Live Recommender Systems,以及 Youtube 发表的 [RecSys 2019] Recommending What Video to Watch Next: A Multitask Ranking System,尝试过将 position bias 作为多塔建模的单独一塔或作为独立一塔的主要输入,并且显式地通过 logits 相乘来反应即物品必须曝光给用户且相关才会发生点击,而是否曝光仅与物品所处位置 决定。


至此,常见数据偏差的去偏思路与方法已经介绍完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1242497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊防关联要注意什么?看这一篇,防关联有技巧!

亚马逊账号关联的问题,对于跨境电商来说都不陌生,店铺的安全问题往往和账号关联有关,一旦亚马逊账号被关联就很可能导致我们的店铺被封,对于被亚马逊封店的卖家都会有申诉机会,如果无法成功申诉,那将永久被…

C/C++ 递归指数型枚举

个人主页:仍有未知等待探索_C语言疑难,数据结构,小项目-CSDN博客 专题分栏:算法_仍有未知等待探索的博客-CSDN博客 目录 一、前言 二、递归指数型枚举 1、题目信息 题目描述 输入格式 输出格式 样例 提示 2、解析 3、代码 一、前言 之前进行枚举…

亚马逊智能机器人Astro新升级!可为中小企业提供巡逻服务

原创 | 文 BFT机器人 Astro是Amzon近年来推出的一种新型的家用机器人,由智能助手Alexa驱动,主要用于家庭监控,如检查炉子、水龙头是否开着,以及其他任务。它将人工智能、计算机视觉、传感器技术以及语音和边缘计算方面的新进展汇…

windows11下安装Tensor RT,并在conda虚拟环境下使用

建议仔细读一读NVIDIA官方出的安装教程,里面有windows、linux等安装教程,非常详细,这里再做一下简要总结。 TensorRT主要有三种安装模式、五种安装方式 毫无疑问,在windows系统中,我们只能选择zip安装。 安装tensorR…

深度解析 Docker Registry:构建安全高效的私有镜像仓库

文章目录 什么是Docker Registry?Docker Hub vs. 私有RegistryDocker Hub:私有Registry: 如何构建私有Docker Registry?步骤一:安装Docker Registry步骤二:配置TLS(可选)步骤三&…

SiP封装、合封芯片和芯片合封是一种技术吗?都是合封芯片技术?

合封芯片、芯片合封和SiP系统级封装经常被提及的概念。但它们是三种不同的技术,还是同一种技术的不同称呼?本文将帮助我们更好地理解它们的差异。 一、合封芯片与SiP系统级封装的定义 首先合封芯片和芯片合封都是一个意思 合封芯片是一种将多个芯片&a…

selenium 简单案例 <批量下载文件> <网页自动化点击上报>

一、批量下载文件 网页分析 点击跳转到下载页面 from selenium import webdriver import timedef get_link_list():# 创建浏览器对象driver webdriver.Chrome(executable_pathrC:\Users\nlp_1\Desktop\chromedriver\chromedriver-win32\chromedriver.exe)url https://www…

vscode提交代码到Gitee(保姆教程)

Visual Studio Code(VSCode) 提交代码到Gitee(保姆教程) 1 环境配置1.1 git本地安装1.2 Vscode安装1.3 配置注册gitee账号 2 Vscode代码提交到Gitee2.1 新建仓库2.2 Vscode提交代码 1 环境配置 电脑需要已经安装好的Vscode已经配…

交直流一体化电源系统测试步骤详解

交直流一体化电源拥有高度适应性,可以用于不同的电力需求领域。但是为了确保其质量和性能,需要对交直流一体化电源进行各项测试以保证正常工作。本文纳米软件将介绍交直流一体化电源的测试方法,以及如何用交直流一体化电源测试系统进行测试。…

Mapbox中点图层和面图层点击事件重叠,禁止点击穿透方案

使用mapbox的小伙伴们可能都遇到过这个问题,就是当地图上有两个图层,一个面图层一个点图层,二者相重合的时候。假设我们想点击点位弹窗展示一些内容,也想点击面图层的时候弹窗展示一些内容,这时候一个有意思的问题就产生了,就是点击点位弹窗的时候面图层对应的弹窗也会弹…

羊大师详解羊奶如何帮助控制血压

羊大师详解羊奶如何帮助控制血压 羊奶是一种珍贵的天然饮品,不仅具有丰富的营养成分,还被证实对血压具有调控作用。很多人在了解到羊奶的功效后,都对其与血压之间的关系产生了浓厚的兴趣。接下来,小编羊大师将为大家详细介绍羊奶…

如何通过类似于Android adb install apk 命令安装三方Harmony Hap包

安装命令 hdc install xxx.hapOpenHarmony设备安装Hap应用的五种方式 https://www.51cto.com/article/762223.htmlhttps://www.51cto.com/article/762223.html DevEco Studio 3.1为例新建个项目,点击File->Project Structure 进入签名页面然后点击Sign in登录华…

Docker | Docker入门安装

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:Docker系列 ✨特色专栏: My…

使用Pytorch从零开始构建Transformer

在本教程中,我们将使用 PyTorch 从头开始​​构建一个基本的 Transformer 模型。Vaswani 等人提出的 Transformer 模型。在论文“Attention is All You Need”中,是一种专为序列到序列任务(例如机器翻译和文本摘要)而设计的深度学…

C++算法入门练习——相同的二叉查找树

将第一组n​个互不相同的正整数先后插入到一棵空的二叉查找树中,得到二叉查找树T1​;再将第二组n个互不相同的正整数先后插入到一棵空的二叉查找树中,得到二叉查找树T2​。判断T1​和T2​​是否是同一棵二叉查找树。 二叉查找(搜索)树定义&am…

python变量、常量、数据类型

一、变量 变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变量可以…

Delphi 12 Athens 发布了!

官方安装包 ☞ https://altd.embarcadero.com/download/radstudio/12.0/RADStudio_12_0_4915718.iso 安装辅助工具、控件可以戳这里 :Delphi 12 资源 RAD Stuido 12 Athens ,这次更新的细节还是比较多的,但主要还是多端(iOS、An…

来聊聊JVM中的类加载过程以及双亲委派模型(学习Java必知内容)

文章目录 1. 类加载过程加载验证准备解析初始化 2. 双亲委派模型一个类的加载流程双亲委派模型的优点 总结 1. 类加载过程 在整个 JVM 执行过程中, 和我们程序员关系最密切的就是类加载的过程, 所以接下来我们来看下类加载的执行流程. 对于一个类来说, 它的生命周期是这样的:…

盘点63个Python登录第三方源码Python爱好者不容错过

盘点63个Python登录第三方源码Python爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 链接:https://pan.baidu.com/s/1l7oooH9YovHmWzQ_58FRdg?pwd8888 提取码:8888 项目名称 A headless…

安卓手机好用的清单软件有哪些?

生活中每个人都有丢三落四的习惯,伴随着生活节奏的加快,人们常忘事的情况会更加频繁的出现,这时候很多人就开始选择手机上记录清单类的软件,安卓手机在手机市场中占有很大的分量,在安卓手机上好用的记录清单的软件有哪…