前言

不知道大家有没有感觉,在日常生活中用到推荐一词的时候经常是用在社交场景中的。到一个地方旅游让朋友推荐一下旅游景点,学习某一项技术的时候让朋友推荐一些有什么书可以看。在众多推荐系统的方向中,我觉得社会化推荐这一分支更加符合现实生活中的情况。而自从深度学习技术在计算机视觉、自然语言处理中大放异彩,许多研究者也将深度学习技术运用到了社会化推荐领域中。

本文主要围绕将深度学习技术应用到社会化推荐场景的主题进行阐述,先介绍了一些在社会化推荐系统中所常用的一些数据集,接着总结了几篇关于深度学习技术应用到社会化推荐的文章。值得注意的是 ,本文所选的论文都是在Github中有开源实现的,可以让读者有进一步的理解。

社会化推荐中常用的数据集

社会化推荐与传统的推荐任务不同,所需要的数据集不光需要用户与项目的评分信息,还需要用户与用户间的社会关系信息。常用的数据集如下:

1. FilmTrust

下载地址:

https://github.com/guoguibing/librec/tree/3.0.0/data/filmtrust

该数据集是2011年6月从FilmTrust网站上抓取的一个小型数据集。包含用户对电影的评分信息和用户间的社交信息。数据量较小,只有35497条评分数据。1853条社交数据。

2. Epinions

下载地址:

http://www.trustlet.org/epinions.html

该数据集规模较大,包含用户对电影的评分信息和用户间的社交信息。该数据集有两个版本,其中一个版本还包括了用户间的不信任关系信息。

3. CiaoDVD

下载地址:

https://www.librec.net/datasets.html

该数据集包含了用户对他们购买过的项目的评分和用户间的社交连接。

4. Delicious

下载地址:

https://grouplens.org/datasets/hetrec-2011/

此数据集包含来自Delicious社交书签系统的用户间的社交网络,书签和标签信息。

5. Yelp

下载地址:

https://www.yelp.com/dataset

该数据集规模较大,需要手动提取相关信息。

0 前深度学习时代——社会化推荐的进化之路

Recommender systems with social regularization, WSDM, 2011.

在没有使用深度学习技术之前,早期的社会化推荐基于一个假设:一个用户的行为偏好与他的朋友应该是相似的,同时行为偏好相似的人更倾向于建立联系。2011年Hao Ma等人[1]提出的SoReg方法,使用了社交正则化项为学术研究提供了一个新的方向。

在[1]中提出了两个模型,分别为基于平均的正则化(Average-based Regularization)和基于个体的正则化(Individual-based Regularization )。

基于平均的正则化的函数如下:

该函数假设每个用户的喜好都接近用户朋友的平均喜好。该函数具体包含三个部分,第一部分为基本的矩阵分解模型,第二部分为社交约束项,第三部分为正则化项,用来缓解模型的过拟合问题。

这里我们具体对第二部分的社交约束项进行介绍, 















 分别是用户i,用户f的用户向量。










 是用户i的朋友集合。Sim(i,f)是用户i与用户f的相似度函数,在论文中使用了空间相似度(VSS)和皮尔森相关系数(PCC)用来定义用户之间的相似性。这种约束形式使用了用户间的相似度区别对待了所有的朋友,通过除以用户朋友的相似度之和计算出用户朋友的平均喜好。

基于个体的正则化函数如下:

该函数也具有三个部分,第一部分和第三部分与基于平均的正则化模型相同,不同的是社交约束项。基于平均的正则化模型对有着不同喜好朋友的用户不敏感。因此基于个体的正则化模型将用户和他的每个朋友单独施加限制: 。更多关于社会化推荐文章总结请移步社会化推荐浅谈。

1 使用深度学习技术挖掘社交网络数据

Collaborative User Network Embedding for Social Recommender Systems, SDM, 2017.

该论文认为直接使用明确的社交连接可能会存在问题:1)获取可靠的社交联系很困难,只有一小部分用户会明确表示自己信任的朋友; 2) "冷启动"用户在评分和社交上都很"冷";3) 用户可以与不同喜好的人建立社交联系,直接使用明确的社交连接可能会误导推荐。因此,该论文中提出从用户对商品的反馈(如评分或购买)中提取隐含的社交信息,设计了CUNE方法,为每个用户确定出top-k语义好友。再将top-k语义好友的信息加入到MF和BPR中,提出了CUNE-MF和CUNE-BPR。

