章节2
总共包含两篇博文:
深度学习推荐系统 学习笔记–Chapter 2.1
深度学习推荐系统 学习笔记–Chapter 2.2
本文是其中一篇
前言
- 即使在深度学习空前流行的今天,协同过滤,矩阵分解,因子分解机等传统推荐模型依旧可凭其解释性强,硬件环境要求低,易于快速训练和部署等不可替代的优势,拥有大量适用的场景
- 传统推荐模型是深度学习推荐模型的基础。在很多出名的推荐系统框架里,都能看到传统推荐模型的影子或思想。
传统推荐模型模型的演进关系图
传统推荐模型分为几个大族:
- 协同过滤算法族:分为ItemCF,UserCF,但上面两个算法的泛化能力都比较弱,头部效应过于明显,因此后面延伸除了矩阵分解模型MF。
- 逻辑回归模型族:LR相比CF,能够更多的利用到用户自身属性,物品及上下文特征,因此也成为了推荐的一个大类。从LR延伸出来的模型“枝繁叶茂”,比如LS-PLM,FM,以及加入其它模型配合使用的组合模型等。
- 因子分解机模型:在LR的基础上,加上了特征交叉组合的能力,使得模型更具表达能力。比如FM,FFM。
- 组合模型:为了融合多个模型的优点,将多个模型组合起来进行推荐。比较出名的有GBDT+LR。
协同过滤
作为最成熟的推荐算法,协同过滤的研究最早可以追溯到1992年,目前协同过滤主要有两个大类。
基于用户相似度的协同推荐UserCF
UserCF很重要的一点是要计算用户之间的相似度,常见的相似度计算有如下几种。
- 余弦相似度
s i m ( i , j ) = i ∗ j ∣ ∣ i ∣ ∣ ∗ ∣ ∣ j ∣ ∣ sim(i,j) = \frac{i * j}{||i||*||j||} sim(i,j)=∣∣i∣∣∗∣∣j∣∣i∗j
- 皮尔逊相似度
s
i
m
(
i
,
j
)
=
∑
p
∈
P
(
R
i
,
p
−
R
i
)
(
R
j
,
p
−
R
j
)
∑
p
∈
P
(
R
i
,
p
−
R
i
)
2
∑
p
∈
P
(
R
j
,
p
−
R
j
)
2
sim(i,j) = \frac{\sum_{p\in{P}}{(R_{i,p}-R_i)(R_{j,p}-R_j)}}{\sqrt{}\sum_{p\in{P}}{(R_{i,p}-R_i)^2} \sqrt{}\sum_{p\in{P}}{(R_{j,p}-R_j)^2}}
sim(i,j)=∑p∈P(Ri,p−Ri)2∑p∈P(Rj,p−Rj)2∑p∈P(Ri,p−Ri)(Rj,p−Rj)
其中,R_ip是用户i对物品p的评分。Ri是用户对物品的平均评分。利用这个可以减少用户评分偏置的影响。
UserCF算法主要步骤:
- 首先构建用户-物品的共现矩阵(即打分矩阵)。矩阵中每一元素可以取用户对物品的具体打分值。也可以取0,1两个值。
- 计算用户之间的相似度矩阵,相似度利用上面所说的公式。
- 求出TopN相似的相似用户后,求解目标用户对自己某个未打分的物品的打分,基于公式:
R u , p = ∑ s ∈ S ( w u , s ∗ R s , p ) ∑ s ∈ S w u , s R_{u,p} = \frac{\sum_{s\in{S}}(w_{u,s}*R_{s,p})}{\sum_{s\in{S}}w_{u,s}} Ru,p=∑s∈Swu,s∑s∈S(wu,s∗Rs,p)
UserCF基于一种逻辑,兴趣相似的用户,喜欢的东西应该也是相似的。确实如此。但是,UserCF也有很大的弊端:
- 在互联网场景下,用户数>>物品数,这样会导致计算量大的无法接受。因为UserCF的计算复杂度是O(n^2)。
- 共现矩阵其实是非常稀疏的,对于只有几次购买或点击行为的用户来说,找到相似用户的准确度是很低的。这导致UserCF不适合那些反馈获取较为困难的场景(比如酒店预订,大件商品购买等低频应用)。
所以在互联网初期,实现的协同是基于物品相似度的。
基于物品相似度的协同推荐ItemCF
实现逻辑:
- 构建用户-物品共现矩阵
- 计算物品之间的相似度,形成矩阵
- 获得用户的历史的正反馈物品列表
- 基于正反馈列表和其他物品的相似度,找出相似TopK的物品,组成推荐集合
- 排序,对推荐集合进行排序,公式如下:
R
u
,
p
=
∑
h
∈
H
(
w
p
,
h
∗
R
u
,
h
)
R_{u,p} = \sum_{h\in{H}} (w_{p,h} * R_{u,h})
Ru,p=h∈H∑(wp,h∗Ru,h)
H是用户历史中有正反馈的物品。R_uh是用户对h的已有评分。
UserCF,ItemCF的异同以及局限
UserCF社交属性强,比较适合新闻类型的推荐,可用于发现热点,跟踪热点。
ItemCF比较适合用户兴趣较为稳定的推荐,比如亚马逊的电商推荐场景。
两个算法都具有可解释性强,泛化能力弱,头部效应过强的特点。热门的物品往往有非常多的互动历史,会产生很强的头部效应,因此容易跟大量物品产生相似性;而尾部的物品由于特征向量稀疏,很少跟其他物品产生相似性,导致很少被推荐。
另外,协同过滤也没有用到物品本身的信息,用户本身的信息,也没有用到上下文特征,这会造成有效信息的遗漏。所以,以逻辑回归作为基础的推荐算法也渐渐发展起来。
矩阵分解MF
矩阵分解主要是基于如下一个逻辑:利用共现矩阵,为每个用户和视频生成一个隐向量,每个隐向量就代表了该实体的“自身特性”,相似的隐向量,对应的两个实体也更相似。
这样子,MF就有了较强的泛化性。
矩阵分解的求解办法:奇异值分解以及梯度下降。(顺带一提,还有一个矩阵分解的办法,特征值分解,该方法是PCA的核心逻辑,只适合方阵)
求解方法一:奇异值分解
对于一个m*n的矩阵,可以分解为三个矩阵:
M
=
U
E
V
T
M = UEV^T
M=UEVT
M为m*n的矩阵,U为
m
∗
m
m*m
m∗m的方阵,V是
n
∗
n
n*n
n∗n的方阵,E为
m
∗
n
m*n
m∗n的对角阵。
MF算法会取对角阵E中较大的k个元素作为隐含特征,删除其他维度,则
M
∼
U
m
∗
k
E
k
∗
k
V
k
∗
n
T
M \sim U_{m*k}E_{k*k}V_{k*n}^T
M∼Um∗kEk∗kVk∗nT
则每个用户和物品就可以以U,V的向量来唯一标示了。
求解方法二:梯度下降
奇异值分解的计算复杂度为O(mn^2),这对于海量的互联网数据是不可接受的,另外,其对矩阵的要求是必须稠密,互联网场景下的数据也很难满足这一点。因此,相比奇异值分解,梯度下降的求法更为常用。
首先给出梯度下降的目标函数:
m
i
n
q
,
p
∑
(
u
,
i
)
∈
K
(
r
u
i
−
q
i
T
∗
p
u
)
2
min_{q,p} \sum_{(u,i)\in K}(r_{ui} - q_i^T*p_u)^2
minq,p(u,i)∈K∑(rui−qiT∗pu)2
其中K是所有用户的评分集合。
一般情况下,为了避免过拟合,会在上式加入正则化
m
i
n
q
,
p
∑
(
u
,
i
)
∈
K
(
r
u
i
−
q
i
T
∗
p
u
)
2
+
λ
∗
(
∣
∣
q
i
∣
∣
2
+
∣
∣
p
u
∣
∣
2
)
min_{q,p} \sum_{(u,i)\in K}(r_{ui} - q_i^T*p_u)^2 + \lambda * (||q_i||^2 + ||p_u||^2)
minq,p(u,i)∈K∑(rui−qiT∗pu)2+λ∗(∣∣qi∣∣2+∣∣pu∣∣2)
梯度下降算法迭代如下:
q
i
<
−
q
i
−
α
∗
(
(
r
u
i
−
q
i
T
p
u
)
p
u
−
λ
q
i
)
q_i <- q_i - \alpha *((r_{ui} - q_i^Tp_u)p_u - \lambda q_i)
qi<−qi−α∗((rui−qiTpu)pu−λqi)
p
u
<
−
p
u
−
α
∗
(
(
r
u
i
−
q
i
T
p
u
)
q
i
−
λ
p
u
)
p_u <- p_u - \alpha*((r_{ui}-q_i^Tp_u)q_i - \lambda p_u)
pu<−pu−α∗((rui−qiTpu)qi−λpu)
α \alpha α之后的部分是目标函数对p,u分别做的偏导。
矩阵分解的优点和局限性
- 泛化能力强
- 空间复杂度低
- 更好的扩展性和灵活性,得到的用户向量和物品向量能跟其他特征拼接。
逻辑回归
逻辑回归的输入为:用户,物品,上下文等多种不同的特征。相比MF和CF这种计算相似度的推荐,LR是将推荐看做一个分类问题,通过预测正样本的概率对物品进行排序。正样本可以是用户点击了某商品,业可以是用户观看了某视频等。LR将推荐转换为为一个点击率(CTR)预估问题。
LR推荐流程:
- 准备输入:用户信息,物品信息,当前时间信息等转换为数值型特征向量。
- 确定优化目标,利用模型数据进行训练,确定算法内部参数。
- 模型服务阶段,将特征向量输入逻辑回归模型,经过逻辑回归模型的推荐,得到“点击”概率
- 对结果按照点击率进行排序,得到推荐列表。
LR数学形式
J ( w ) = − 1 / m ∗ y i ∑ i = 1 m ( l o g f w ( x i ) + ( 1 − y i ) l o g ( 1 − f w ( x i ) ) ) J(w) = -1/m * y^i \sum_{i=1}^m(logf_w(x^i) + (1 - y^i)log(1 - f_w(x^i))) J(w)=−1/m∗yii=1∑m(logfw(xi)+(1−yi)log(1−fw(xi)))
对J(w)进行求导,会有
δ
δ
w
j
J
(
w
)
=
1
/
m
∑
i
=
1
i
(
f
w
(
x
i
)
−
y
i
)
x
j
i
\frac{\delta}{\delta w_j}J(w) = 1/m \sum^i_{i=1}(f_w(x^i) - y^i)x_j^i
δwjδJ(w)=1/mi=1∑i(fw(xi)−yi)xji
之后更新
w
j
w_j
wj
LR的优势和局限性
- 可解释性强,可以通过查看权重的不同,看出特征的重要程度。
- 表达能力不强,无法进行特征交叉,特征筛选。