技术细分|推荐系统——推荐系统中的偏差

一、背景

推荐系统中大量使用用户行为数据,作为系统学习的标签或者说信号。但用户行为数据天生存在各式各样的偏差(bias),如果直接作为信号的话,学习出的模型参数不能准确表征用户在推荐系统中的真实行为意图,造成推荐效果的下降。


因此,本篇聊一聊推荐系统中常见的偏差,与相应的去偏思路与方法。

Bias and Debias in Recommender System: A Survey and Future Directions

二、推荐的反馈闭环

推荐系统是由用户、数据、模型,三者互相作用产生的一个动态的反馈闭环。闭环分为三个阶段:

  • User -> Data

    • 用户会产生大量的 user-item(对抖音是用户-视频、对头条是用户-文章)交互数据,以及各类周边信息包括 user 特征、item 属性、交互上下文信息等。其中 user-item 交互数据中 user 集合被表示成 U={u1,...,un} ,item 集合被表示成 I={i1,...,im}
    • user 与 item 两者间互相作用形成反馈矩阵(feedback matrix),类型分为两种:
      • 隐式反馈:表示为 X=R^{n×m},矩阵中元素x_{u,i} 是二值化 0、1 取值表示 user u 是否发生与 item i 的交互行为(bool 类型,例如购买、点击、查看等行为)
      • 显式反馈:表示为 R=R^{n×m},矩阵中元素 r_{u,i} 是 user u 对 item i 的评分(float 类型,例如豆瓣评分
  • Data -> Model

    • 根据历史观测数据,训练模型预测 user 是否采纳 item 的程度。
  • Model -> User

    • 模型返回预测推荐结果给到用户,进一步影响用户的未来行为和决策。

三个阶段不断循环,在闭环中逐渐加剧各阶段的 bias,会造成更严重的问题。

三、常见偏差

3.1 数据偏差

1.显式反馈数据 - Selection Bias

定义:当用户可以自由选择 item 进行评分,可观测到的评分并不是所有评分的有代表性样本。换而言之,评分数据是“非随机缺失”(missing not at random, MNAR)的

这个偏差的来源比较好理解,我们也可以想想自己是不是也是这样: 倾向于评分喜爱的 item(例如,热衷粉丝的电影、歌曲等) ,倾向于评分特别好或者特别差的 item(例如,去看电影很想夸好片,很想喷烂片)

2. 显式反馈数据 - Conformity Bias

定义:用户评分倾向于与其他人相似,即使是完全基于他们自己的判断,也会受到影响

这个偏差是由从众心理导致的。对于大众一致喜欢/讨厌的 item,个体用户做判断时经常会受到外界声音的影响

3. 隐式反馈数据 - Exposure Bias

定义:仅有一部分特定 item 曝光给了用户,因此没有观测到的交互行为并不直接等同于是训练中的负例

可以想一想,对于没有产生交互行为(没有点击、购买等行为)的数据样本而言,其实是由 2 个原因造成:

  1. 用户的确不喜欢当前 item;
  2. 当前 item 没有曝光给用户(对于从没刷到过的视频,我们无法确定自己是否喜欢)

对于数据曝光问题,之前的研究有几个角度:

  1. 当前版本的曝光取决于上一个推荐系统版本的策略,决定了如何展现;
  2. 因为用户会主动搜索或寻找感兴趣的 item,因此用户选择成为了影响曝光的因素,使得高度相关/吸引力(例如标题党、美女图片类新闻)的 item 更容易被曝光;
  3. 用户的背景关系是影响曝光的一个因素,例如好友、社区、地理位置等因素会影响曝光;
  4. 流行的 item 会更容易曝光给用户,因此 Popularity Bias 是另一种形式 Exposure Bias

4. 隐式反馈数据 - Position Bias

定义:用户倾向于无视相关性地去对推荐列表中更高位置上的 item 产生交互行为

位置偏差在搜索系统中是一个经典并持续存在的偏差,同样在推荐系统中也会存在,用户普遍会对于头部观测到的 item 产生更多点击(还没有产生审美疲劳?)。尤其会对“用户点击行为”作为正例信号进行学习的模型,位置偏差会在训练、评估阶段产生错误影响

3.2 模型偏差

5. Inductive Bias

偏差不一定总是有害的,实际上一些归纳偏差被故意加入到模型设计中为了实现某些特性

定义:为了模型更好地学习目标函数并且泛化到训练数据上,会设置一些模型假设。假设未必都是准确的,会产生一些偏差

列举某些经典的假设(未必造成有害影响):
  1. 用户交互行为可以由向量内积表示(paper)
  2. Adaptive negative sampler 提出用于增加学习速度,即使结果损失函数不同于最初分布
  3. CNN 网络的局部特征重要性

3.3 推荐结果的偏差与不公平性

6. Popularity Bias

定义:流行的 item 会被更频繁地推荐、产生用户交互

长尾效应或者说二八定律带来了这个偏差,会降低个性化层次、用户对于平台的惊喜体验,造成马太效应

7. Unfairness

定义:整个系统不公平歧视某些群体用户

这个偏差的本质原因是数据的不平衡性,会带来社会性问题(年龄、性别、种族、社交关系多少等歧视)。不公平的数据,会造成更不公平的用户体验,产生恶循环

不公平性更多是由于系统数据分布不平衡造成的,例如某个基本由中老年用户组成的 app 较难对于年轻用户的行为进行建模,系统推荐出的视频会更倾向于有“年代感”

3.4 反馈闭环加剧各类偏差

User->Data->Model->User 的不断循环,会在已有偏差的基础上,进一步放大偏差

这篇文章简单介绍了一些推荐系统中常见的偏差 bias,并进行了一些简单的分类。这里的分类体系并非绝对合理但却具有一定代表性。后续文章中,会讨论如何解决这些偏差的常见方法与套路,会涉及更多的公式与计算方法。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UEC++ day8

伤害系统 给敌人创建血条 首先添加一个UI界面用来显示敌人血条设置背景图像为黑色半透明 填充颜色 给敌人类添加两种状态表示血量与最大血量,添加一个UWidegtComponet组件与UProgressBar组件 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category "Enemy …

Vue中使用Echarts实现数据可视化

文章目录 引言一、安装Echarts二、引入Echarts三、创建图表容器四、初始化Echarts实例五、配置图表选项和数据六、实现图表更新七、Vue实例代码结语我是将军,我一直都在,。! 引言 接着上一篇内容,我将继续分享有关数据可视化的相…

Docker | Docker入门安装

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

人工智能:一种现代的方法 第十四章 概率推理

文章目录 人工智能:一种现代的方法 第十四章 概率推理本章前言14.1 不确定性问题域中的知识表示14.1.1 联合概率分布14.1.2贝叶斯网络 14.2 贝叶斯网络的语义14.2.1表示联合概率分布14.2.2 紧致性14.2.3 节点排序14.2.4 贝叶斯网络中的条件独立关系14.3 条件分布的有…

找JPG格式图片的地址(持续更新中)

问题描述:找JPG格式图片的地址 解决办法: 第一个 谷歌的images 第二个,搜狗图片和百度图片 不过下载是WEBP格式,可以使用一个在线WEBP格式转JPG格式的在线网站即可。 转换的网址为: https://ezgif.com/webp-to-j…

tp8 使用rabbitMQ(2)工作队列

代码的参数说明在 第一小节的代码中,如果需要可移步到第一节中查看 工作队列 工作队列(又称:任务队列——Task Queues)是为了避免等待一些占用大量资源、时间的操作。当我们把任务(Task)当作消息发送到队列…

完美解决AttributeError: module ‘numpy‘ has no attribute ‘typeDict‘

文章目录 前言一、完美解决办法安装低版本1.21或者1.19.3都可以总结 前言 这个问题从表面看就是和numpy库相关,所以是小问题,经过来回调试安装numpy,发现是因为目前的版本太高,因此我们直接安装低版本numpy。也不用专门卸载目前的…

如何解决跨国访问Microsoft 365网络卡顿问题?

作为主流的协调办公工具,Microsoft 365(旧称Office 365)是众多企业每天必须访问的应用,但由于多种原因,许多企业在跨区域访问Microsoft 365服务器时常面临卡顿、掉线等问题,对工作效率产生严重影响。 对此,连官方也专门…

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…

使用原生js通过ajax实现服务器渲染的简单代码和个人改进

文章目录 前文提要代码实现主要参考服务器渲染实现逻辑网页呈现效果 代码分段讲解提要html的body部分css部分js部分xhr.open函数AJAX-onreadystatechange事件function函数简写方法附件功能:选中行 高亮 代码全文 前文提要 本文仅做个人学习记录,如有错误…

交通管理中的利器:揭秘交通监控大屏的优势和应用场景

交通监控大屏是一种用于监控交通情况的大屏展示方式,能够实时展示交通状况、车流量、车速等数据,为交通管理提供数据支持和决策参考。本文将介绍交通监控大屏的优势、应用场景和未来发展趋势。 一、交通监控大屏的优势 交通监控大屏的主要优势包括&…