推荐系统公平性之校准化推荐--calibrated recommendations

2023-10-23 12:30

本文主要是介绍推荐系统公平性之校准化推荐--calibrated recommendations,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

主要参考论文:论文1《Calibrated Recommendations》、论文2《Crank up the volume: preference bias amplification in collaborative recommendation》

推荐系统中的偏好放大现象(preference bias amplification)

你是否有过这样的经历:某天在淘宝搜索了一样东西后,接下了一段时间的推荐都是关于这个物品的,哪怕你已经购买了这个物品或者你只是简单地搜来瞧瞧;在抖音上给某些视频点了赞,后面抖音会疯狂推荐这类视频给你,尽管你已经不想看这类视频了。

再举个直观的例子,佩琪在购物网站上购买了3条裙子和1双鞋子,那么接下来推荐系统会怎么给她推荐呢?
在这里插入图片描述
有很大的可能是,推荐系统只给她推荐裙子,因为推荐系统放大了她对裙子的偏好,从而忽略了她对鞋子的偏好。这可能给佩琪带来不好的使用体验。
在这里插入图片描述
换句话说,推荐系统的这种偏好放大现象将逐渐缩小用户的兴趣范围,类似于回声室效应。这对于推荐系统中的各个利益相关者都是不利的:
对于用户来说会让他们看到的东西越来越单一,丧失了多元化,让用户看不到本来想要的东西或者未来会感兴趣的东西。
对于物品方而言,部分类别的物品,特别是小众的物品,可能很少会有展示的机会。
对于推荐平台,就意味着这款APP让用户觉得乏味,没有用户粘度,从而造成用户流失。

为什么会出现偏好放大现象

  1. 从类别不平衡的分类问题角度来看。在类别不平衡的分类问题中,如果我们没有其他可用的信息,那么将结果全部预测为最多的那一类就可以得到最高的准确率。对于推荐来说,继续用上面的例子,如果我们没有别的可用信息,只知道佩琪购买的物品中75%都是裙子,那么我们只推荐裙子给她就可以得到最好的准确率。

  2. 从模型训练的角度来看。以BPR训练为例,在训练过程中为每个用户采样正样本时,数量占比多的类别被采样到的概率更大,所以训练时这种偏差就刻入模型中了,但这本不是错,相反这恰恰是个性化推荐所需要的,但错在往往得到的推荐结果会过分放大这种偏差,而没有维持住原有的比例。

校准化推荐(calibrated recommendations)

由于推荐系统存在的偏好放大现象,我们需要让推荐系统的结果更加符合用户的原始偏好,校准化推荐应运而生。用论文1中的例子:假设在某个用户的观影记录中,有70部爱情类电影和30部动作类电影,那么在推荐列表中的爱情类电影应该占70%,同时动作类电影应该占30%,这样就与用户的偏好相符。我们把推荐列表的这种特性称为校准(calibration)。

规范化描述,校准推荐的目标是让推荐列表按照合适的比例反映用户的兴趣偏好。

校准(calibration)与多样性(diversity)

典型的多样性的优化目标是最小化推荐列表中各物品间的相似度,用上面的例子来说,一个多样性的推荐列表只需要保证同时有爱情类电影和动作类电影就好了,当然如果有其他类别的电影,也应该加入到列表中,而且最好每种类别数量相等。

但calibration强调的是推荐列表中的各类别的电影要满足一定的比例,即尽可能地吻合用户的兴趣偏好。但却不具备多样性那样可以发现用户潜在兴趣类别的性质。

如何度量校准(calibration metrics)

  1. 为了评估我们的推荐结果和用户原始的兴趣偏好间的差异,我们可以假设用户历史记录中类别的分布为,推荐列表中类别分布为,那么可以计算两个分布间的f-散度(f-divergence)来量化它们间差异,值越小说明分布越接近,calibration就做得越好。
    如上面与多样性的对比时所述,如果我们想要让推荐结果的类型不那么死板,希望稍微地引入一些其他类别,以发现用户的潜在兴趣,我们可以让没出现在用户历史中的类别所对应的不为零。

  2. 我更偏爱论文2采用的指标:bias disparity。其同样是通过计算输入数据中的偏好与系统输出中的偏好间的差异(公式具体见论文2)。它既可以用来计算推荐系统对所有用户的偏好放大情况,也可以分别推荐系统对计算不同组(如男性和女性)的用户的偏好放大情况,且计算简便。

如何实现校准

在训练的时候,很难将calibration加入优化目标,所以实做上大多采用简单地重排序(re-rank),即先从推荐系统中得到以准确率为优化目标的推荐结果,再利用前面提到的度量指标,通过重排序来权衡准确率和calibration。

文献链接

  1. 《Calibrated Recommendations》
  2. 《Crank up the volume: preference bias amplification in collaborative recommendation》

希望我的文章可以给你们的工作或者学习带来一丝灵感,共勉~

这篇关于推荐系统公平性之校准化推荐--calibrated recommendations的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/267836

相关文章

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资