手把手教你解决推荐系统中的位置偏差问题

作者 | 汪昊
审校 | 重楼
推荐系统最早的算法是1992 年发明的协同过滤 。自协同过滤算法诞生之日起,人们便与推荐系统中的各种不公平现象作斗争 。虽然推荐系统中的不公平现象广泛存在,并且严重影响了推荐系统的生态健康发展 , 这些现象真正引起人们关注却要等到2017年之后 。2017 年,在人类的人工智能发展历程中有个里程碑事件,就是国际学术会议 FacCT 的创建 。这个会议专门针对人工智能伦理,可以说把人工智能中的道德问题,包括推荐系统中的不公平性问题,暴露给了全世界的研究者 。

手把手教你解决推荐系统中的位置偏差问题

文章插图
那么问题来了,什么是推荐系统的不公平性?推荐系统作为一种算法,主要为用户推荐它可能感兴趣的物品 。该算法会出现过度推销热门产品、在推荐列表顶部推荐的物品过热等等一系列不公平问题 。其中在推荐列表顶部推荐的物品过热的问题,被称为位置偏差问题(Position Bias Problem),引起了学者的广泛关注 。
我们利用正则化的方式来处理位置偏差问题 。首先,我们把矩阵分解算法作为原生算法 。矩阵分解算法的损失函数定义如下:
手把手教你解决推荐系统中的位置偏差问题

文章插图
矩阵分解的本质就是利用降维手段修复原始矩阵中的缺失值 。在损失函数的定义里 , R 就是原始矩阵中已知的评分数据,U 是用户特征向量,而 V 是物品特征向量 。在实际的使用过程中,损失函数需要进行处理才能使用 。处理之后的损失函数如下:
手把手教你解决推荐系统中的位置偏差问题

文章插图
经过处理之后,算法可以避免数据出现异常值 。我们可以从另外一个角度去看这个问题,我们可以认为其实矩阵分解是保角降维运算(Angle-preserving Dimensionality Reduction) 。而 U 和 V 就是从高维空间降维处理过之后的向量空间 。
我们假设在推荐系统中 , 系统给每个用户都推荐了一个物品列表 。这个物品列表中所有的物品都被排列上了 。因此,最差的曝光情况就是一个物品被排在了列表最低端 。所以 , 我们可以利用这一点,设计出一个正则化项,用来惩罚损失函数 L :
手把手教你解决推荐系统中的位置偏差问题

文章插图
其中position 是物品在推荐列表中的位置,而 m 是所有物品的数量 。因为推荐列表中存在幂律效应,也就是越热门的物品越容易出现在列表的上方,而这类物品用户评分往往很高 。因此我们把损失函数 L 修正成如下的形式:
手把手教你解决推荐系统中的位置偏差问题

文章插图
下面我们用随机梯度下降方法来对损失函数 L 进行求解,得到了如下公式:
手把手教你解决推荐系统中的位置偏差问题

文章插图
以及:
手把手教你解决推荐系统中的位置偏差问题

文章插图

手把手教你解决推荐系统中的位置偏差问题

文章插图
以上就是整个算法的流程 。该算法由Ratidar Technologies LLC (北京达评奇智网络科技有限责任公司) 发表于国际学术会议CE.NET 2023 。论文标题为Mitigating Position Bias with
Regularization for Recommender Systems 。论文可以在arXiv.org 上进行下载:https://arxiv.org/ftp/arxiv/papers/2401/2401.16427.pdf  。
下面我们讨论一下该算法在不同的数据集合上的表现:作者采用了两个不同的数据集合进行算法测评:MovieLens 1 Million Dataset (6040 名用户,3706 部电影) 和LDOS-CoMoDa Dataset (121 名用户,1232 部电影) 。算法测试结果如下面6张图所示:
手把手教你解决推荐系统中的位置偏差问题

文章插图

手把手教你解决推荐系统中的位置偏差问题

文章插图
图1 至图 3 分别是该算法和另外几种算法在MovieLens 数据集上的测评效果 , 可以看到,不管是在准确率(测评指标为 Mean Absolute Error),热度偏差指标还是位置偏差指标的测评上 , 该算法均表现优异 。
手把手教你解决推荐系统中的位置偏差问题

文章插图

手把手教你解决推荐系统中的位置偏差问题

文章插图

手把手教你解决推荐系统中的位置偏差问题

文章插图


推荐阅读