目录
1 目的
快速检索信息
过滤:从大量信息中筛选出有用
2 应用
推荐购买(淘宝等购物网站)
推荐页面(百度等搜索引擎)
推荐可能要去的地方(根据你所在的位置,yelp等)
推荐新闻(头条等)
推荐人(微信等社交app)
3 总览
- 输入:用户行为,数据库中的商品信息(过滤)
- 其他输入:外部数据(和其他合作拿到的浏览、社交信息)
- 输出:top k的推荐物品
在线:网页
离线:邮箱
推荐系统 = 80%推荐 + 20%算法
主要工作:数据存储、数据响应、数据清理
4 传统推荐算法
4.1 基于内容(content-based)
定义:在历史数据中,查询用户喜欢过的相似物品
数据特点:非结构化——》特征工程
问题:特征复杂度高时,算法难以学得,延迟(达不到ms级)
4.2 协同过滤(collaborative filtering,最常用)
定义:完全基于用户行为,给用户和物品的关系打分(score)
(点击后,买1,不买0;不点击没记录)
计算相似性:
基于物品(item-based)
基于用户(user-based)
两类:
memory-based
model-based
矩阵分解:
优点(pros):
(1)易于实现
系统架构简单,响应时间短(矩阵计算简单),存储(低维向量)
(2)内容独立
不依赖用户,物品
就看score
(3)偶然推荐
对于前期系统,数据容易获取(无需考虑数据存储)
缺点(cons):
(1)数据稀疏
(2)冷启动问题
用户是全新的,没有低维的特征表示(全零向量)
这也是矩阵分解的缺点
content-based可以基于年龄等其他信息,没有这个问题
协同过滤+基于内容
(3)不考虑内容
4.3 人口统计(demographic)
根据地理位置推荐
4.4 基于知识(knowedge-based)
根据专家知识推荐
4.5 基于社团(community-based)
根据社交网络推荐
4.6 混合推荐(hybrid recommender systems)
上述方法的混合:
- 在模型前面混合
- 在模型后面混合(模型加权融合)
5 深度学习推荐算法
协同过滤:矩阵分解,架构简单,响应快,存储,基于score,数据易于获取
基于内容:没有冷启动问题
5.1 why深度学习
协同过滤(矩阵分解)+基于内容的优势
matrix factorization + content-based
- 通用函数逼近器
- 没有特征工程
- 处理复杂非结构数据(图像、文本、视频)
- 物品(item)和用户(user)的精确隐含表示
- 在图像和NLP领域效果好
5.2 矩阵分解
matrix factorization
5.2.1 神经协同过滤器(neural collaborative filtering)
embedding:onehot encoding + 矩阵乘法 ——》Zu,Zi
如果没有CF层,直接把Zu,Zi向量内积,就是矩阵分解(线性表征)
没有考虑content-based
5.2.2 神经矩阵分解模型(neural matrix factorize model)
MF:线性矩阵分解——》MLP layer
MLP:非线性表征——》 MLP layer1~3
上面两个结果,用NeuMF layer 接到一起
没有考虑content-based
5.3 矩阵分解+基于内容
matrix factorization+content-based
5.3.1 wide&deep
宽深神经网络
wide deep neural network
wide:手工特征工程 + logistic regression(线性部分)
deep:embeding + 网络学习(非线性部分)
上面两者结合到一起预测
wide用于记忆,deep用于泛化
logistic regression:线性模型,实现很简单,响应速度快,特征记忆力强
矩阵分解+基于内容(加入了content-based)
cross product transformation:交叉,将one-hot结果做二阶乘法
测试结果:
5.4 因子分解机
5.4.1 FM(factorization machines)
one-hot后的特征是百亿维
5.4.2 FFM(field-aware factorization machines)
FFM是FM的改进
加入了特征交叉:Xi*Xj
5.4.3 deepFM(deep factorization machines)
深灰色:线性部分(线性相乘,求和)
黄色:两两特征交叉
浅灰色:非线性部分
测试结果:
wide&deep效果好,为什么还要deepFM?
原因:wide&deep需要特征工程,deepFM不需要
deepFM特点:
(1)用deep做特征工程
(2)一阶、二阶特征交叉
(自动学习特征表示,包含传统线性模型)
5.5 自编码模型(AE)
AE:autoencoder model
输入:X
加入随机噪音的输入:corrupted X(提升泛化能力)
黄色:输入的低维表示(可以将输入重构出来)
Autoencoder recommender System
两个变量:item-based AutoRec,user-based AutoRec
应用自编码的两个方式:颈部层用低维表示,用重构层填满空白的排序矩阵
5.6 卷积神经网络(CNN)
CNN:convolution neural network
非结构化数据:借助神经网络结构学习
卷积:用核做元素乘法
卷积的特点:
(1)局部连接
降低模型复杂度(reduce model complexity,只需要和卷积核连接)
平移不变性(keep translation invariant,扫描时卷积不变)
(2)适合处理图像、文本
(3)输入大小要一样
输入大小可以不同——》padding
(4)学习时间依赖的结构
dilate CNN
(5)创建块(building blocks)
卷积层
池化层
全连接层
5.6.1 深度协同神经网络(deep cooperative neural network)
文字描述——》word embeding(单词映射成向量)——》二维向量
user review text:二维向量连接到一起
item review text:商品描述description
紫色:沿着词方向(从左往右)卷积
四个卷积核得到四个表示
5.7 递归神经网络(RNN)
RNN:recurrent neural network
5.7.1 session-based
session-based recommendation with RNN
放入购物车,删除,放入购物车
user-based,content-based 失效了
预测用户行为,做出反应:是加入购物车,是直接买,还是查看耳机
5.8 强化学习(RL)
reinforcement learning 强化学习
agent:recommender system
reward:购买了,点击了
state:点击
action:返回推荐
enveroment:user(各种行为,点击、购买)
St:浏览,点击
Rt:购买了,点击了广告,点击了推荐的产品
agent:推荐系统
at:返回感兴趣的产品,促销券码promotional
env:user
St+1:点击推荐
Rt+1:点击了
使用RL的原因:用户行为是随时变化的,可能今天线上做活动,用户的行为可能跟以往完全不一样,可以实时反应
传统推荐系统,模型1个月或1周更新一次,无法实时更新
资料
推荐系统技术:
https://blog.csdn.net/xwd18280820053/article/details/90316416
推荐系统方法概览:
https://blog.csdn.net/xwd18280820053/article/details/76012945
基于深度学习的推荐系统:
https://www.bilibili.com/video/BV13W411Q7Xh?from=search&seid=8965178541721098930