这几天我的主要任务是调试和运行之前根据论文《Learning Fair Representations for Recommendation: A Graph-based Perspective》所编写的代码,然后测试该模型的效果并记录。以下分数据集描述、模型评估策略、超参数调整、测试结果记录四个部分来描述我的工作。
数据集描述
MovieLens-1M 是一个推荐系统的基准数据集,这个数据集包括6040个用户对于近4000部电影的近1百万条评分信息。用户具有三个类别型属性,包括性别(2种类别),年龄(7种类别)和职位(21个类别)。效仿之前的基于公平性的推荐系统,我们在测试时按照9:1的比例划分训练集和测试集。
Lastfm-360K是一个音乐推荐数据集,包括了来自音乐网站Last.fm的用户对音乐制作人的评分。这个数据集包括大约36万个用户对29万个音乐制作人的1700万条评分信息。我们将用户播放音乐的次数做为用户的评分值。因为评分的值可能在一个大的范围内,我们先对进行log对数变换,然后将评分规范化到1和5的范围之间。用户有着自己的用户画像,其信息包括性别属性(2种类别)、年龄属性(7种类别)。和许多经典推荐系统的数据划分策略一样,我们将训练集、验证集、测试集划分为7:1:2。
模型评估策略
为了评估推荐系统的表现,我们使用均方根误差(RMSE)。为了有效度量我们算法的公平性。我们计算了20%测试用户的公平性表现。
因为二值型特征(比如性别)在各数据集上都不平衡,有着70%的男性和30%的女性,我们使用AUC度量来度量二分类的表现。对于多值型属性,我们使用micro-averaged F1来测量。
AUC或者F1能够被用于测量是否敏感的性别信息在表示学习的过程中被暴露。这个这个分类的度量值越小,则说明系统的公平性越好,泄露的敏感信息更少。
因为我复现的这篇论文中的模型是“上游模型不可知”的(也就是说为了增强其泛用性,将上游模型看做黑盒模型来处理),并且能够被应用于许多多属性的推荐场景,故我们按照不同的模型评价设定设计了许多测试。
首先,我们选择了目前最先进的(state-of-the-art)图卷积网络(GCN)的推荐模型做为我们的基准模型。因为基于GCN的推荐模型最开始被设计成基于排名的损失函数,我们将其修改为基于评分的损失函数,并在图卷积的过程中添加了更详细的评分值来方便我们的设置。
超参数调整
在实际的模型实现中,我们选择多层感知机(MLP)做为每个过滤器和判别器具体的架构,过滤器的embedding size被设置为(D=64)。
对于MovieLens数据集,每个过滤器网络有3层,其中隐藏层的维度分别是128和64。判别器有4层,隐藏层的维度分别是16和8和4。
对于Lastfm-360K数据集,每个过滤器网络有4层,隐藏层维度分别为128,64,32。每个判别器
有4层,隐藏层维度分别是16,8和4。
我们使用LeakyReLU做为激活函数。在MovieLens数据集上将平衡参数(lambda)设置为0.1,在Lastfm-360K数据集上将平衡参数设置为0.2。所有目标函数中的参数都是可微的。我们使用Adam优化器,将初始学习率调整到0.005。
测试结果记录
下面的两张表是我们对模型的测试结果。在测试的过程中,为了简单起见,我们采取了简单的自中心图结构表示,并用一阶加权集成。根据模型的测试结果我们可以看出,GCN模型如果直接考虑敏感信息过滤器会将推荐系统的表现降低5%到10%,因为我们需要排除任何对于打分有用的隐向量维度,但是可能会暴露敏感信息。
在MovieLens-1M数据集上的训练过程如下:
ga0--train-- 383.52958726882935
epoch:1 time:383.5 train_loss f:-192.2718 d:19.5616val_loss f:-192.8258 d:19.2919
val_rmse:0.9045 test_rmse:0.895
train data is end
ga0--train-- 360.9422023296356
epoch:2 time:360.9 train_loss f:-191.72 d:19.4652val_loss f:-200.0517 d:20.0125
val_rmse:0.7063 test_rmse:0.6894
train data is end
ga0--train-- 363.16574025154114
epoch:3 time:363.2 train_loss f:-200.8263 d:19.2499val_loss f:-203.8944 d:20.4799
val_rmse:2.8324 test_rmse:2.8068
train data is end
ga0--train-- 355.92360401153564
epoch:4 time:355.9 train_loss f:-189.3184 d:19.3741val_loss f:-180.7054 d:18.0778
ga0 clf_age/4
no model save path
val_rmse:0.7821 test_rmse:0.7787age f1:0.4683 0.4683 0.4683 0.4683
train data is end
ga0--train-- 356.7487156391144
epoch:5 time:356.7 train_loss f:-198.0661 d:19.8271val_loss f:-190.4692 d:19.0536
ga0 clf_age/5
no model save path
val_rmse:0.7407 test_rmse:0.7326age f1:0.469 0.469 0.469 0.469
对于不同的自中心结构的不同摘要网络在数据集MovieLens-1M上的表现,这里的“常数”表示恒定的局部的函数聚集,“可学习的”表示参数可学习的聚集。
敏感属性 | RMSE | AUC/F1 |
---|---|---|
性别 | 0.8553 | 0.8553 |
年龄 | 0.8553 | 0.3948 |
职业 | 0.8553 | 0.1556 |
在Lastfm-360K数据集上的训练过程如下:
ga0
--------training processing-------
train data is end
ga0--train-- 380.44703578948975
epoch:0 time:380.4 train_loss f:-200.3726 d:19.7304val_loss f:-193.2152 d:19.3319
val_rmse:0.9439 test_rmse:0.9304
train data is end
ga0--train-- 383.52958726882935
epoch:1 time:383.5 train_loss f:-192.2718 d:19.5616val_loss f:-192.8258 d:19.2919
val_rmse:0.9045 test_rmse:0.895
train data is end
ga0--train-- 360.9422023296356
epoch:2 time:360.9 train_loss f:-191.72 d:19.4652val_loss f:-200.0517 d:20.0125
val_rmse:0.7063 test_rmse:0.6894
train data is end
ga0--train-- 363.16574025154114
epoch:3 time:363.2 train_loss f:-200.8263 d:19.2499val_loss f:-203.8944 d:20.4799
val_rmse:2.8324 test_rmse:2.8068
train data is end
ga0--train-- 355.92360401153564
epoch:4 time:355.9 train_loss f:-189.3184 d:19.3741val_loss f:-180.7054 d:18.0778
ga0 clf_age/4
no model save path
val_rmse:0.7821 test_rmse:0.7787age f1:0.4683 0.4683 0.4683 0.4683
train data is end
以下是在Lastfm-360K上的表现。
敏感属性 | RMSE | AUC/F1 |
---|---|---|
性别 | 0.7358 | 0.5642 |
年龄 | 0.7358 | 0.4953 |
参考文献
- [1] Wu L, Chen L, Shao P, et al. Learning Fair Representations for Recommendation: A Graph-based Perspective[C]//Proceedings of the Web Conference 2021. 2021: 2198-2208.