CUNE方法可以看成是DeepWalk[3]的扩展,具体的计算过程如下图所示:

第一步,使用one-mode映射方法从用户-项目网络中得到协同用户网络。其中,用户-项目网络表示用户-项目反馈,通过使用两组节点(即用户和项目)进行连接,边 










 表示用户i对项目j进行了反馈(例如评分或购买)。接着通过one-mode映射方法构建一个只有用户的网络,如果两个用户都对至少一个项目有反馈那么则将这两个用户连接起来,构成协同用户网络。边的权值表示他们共同反馈的项目数量。

第二步,则进行偏置随机游走产生用户节点序列。游走中的第i个节点表示为 











,通过两种方法从其前置节点 











 的邻居中选择它: (1) 如果 











 的所有邻居已经被访问(在前一步被选择),那么就随机选择一个邻居,(2) 否则(存在一些 











 的邻居没有被访问),选择一个 











 的未访问的邻居,通过 







































,这里 










 是节点v和x之间的边权值,S是正则化因子,






























(












 是v的未访问邻居的集合)。

第三步,将第二步产生的节点序列输入到SkipGram模型中,得到每个用户的低维嵌入表示。最终通过计算每两个用户的嵌入表示的余弦相似度,提取出top-k语义好友。产生语义好友之后就可以将其加入到MF和BPR中,函数如下:

CUNE-MF:

CUNE-BPR:

CUNE-MF与SoReg在github中有开源实现:

https://github.com/hongleizhang/RSAlgorithms

2 使用图神经网络进行社会化推荐

Graph Neural Networks for Social Recommendation, WWW, 2019.

近年来,图神经网络(GNNs)在学习图数据方面表现出了强大的能力,它可以很好地将节点信息和拓扑结构结合起来。在社会化推荐中,数据可以表示为用户-用户的社交图和用户-项目反馈图(如图2所述),因此Wenqi Fan等人提出GraphRec利用图神经网络来学习用户和项目的隐因子(latent factors)[4]。

提出的模型结构下图所示,由3个部分组成:用户建模,项目建模和评分预测。第一个部分是用户建模,用来学习用户的隐因子向量,作者引入社交聚合和项目聚合来分别处理用户-用户社交图和用户-项目反馈图,通过结合项目空间和社交空间的信息来获得用户隐因子。第二个部分是项目建模,引入了用户聚合将用户对项目的意见用于项目建模,来学习项目隐因子。第三个部分为评分预测,通过将用户建模产生的用户隐因子与项目建模产生的项目隐因子结合起来输入到MLP中进行评分预测。最后使用RMSprop作为优化器进行训练,使用dropout缓解过拟合。

img

Github上有GraphRec的两个代码实现版本(Pytorch实现),地址如下:

作者开源:

https://github.com/wenqifan03/GraphRec-WWW19

用户开源:

https://github.com/Wang-Shuo/GraphRec_PyTorch

3 注意力机制在社会化推荐中的应用

Social Attentional Memory Network: Modeling Aspect- and Friend-level Differences in Recommendation, WSDM, 2019.

用户与朋友的喜好不可能完全相同,在多数情况下只有部分匹配;另外,朋友的影响强度可能是不同的,不是所有朋友都可以平等的影响用户。因此Chong chen等人提出了SAMN( Social Attentional Memory Network)[5],将注意力机制运用到了社会化推荐中。

SAMN基于隐式反馈和社交网络进行推荐。SAMN的架构如下图所示,主要包含两个模块:基于注意力的记忆模块和朋友层面的注意力组件。基于注意力的记忆模块用来解决用户与朋友喜好的差异,朋友层面的注意力组件用来选择信息丰富的朋友,解决朋友的影响强度差异。

开源地址:

https://github.com/chenchongthu/SAMN

4 通过动态图注意力网络进行基于会话的社交推荐

Session-based Social Recommendation via Dynamic Graph Attention Networks, WSDM, 2019.

