神经网络实现推荐系统
目录:
1.1 推荐系统以及神经网络在推荐上的使用简介
1.2 推荐召回文献
1.3 推荐排序文献
1.4 总结
1. 推荐系统
1.1 简介
推荐系统的功能是帮助用户主动的找到满足偏好的个性化物品并推荐给用户。在本质上可以当做一个个性化的搜索引擎,输入的数据为用户行为信息、偏好信息等,返回的结果为最符合查询条件的物品列表。数学化的表示:
大多的推荐系统将以上的计算过程分为两个部分:
- 推荐召回
- 推荐召回指在所有物品集合中检索到符合用户兴趣的候选集,大约筛选出几百个候选的列表。
- 推荐排序
- 排序的目的是要利用展示、点击(或转化)数据,然后加入更多的用户、物品特征,对推荐候选进行更精细的修正、打分。
1.2 推荐召回
Google利用DNN来做YouTube的视频推荐其模型图如下图所示。通过对用户观看的视频,搜索的关键字做embedding,然后在串联上用户的side、information等信息,作为DNN的输入,利用一个多层的DNN学习出用户的隐向量,然后在其上面加上一层softmax学习出Item的隐向量,进而即可为用户做Top-N的推荐。
原文链接:Deep Neural Networks for YouTube Recommendations(Google 2016)
1.3 推荐排序
Google Wide&Deep模型的主要思路正如其名,把单输入层的Wide部分和经过多层感知机的Deep部分连接起来,一起输入最终的输出层。其中Wide部分的主要作用是让模型具有记忆性(Memorization),单层的Wide部分善于处理大量稀疏的id类特征,便于让模型直接“记住”用户的大量历史信息;Deep部分的主要作用是让模型具有“泛化性”(Generalization),利用DNN表达能力强的特点,挖掘藏在特征后面的数据模式。最终利用LR输出层将Wide部分和Deep部分组合起来,形成统一的模型。Wide&Deep对之后模型的影响在于——大量深度学习模型采用了两部分甚至多部分组合的形式,利用不同网络结构挖掘不同的信息后进行组合,充分利用和结合了不同网络结构的特点。
preview原文链接:Wide & Deep Learning for Recommender Systems (Google 2016)
1.4 总结
关于实现,我觉得以上的两个推荐系统的灵魂(召回和排序)短时间内都较难实现,且无法针对上次的SA数据进行实验。
目前的计划有两个:
- 使用别人实现的工具 spotlight
- 使用何向南提出的 NCF 模型
这两个都有现成的代码,跑的数据都是 Movielen 数据集。虽然不是SA数据,但SA数据是根据 Movielen 处理来得,我觉得没什么问题。
有问题的是
- 只能他们提出的指标判断模型的准确率,目前还不能使用训练好的模型进行推荐
参考文献:
更多推荐召回算法之深度召回模型参考:https://zhuanlan.zhihu.com/p/63343894
更多深度学习推荐系统论文参考:https://www.zhihu.com/question/20830906
Spotlight 简要说明:https://zhuanlan.zhihu.com/p/69778150
Spotlight 源码示例:https://github.com/maciejkula/spotlight
NCF 源码解析:https://www.cnblogs.com/wzyj/p/8974782.html
NCF 源码:https://gitee.com/hwang_zc/Neural-Collaborative-Filtering