推荐系统公平性之校准化推荐--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

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入