该论文作者认为用户的兴趣是动态的并且受到朋友的影响,不同的主题可能会依赖不同的朋友。因此Weiping Song等人提出DGRec[5],通过动态图注意力网络进行基于会话的社交推荐。DGRec使用了循环神经网络(RNN)对用户的动态行为进行建模,并使用图注意力神经网络对上下文相关的社交影响进行建模。

DGRec由四个模块组成(如下图所示)。首先使用了RNN建模用户在当前会话中的动作,捕获用户动态变化的兴趣。接着使用短期兴趣和长期兴趣为朋友的兴趣建模,短期兴趣根据最近消费的物品的序列放入RNN中得到一个向量表示,朋友的长期兴趣用一个固定向量表示,代表朋友的平均兴趣,之后朋友的兴趣就是短期兴趣向量和长期兴趣向量的拼接。然后将用户和朋友放到社交网络图中,图中的节点用得到的兴趣向量表示,边代表社交联系,再通过图注意力网络来获取朋友对用户的动态影响,得到的向量和用户向量拼接得到最后的用户向量,最后使用softmax来得到一个可能的物品的概率分布进行推荐。

开源地址:

https://github.com/DeepGraphLearning/RecommenderSystems/tree/master/socialRec

总结与个人观点

深度学习在社会化推荐中的应用也可谓是大放异彩,图神经网络与注意力机制在社会化推荐的应用给研究者开辟了一个新的方向,但是目前深度学习在社会化推荐领域的研究远不如点击率预估那样火热。我觉得可能存在以下几个方面的问题:

  1. 社交数据跟用户对物品的反馈数据一样还是存在稀疏性的问题,甚至比反馈数据更加稀疏,因为很多用户不愿意共享自己的社交信息,几个常用的数据集中的社交数据也非常稀疏。

  2. 深度学习是个好用的工具但并不是一把万能钥匙。由于深度学习具有黑盒的性质,使得人们无法理解其中的原理,深度学习研究者都自称自己是调参侠。知乎上有关于调参经验的总结:深度学习 “炼丹” 技巧总结。

因此,当需要给出确切解释的时候,深度学习并不是首选项。

参考文献

[1] Ma et al. Recommender systems with social regularization. WSDM, 2011.

[2]Chawla et al. Collaborative User Network Embedding for Social Recommender Systems. SDM, 2017.

[3]B. Perozzi et al. Deepwalk: Online learning of social representations. KDD, 2014.

[4] Fan et al. Graph Neural Networks for Social Recommendation. WWW, 2019.

[5] Chen et al. Social Attentional Memory Network: Modeling Aspect- and Friend-Level Differences in Recommendation. WSDM, 2019.

[6] Song et al. Session-based Social Recommendation via Dynamic Graph Attention Networks. WSDM, 2019.

[7] [社会化推荐浅谈]https://zhuanlan.zhihu.com/p/38413102

[8] [基于动态注意力机制图神经网络的会话社交推荐系统阅读笔记]https://zhuanlan.zhihu.com/p/73637262

「 更多干货,更多收获 」【干货】20大推荐系统开放公共数据集分享深度学习与推荐系统完结篇(知识、论文、源码、数据集&行业应用)
多业务融合推荐实践与思考.pdf微博推荐算法实践与机器学习平台演进.pdf推荐系统工程师技能树
2020年9月十大热门报告盘点【电子书分享】美团机器学习实践.pdf
全网最全短视频直播电商资料包(附下载链接)关注我们

智能推荐

个性化推荐技术与产品社区

长按并识别关注

一个「在看」,一段时光????

