专栏首页机器学习与推荐算法SIGIR2020 | 基于GCN的鲁棒推荐系统研究

SIGIR2020 | 基于GCN的鲁棒推荐系统研究

近年来,推荐系统已成为所有电子商务平台中必不可少的组件。然而,推荐系统的评分数据通常来自开放平台,而开放平台可能会存在一群恶意用户故意插入虚假反馈,以使推荐系统倾向于他们的偏爱(Shilling Attack)。我们通常假设用户的评分数据始终是可用的,并且这些数据确实可以反映用户的兴趣和偏好。然而此类攻击的存在违反了常规建模的假设。因此,构建一个健壮的推荐系统,即使在出现此类攻击的情况下也能够生成稳定的推荐结果,具有重大的实际意义。

所以,今天给大家推荐的论文是一篇来自于SIGIR2020的关于利用图卷积网络(GCN)提高推荐系统鲁棒性的文章。该文的整体结构框架可见下图。

该文提出了一种端到端的统一的学习框架来执行鲁棒的推荐(Robust Recommendation)和欺诈检测(Fraudster Detection)两种任务。在其端到端学习的过程中,基于GCN搭建的推荐组件输出的预测误差可以作为欺诈者检测组件中的重要特征;同时,在欺诈者检测组件中将用户识别为欺诈者的概率可以自动确定该用户的评分数据在推荐组件中的贡献;因此,这两个组件可以相互增强。通过进行广泛的实验,结果表明了该算法在两项任务中的优势-鲁棒的的评分预测和欺诈者检测。

该文的亮点在于将推荐任务和欺诈检测任务互补的结合在一个整体的框架中,推荐组件中的预测误差作为了欺诈检测组件中的特征,欺诈检测组件中的预测结果作为了推荐组件中的特征。同时,该文作者结合异常检测的背景手工进行了特征构造,然后用于GCN的输入,可见要想卷的好,输入特征是关键。最后,该任务的数据集也是关键点,需要区分出一些真实用户和欺诈用户,虽然文章中提到了利用给定的算法来进行区分,但区分算法的好坏直接影响了后续任务的性能。

推荐组件

更具体的,对于基于GCN的推荐组件来看,其损失函数为平方损失。与一般的损失函数不同的是增加了欺诈检测组件中真实用户的概率

,即如果该用户的真实性概率较大,那么其在整个推荐任务中的比重会被增强。

其中值得注意的是,对于图卷积网络(GCN)中的用户结点的属性信息

是作者手工构造的,比如评分数目、名字长度、时间差等能反映用户是否异常的属性,具体特征详见下图。

欺诈检测组件

对于欺诈检测组件来看,就是普通的二分类任务,只不过在这用的分类模型为神经随机森林(Neural Random Forest ),其损失函数为交叉熵损失。

其中值得注意的是,这部分把推荐组件中的预测误差(Prediction Error)作为了该组件的附加特征,具体的公式为:

其中,

表示用户所有交互的项目集合。

因此,最终总的损失函数可以表示为两者的总和。

其中,

是超参数用来控制两部分的权重。


实验部分略去,大家可阅读原始论文。

论文地址:

dl.acm.org/doi/pdf/10.1145/3397271.3401165

视频讲解:

sigir-schedule.baai.ac.cn/poster/fp0131

本文分享自微信公众号 - 机器学习与推荐算法(ML_RSer),作者:张小磊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 社会化推荐浅谈

    不知道大家有没有这样的感觉,本人一直觉得社交网络这个东西是一个很有意思的玩意儿,起初觉得它有意思也可能是由于这个可爱的名词-Social Network,也可能...

    张小磊
  • “推荐系统”加上“图神经网络”

    SIGIR'19的一篇论文Neural Graph Collaborative Filtering(NGCF)介绍了用图神经网络(GNN)来增强协同过滤推荐系统...

    张小磊
  • 利用对抗技术来权衡推荐精度与用户隐私

    任何需要做两方权衡并且最终寻求一种平衡的问题其实都可以转化为对抗学习的范式,比如图像生成任务中既要保证生成图片的质量又要确保判别器的识别精度;推荐任务中既要保证...

    张小磊
  • 超值赛题分享大礼包,你的“六一”礼物来咯!

    大家好,我是王贺,在本届腾讯广告算法大赛初赛阶段的得分为1.458744,暂列排行榜第一名。上一次分享的文章——《大神干货:冠军选手分享解题思路,助你轻松突围初...

    腾讯智能钛AI开发者
  • 【干货】促活、留存?关于用户激励机制的几点深入思考

    用户1756920
  • Git 程序员篇

    图中我们可以看出此时 “HEAD” 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

    IT茂茂
  • Python——Scrapy初学

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。Scrapy最初是为了页面抓...

    闪电gogogo
  • 大数据24小时 | 百度将建互联网保险公司,蚂蚁金服难掩野心2.5亿元收购私募数据服务商

    通鼎互联拟近15亿元收购两家互联网大数据公司 ? 成立于1999年的通鼎互联主要从事通信光缆、通信电缆等光电缆产品的研发、销售工作,是我国制造业的500强。近日...

    数据猿
  • 运维数据生态:高阶落地的一些场景

    前言:在上一篇《无数据,不工作!运维“数据思维”有多重要?》中,我们站在运维的视角来对数据的作用做了一些解读,其中包括数据的重要性、运维的数据观和数据思维的理解...

    顾黄亮
  • 怎么获取遍历出来json数据的某一条信息的详细信息

    我今天遇到遇到一个很恶心的问题,场景是这样的,就是说,如果您用ajax取到后端的数据,遍历了出来,这个时候是一条条的展示出来的,但是展示只是json数据里面的某...

    何处锦绣不灰堆

扫码关注云+社区

领取腾讯云代金券