深度学习推荐系统——前深度学习时代

协同过滤

相似度

  • 余弦相似度
    sim ⁡ ( i , j ) = cos ⁡ ( i , j ) = i ⋅ j ∥ i ∥ ⋅ ∥ j ∥ \operatorname { sim } ( \boldsymbol { i } , \boldsymbol { j } ) = \cos ( \boldsymbol { i } , \boldsymbol { j } ) = \frac { \boldsymbol { i } \cdot \boldsymbol { j } } { \| \boldsymbol { i } \| \cdot \| \boldsymbol { j } \| } sim(i,j)=cos(i,j)=ijij
  • 相关系数
    sim ⁡ ( 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 \operatorname { sim } ( i , j ) = \frac { \sum _ { \mathrm { p } \epsilon P } \left( R _ { \mathrm { i } , \mathrm { p } } - \bar { R } _ { \mathrm { i } } \right) \left( R _ { \mathrm { j } , \mathrm { p } } - \bar { R } _ { \mathrm { j } } \right) } { \sqrt { \sum _ { \mathrm { p } \epsilon P } \left( R _ { \mathrm { i } , \mathrm { p } } - \bar { R } _ { \mathrm { i } } \right) ^ { 2 } } \sqrt { \sum _ { \mathrm { p } \epsilon P } \left( R _ { \mathrm { j } , \mathrm { p } } - \bar { R } _ { \mathrm { j } } \right) ^ { 2 } } } sim(i,j)=pϵP(Ri,pRˉi)2 pϵP(Rj,pRˉj)2 pϵP(Ri,pRˉi)(Rj,pRˉj)
    R i , p R _ { \mathrm { i } , \mathrm { p } } Ri,p代表用户i对物品p的评分。 R ˉ i \bar { R } _ { \mathrm { i } } Rˉi代表用户i对所有物品的平均评分,P代表所有物品的集合。

UserCF

根据共现矩阵获得Top n相似用户,根据下式计算每个商品的相似度:
R u , p = ∑ s ∈ S ( w u , s ⋅ R s , p ) ∑ s ϵ S w u , s R _ { \mathrm { u } , \mathrm { p } } = \frac { \sum _ { \mathrm { s } \in S } \left( w _ { \mathrm { u } , \mathrm { s } } \cdot R _ { \mathrm { s } , \mathrm { p } } \right) } { \sum _ { \mathrm { s } \epsilon S } w _ { \mathrm { u } , \mathrm { s } } } Ru,p=sϵSwu,ssS(wu,sRs,p)
其中,权重 w u , s w _ { \mathrm { u } , \mathrm { s } } wu,s是用户U和用户S的相似度, R s , p R _ { \mathrm { s } , \mathrm { p } } Rs,p是用户S对物品P的评分。

缺点
1、用户数往往远大于物品数,而 UserCF 需要维护用户相似度矩阵以便快速找出 Top n相似用户。用户数的增长会导致用户相似度矩阵的空间复杂度以 n 2 n^2 n2的速度快速增长。
2、用户的历史数据向量往往非常稀疏,对于只有几次购买或者点击行为的用户来说,找到相似用户的准确度是非常低的,这导致 UserCF 不适用于那些正反馈获取较困难的应用场景( 如酒店预定、大件商品购买等低频应用)。

ItemCF

根据共现矩阵获得Top n相似物品,根据下式计算当前商品和用户历史正反馈商品的相似度:
R u , p = ∑ h ∈ H ( w p , h ⋅ R u , h ) R _ { \mathrm { u } , \mathrm { p } } = \sum _ { \mathrm { h } \in H } \left( w _ { \mathrm { p } , \mathrm { h } } \cdot R _ { \mathrm { u } , \mathrm { h } } \right) Ru,p=hH(wp,hRu,h)

UserCF和ItemCF的应用场景
1、UserCF可以利用“朋友”来更新自己的推荐列表,适用于新闻推荐场景,发现热点,跟踪热点。
2、ItemCF更适用于兴趣变化较为稳定的应用。如影视推荐或者当前在寻找某一商品的电商场景,这时的兴趣点是比较稳定的。

矩阵分解

协同过滤泛化能力弱——无法将两个物品相似这一信息推广到其他物品相似性计算上,因此热门的物品具有很强的头部效应,容易跟大量物品产生相似性;而尾部的物品由于特征向量稀疏,很少与其他物品产生相似性,导致很少被推荐。
矩阵分解在协同过滤算法中“共现矩阵”的基础上,加人了隐向量的概念,加强了模型处理稀疏矩阵的能力。
用户和物品的隐向量是通过分解协同过滤生成的共现矩阵得到的,如下:
在这里插入图片描述
隐向量的维度k决定了隐向量的表达能力。k越小,隐向量包含的信息越少,模型的泛化程度越高;反之,k越大,隐向量的表达能力越强,泛化程度越低。同时,k的取值还与矩阵分解的求解复杂度直接相关。
基于用户矩阵U和物品矩阵V,用户u对物品i的预估评分如下式:
r ^ u i = q i T p u \hat { \boldsymbol { r } } _ { \mathrm { ui } } = \boldsymbol { q } _ { \mathrm { i } } ^ { \mathrm { T } } \boldsymbol { p } _ { \mathrm { u } } r^ui=qiTpu
其中, p u \boldsymbol { p } _ { \mathrm { u } } pu是U的对应行向量, q i T \boldsymbol { q } _ { \mathrm { i } } ^ { \mathrm { T } } qiT是V的对应列向量。

矩阵分解的求解过程

对矩阵分解的主要方法有三种:特征值分解、奇异值分解和梯度下降。
特征值分解只能作用于仿真,不适用。
奇异值分解可参考 知乎: 奇异值的物理意义 。但其存在两点缺陷:奇异值分解要求原始共现矩阵是稠密的;传统奇异值分解的计算复杂度达到了 O ( m n 2 ) O(mn^2) O(mn2)的级别。
因此,梯度下降成为了矩阵分解的主要方法。损失函数如下:
min ⁡ q ∗ , p ∗ ∑ ( u , i ) ∈ K ( r u i − q i T p u ) 2 \min _ { \boldsymbol { q } ^ { * } , \boldsymbol { p } ^ { * } } \sum _ { ( u , \mathrm { i } ) \in K } \left( \boldsymbol { r } _ { \mathrm { ui } } - \boldsymbol { q } _ { \mathrm { i } } ^ { \mathrm { T } } \boldsymbol { p } _ { \mathrm { u } } \right) ^ { 2 } q,pmin(u,i)K(ruiqiTpu)2

消除用户和物品打分的偏差

由于不同用户的打分体系不同,物品的衡量标准也有所区别,为了消除用户和物品打分的偏差,常用的做法是在矩阵分解时加入用户和物品的偏差向量:
r u i = μ + b i + b u + q i T p u \boldsymbol { r } _ { \mathrm { ui } } = \mu + b _ { \mathrm { i } } + b _ { \mathrm { u } } + \boldsymbol { q } _ { \mathrm { i } } ^ { \mathrm { T } } \boldsymbol { p } _ { \mathrm { u } } rui=μ+bi+bu+qiTpu
其中 μ \mu μ是全局偏差常数, b i b_i bi是物品偏差系数,可使用物品i收到的所有评分的均值, b u b_u bu是用户偏差系数,可使用用户u给出的所有评分的均值。
同时,梯度下降的损失函数加入正则化后更改成如下:
min ⁡ q ∗ , p ∗ , b ∗ ∑ ( u , i ) ∈ K ( r u i − μ − b u − b i − p u T q i ) 2 + λ ( ∥ p u ∥ 2 + ∥ q i ∥ 2 + b u 2 + b i 2 ) \min _ { \boldsymbol { q } ^ { * } , \boldsymbol { p } ^ { * } , \boldsymbol { b } ^ { * } } \sum _ { ( \mathrm { u } , \mathrm { i } ) \in K } \left( \boldsymbol { r } _ { \mathrm { ui } } - \mu - b _ { \mathrm { u } } - b _ { \mathrm { i } } - \boldsymbol { p } _ { \mathrm { u } } ^ { \mathrm { T } } \boldsymbol { q } _ { \mathrm { i } } \right) ^ { 2 } + \lambda \left( \left\| \boldsymbol { p } _ { \mathrm { u } } \right\| ^ { 2 } + \left\| \boldsymbol { q } _ { \mathrm { i } } \right\| ^ { 2 } + b _ { \mathrm { u } } ^ { 2 } + b _ { \mathrm { i } } ^ { 2 } \right) q,p,bmin(u,i)K(ruiμbubipuTqi)2+λ(pu2+qi2+bu2+bi2)

矩阵分解的优缺点

优点
1、泛化能力强
2、空间复杂度低:空间复杂度由 n 2 n^2 n2降低到 ( n + m ) ∗ k (n+m)*k (n+m)k
3、更好的扩展性和灵活性:和深度学习中的Embedding相似,便于与其他特征进行组合拼接,便于对接深度学习网络。

缺点
1、不方便加入用户、物品和上下文相关的特征。
2、在缺乏用户历史行为时,无法进行有效的推荐。

逻辑回归

优点
1、数学含以上的支撑:因变量服从伯努利分布,点击广告是一个经典的掷偏心硬币问题。因此,CTR模型的因变量显然应该服从伯努利分布。与之相比,线性回归因变量服从高斯分布。
2、可解释性强:特征加权和+sigmoid函数,表示不同特征对CTR的影响,通过sigmoid函数映射到0~1区间。
3、工程化的需要:易于并行化、模型简单、训练开销小。

缺点
表达能力不强、无法进行特征交叉。

辛普森悖论:在分组比较重都占优势的一方,在总评中有时反而时失势的一方。
逻辑回归只对单一特征做简单加权,不具备进行特征交叉生成高维组合特征的能力,因此表达能力很弱,可能出现辛普森悖论的情况。

特征工程

POLY2模型

∅ POLY2 ⁡ ( w , x ) = ∑ j 1 = 1 n ∑ j 2 = j 1 + 1 n w h ( j 1 , j 2 ) x j 1 x j 2 \emptyset \operatorname { POLY2 } ( \boldsymbol { w } , \boldsymbol { x } ) = \sum _ { j _ { 1 } = 1 } ^ { n } \sum _ { j _ { 2 } = j _ { 1 } + 1 } ^ { n } w _ { h \left( j _ { 1 } , j _ { 2 } \right) } x _ { j _ { 1 } } x _ { j _ { 2 } } POLY2(w,x)=j1=1nj2=j1+1nwh(j1,j2)xj1xj2

缺点
1、互联网数据经常采用one-hot编码,致使特征向量极度稀疏。
2、权重参数的数量由 n n n直接上升到 n 2 n^2 n2,极大地增加了训练复杂度。

FM模型

∅ F M ( w , x ) = ∑ j 1 = 1 n ∑ j 2 = j 1 + 1 n ( w j 1 ⋅ w j 2 ) x j 1 x j 2 \emptyset \mathrm { FM } ( \boldsymbol { w } , \boldsymbol { x } ) = \sum _ { j _ { 1 } = 1 } ^ { n } \sum _ { j _ { 2 } = j _ { 1 } + 1 } ^ { n } \left( \boldsymbol{w} _ { j _ { 1 } } \cdot \boldsymbol { w } _ { j _ { 2 } } \right) x _ { j _ { 1 } } x _ { j _ { 2 } } FM(w,x)=j1=1nj2=j1+1n(wj1wj2)xj1xj2
主要区别是用两个向量的内积 ( w j 1 ⋅ w j 2 ) \left( \boldsymbol{w} _ { j _ { 1 } } \cdot \boldsymbol { w } _ { j _ { 2 } } \right) (wj1wj2)取代了单一的权重系数 w h ( j 1 , j 2 ) w _ { h \left( j _ { 1 } , j _ { 2 } \right)} wh(j1,j2)FM为每个特征学习了一个隐权重特征向量。

优点:
1、权重参数为 n k nk nk(k为因向量维度),极大地降低了训练开销。
2、隐向量的引入使FM能更好地解决数据稀疏性问题(利用其他数据来学习)。虽然丢失了某些特征的精确记忆能力,但是泛化能力得到提高。

FFM模型

∅ FFM ⁡ ( w , x ) = ∑ j 1 = 1 n ∑ j 2 = j 1 + 1 n ( w j 1 , f 2 ⋅ w j 2 , f 1 ) x j 1 x j 2 \emptyset \operatorname { FFM } ( \boldsymbol { w } , \boldsymbol { x } ) = \sum _ { j _ { 1 } = 1 } ^ { n } \sum _ { j _ { 2 } = j _ { 1 } + 1 } ^ { n } \left( \boldsymbol { w } _ { j _ { 1 } , f _ { 2 } } \cdot \boldsymbol { w } _ { j _ { 2 } , f _ { 1 } } \right) x _ { j _ { 1 } } x _ { j _ { 2 } } FFM(w,x)=j1=1nj2=j1+1n(wj1,f2wj2,f1)xj1xj2

优缺点:
需要学习 n n n个特征在 f f f个域上的 k k k维隐向量,参数数量共 n ⋅ k ⋅ f n·k·f nkf个。
引入特征域概念,模型表达能力更强。

GDBT+LR

用GDBT构建特征工程,用LR预估CTR,这两步是独立训练的。

优缺点
决策树的深度决定了特征交叉的阶数,但GDBT容易产生过拟合,以及GBDT的特征转换方式实际上丢失了大量特征的数值信息。
不必在特征工程上投入过多的人工筛选和模型设计的精力,实现真正的端到端的训练。

LS-PLM(Large Scale Piece-wise Linear Mode)

又被称为MLR(Mixed Logistic Regression)模型。
在逻辑回归的基础上加人聚类的思想,其灵感来自对广告推荐领域样本特点的观察。举例来说,如果 CTR 模型要预估的是女性受众点击女装广告的 CTR。那么显然,我们不希望把男性用户点击数码类产品的样本数据也考虑进来,因为这样的样本不仅与女性购买女装的广告场景毫无相关性,甚至会在模型训练过程中扰乱相关特征的权重。为了让 CTR 模型对不同用户群体、不同使用场景更有针对性,其采用的方法是先对全量样本进行聚类,再对每个分类施以逻辑回归模型进行 CTR 预估。公式如下:
f ( x ) = ∑ i = 1 m π i ( x ) ⋅ η i ( x ) = ∑ i = 1 m e μ i ⋅ x ∑ j = 1 m e μ j ⋅ x ⋅ 1 1 + e − w i ⋅ x f ( x ) = \sum _ { i = 1 } ^ { m } \pi _ { i } ( x ) \cdot \eta _ { i } ( x ) = \sum _ { i = 1 } ^ { m } \frac { \mathrm { e } ^ { \mu _ { i } \cdot x } } { \sum _ { j = 1 } ^ { m } \mathrm { e } ^ { \mu _ { j } \cdot x } } \cdot \frac { 1 } { 1 + \mathrm { e } ^ { - w _ { i } \cdot x } } f(x)=i=1mπi(x)ηi(x)=i=1mj=1meμjxeμix1+ewix1
首先用聚类函数 π \pi π对样本进行分类( 这 里 的 采 用 了 softmax 函数对样本进行多分类),再用 LR 模型计算样本在分片中具体的 CTR 然后将二者相乘后求和。

总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值