深度学习技术在社会化推荐场景中的总结(附数据集)相关推荐

  1. 搜狗深度学习技术在广告推荐领域的应用

    内容来源:2017年4月17日,搜狗移动搜索广告策略研究组负责人舒鹏在七牛云和QCon联合主办的深度学习论坛"深度学习最新进展与实践"上进行<搜狗深度学习技术在广告推荐领域的 ...

  2. 一文探讨可解释深度学习技术在医疗图像诊断中的应用

    2020-10-20 14:39:24 机器之心分析师网络 作者:仵冀颖 编辑:Joni 本文依托于综述性文章,首先回顾了可解释性方法的主要分类以及可解释深度学习在医疗图像诊断领域中应用的主要方法.然 ...

  3. 深度学习技术在脑机接口中的应用

    大家好! Rose给大家分享一下深度学习技术在脑机接口中的应用. 什么是脑机接口? 脑机接口(BCI)是一种系统,可将受试者(人类或动物)的大脑活动模式提取并转换为用于交互式应用程序的消息或命令.脑活 ...

  4. 深度学习目标检测在实际场景中的应用(附源代码)

    关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 计算机视觉研究院专栏 作者:Edison_G 目标检测是现在最热门的研究课题, ...

  5. 【推荐实践】深度学习在省钱快报推荐排序中的应用与实践

    文章作者:省钱快报算法团队 编辑整理:Hoh Xil 内容来源:作者授权 出品平台:DataFun 导读:省钱快报是一家中小型综合类电商APP,近2年平台规模有了较大增长,AI在平台业务发展中发挥了巨 ...

  6. 深度学习在省钱快报推荐排序中的应用与实践

    导读:省钱快报是一家中小型综合类电商APP,近2年平台规模有了较大增长,AI在平台业务发展中发挥了巨大作用.本文以推荐场景优化在省钱快报的发展为脉络,对于中小型电商公司在资源有限的客观条件下,对机器学 ...

  7. 利用深度学习技术自动可靠的叶病检测(附数据+分割分类详细+公共总结)

    Abstract 植物是世界人口的主要食物来源.植物病害会造成生产损失,这可以通过持续监测加以解决.人工监测植物病害既费力又容易出错.利用计算机视觉和人工智能(AI)对植物病害进行早期检测,有助于减少 ...

  8. 带你测试对比深度学习框架!TensorFlow,Keras,PyTorch...哪家强?(附数据集)

    授权自AI科技大本营(ID: rgznai100) 本文长度为3556字,建议阅读7分钟 亚马逊MXNet在CNN.RNN与NLP情感分析任务上性能强劲,而TensorFlow仅擅长于特征提取. 深度 ...

  9. 深度学习实战(2):肺炎预测|附数据集与源码

    目录 写在前面 项目任务简介 实验结果 导入需要的第三方库 定义预处理函数 加载数据集路径 加载训练集的图像和标签 部分图片展示 加载测试图片 Pickle存储已处理好的图片 标签预处理 将X转化为( ...

最新文章

  1. Enterprise Vault 系列 [CA和DA]
  2. 使用NMAKE管理工程
  3. linux执行windows创建的脚本,如何在Windows 10上创建和运行Bash Shell脚本 | MOS86
  4. GB4208中规定的外壳防护等级IP
  5. android 读后台数据,Android 模拟后台数据返回 ,便与测试
  6. Java排序算法之直接选择排序
  7. c++做界面_一看就会做系列 SmartLink远程诊断发布需求指南简单版
  8. 解决SVN没有中文选项
  9. word文字上下间距怎么调_word上下文字间距 word字体上下间距怎么调整
  10. Web移动端混合开发--IonicFramework
  11. 获取A股行情数据方法
  12. 百度网盘电脑登录二维码加载不出来解决方法
  13. 计算机科学与昆虫,基于视觉的昆虫物种识别算法研究
  14. anaconda python3 安装库_痛点:Anaconda3 python第三方库批量安装
  15. 银内胆保温杯的功效和作用
  16. 关于CDN以及如何绕过CDN寻找真实ip
  17. idea翻译软件TKK网络连接超时
  18. hifi android 手机吗,手机真能玩HiFi吗?手机玩HiFi必备的APP
  19. php 鲜为人知的函数
  20. 国产数据库应用调查统计

热门文章

  1. xNFT Protocol完成天使轮和A轮融资,LD Capital、Fundamental Labs分别领投
  2. 去中心化交易聚合平台ParaSwap将平台交易gas费成本降低约 20%
  3. SAP License:MM中的几个概念
  4. SAP License:PS的进度管理流程
  5. 如何评估一个产品的投资回报?
  6. mybatis 学习一 建立maven项目
  7. linux下面的智能解压脚本smart解压
  8. gcc 编译流程分析
  9. 0 null 的区别
  10. 新装Windows 2003 + IIS 6.0的问题