zoukankan      html  css  js  c++  java
  • 推荐系统公平性论文阅读(三)

    这几天我的主要任务是调试和运行之前根据论文《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.
    数学是符号的艺术,音乐是上界的语言。
  • 相关阅读:
    @RequestParam注解使用:Name for argument type [java.lang.String] not available, and parameter name information not found in class file either.
    cglib动态代理导致注解丢失问题及如何修改注解允许被继承
    springboot Autowired BeanNotOfRequiredTypeException
    git根据用户过滤提交记录
    不同包下,相同数据结构的两个类进行转换
    How to use Jackson to deserialise an array of objects
    jooq实践
    java如何寻找main函数对应的类
    Python--matplotlib
    Python 和 Scikit-Learn
  • 原文地址:https://www.cnblogs.com/lonelyprince7/p/15374094.html
Copyright © 2011-2022 走看看