概述
本文是笔者参与datawhale组织的深度推荐模型组队学习的分享,学习内容见本链接 ,本文中所指的教程即该链接中的相应文件。
DeepFM这篇比之前两篇更难理解了一些,DeepFM对Wide&Deep的改进主要在于wide侧使用了FM,而FM又使用了矩阵分解的思想,因此这篇我回顾一下从传统机器学习到DeepFM每个算法都在注重解决什么问题,帮助自己理解DeepFM。
一、协同过滤 CF
协同过滤的总体思路是建立m个用户与n个物品的共现矩阵,通过使用余弦相似度、皮尔逊相关系数等计算相似度的算法,计算用户与物品,或物品与物品的相似度,来进行推荐,分为基于用户的协同过滤和基于物品的协同过滤。
1. 基于用户的协同过滤 UserCF
概念
根据共现矩阵按行求用户相似度,根据相似用户喜欢的物品加权平均排序之后做推荐。
优点
- 适合用于发现热点(如新闻推荐)
- 具有社交属性,可以找兴趣相似的人
2. 基于物品的协同功率 ItemCF
概念
根据共现矩阵按列求物品相似度,根据用户正反馈的物品的相似物品加权平均排序之后做推荐。
优点
- 数据库中物品的数量是远小于用户的,因此比UserCF占用空间小
- 适合用于挖掘用户兴趣变化比较稳定的应用(如电影、音乐推荐)
协同过滤的限制
- UserCF用户数远大于物品数,存储量过大
- UserCF用户历史数据稀疏,找相似用户不准确
- 泛化能力差
- 热门物品头部效应严重
二、矩阵分解
概念
将M×N的用户-物品共现矩阵分解成 M×K 与 K×N的用户矩阵与物品矩阵,因此每个用户和物品都是k维空间的一个值,通过空间中与用户最近的物品来进行推荐。
其中,k是隐向量维度,k越大模型泛化能力弱,记忆能力强,k越小模型泛化能力越强。k的设定是根据推荐效果和工程开销而定。
当k确定后,矩阵的计算通过梯度下降计算,损失函数为当前用户矩阵与物品矩阵的乘积与原始矩阵的差值的平方和(通常加正则项)。
注意:在实际使用时还需要消除用户和物品的打分偏差(不同用户尺度不同,不同物品被打分的尺度也不同)
优点
- 隐向量是根据全局信息生成的,因此相对于协同过滤具备了更强的泛化能力
- 不需存储相似性矩阵(N×N),只需存储用户和物品的隐向量(M+N)×2
限制
- 同CF一样,不能使用用户和物品的属性特征,不能使用用户与物品交互的上下文特征。
三、逻辑回归
概念
使用用户、物品、用户属性、物品属性、上下文信息等特征根据具体任务构造逻辑回归模型,每次推荐时根据输入特征预测出物品点击的概率,根据概率排序推荐。
优点
- 可以利用用户属性、物品属性、上下文信息等特征
- 可解释性强
- 易于并行化、模型简单、训练开销小
限制
- 无法自动进行特征交叉
- 表达能力弱(泛化能力弱)
四、因子分解机 FM
概念
为解决逻辑回归不能自动进行特征组合的问题,推荐系统引入了因子分解机FM。
在FM之前,POLY2模型首先提出了一种自动特征组合的方法,即使用暴力法两两组合特征,每个特征的权重仍是一个标量,将这样构造的特征交给逻辑回归,POLY2的模型如下所述,
x
j
1
x
j
2
x_{j_{1}} x_{j_{2}}
xj1xj2为
∅
POLY
2
(
w
,
x
)
=
∑
j
1
=
1
n
−
1
∑
j
2
=
j
1
+
1
n
w
h
(
j
1
,
j
2
)
x
j
1
x
j
2
emptyset operatorname{POLY} 2(boldsymbol{w}, boldsymbol{x})=sum_{j_{1}=1}^{n-1} sum_{j_{2}=j_{1}+1}^{n} w_{hleft(j_{1}, j_{2}right)} x_{j_{1}} x_{j_{2}}
∅POLY2(w,x)=j1=1∑n−1j2=j1+1∑nwh(j1,j2)xj1xj2
FM在POLY2的基础上,利用了矩阵分解的思想,用两个向量的内积取代单一权重
w
h
(
j
1
,
j
2
)
w_{h(j_{1}, j_{2})}
wh(j1,j2)
公式如下
∅
FM
(
w
,
x
)
=
∑
j
1
=
1
n
−
1
∑
j
2
=
j
1
+
1
n
<
w
j
1
,
w
j
2
>
x
j
1
x
j
2
emptyset operatorname{FM}(boldsymbol{w}, boldsymbol{x})=sum_{j_{1}=1}^{n-1} sum_{j_{2}=j_{1}+1}^{n} <w_{j_1}, w_{j_2}> x_{j_{1}} x_{j_{2}}
∅FM(w,x)=j1=1∑n−1j2=j1+1∑n<wj1,wj2>xj1xj2
五、DeepFM
概念
Wide&Deep创新的将泛化能力与记忆能力在同一个网络中都能比较有效的表现,但wide部分的特征构造还需要人工构造,依赖于经验,因此将FM的自动挖掘二阶交叉特征的能力替换wide部分,便有了DeepFM。
FM的整体结构如图所示
FM部分示意图:
最后
以上就是无限皮带为你收集整理的手搭深度推荐模型(三) DeepFM的全部内容,希望文章能够帮你解决手搭深度推荐模型(三) DeepFM所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复