深度学习推荐系统 学习笔记--Chapter 2.1

章节2

总共包含两篇博文:
深度学习推荐系统 学习笔记–Chapter 2.1
深度学习推荐系统 学习笔记–Chapter 2.2
本文是其中一篇


前言

  • 即使在深度学习空前流行的今天,协同过滤,矩阵分解,因子分解机等传统推荐模型依旧可凭其解释性强,硬件环境要求低,易于快速训练和部署等不可替代的优势,拥有大量适用的场景
  • 传统推荐模型是深度学习推荐模型的基础。在很多出名的推荐系统框架里,都能看到传统推荐模型的影子或思想。

传统推荐模型模型的演进关系图

传统推荐模型分为几个大族:

  1. 协同过滤算法族:分为ItemCF,UserCF,但上面两个算法的泛化能力都比较弱,头部效应过于明显,因此后面延伸除了矩阵分解模型MF。
  2. 逻辑回归模型族:LR相比CF,能够更多的利用到用户自身属性,物品及上下文特征,因此也成为了推荐的一个大类。从LR延伸出来的模型“枝繁叶茂”,比如LS-PLM,FM,以及加入其它模型配合使用的组合模型等。
  3. 因子分解机模型:在LR的基础上,加上了特征交叉组合的能力,使得模型更具表达能力。比如FM,FFM。
  4. 组合模型:为了融合多个模型的优点,将多个模型组合起来进行推荐。比较出名的有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)=ijij

  • 皮尔逊相似度

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)= pP(Ri,pRi)2 pP(Rj,pRj)2pP(Ri,pRi)(Rj,pRj)
其中,R_ip是用户i对物品p的评分。Ri是用户对物品的平均评分。利用这个可以减少用户评分偏置的影响。

UserCF算法主要步骤:

  1. 首先构建用户-物品的共现矩阵(即打分矩阵)。矩阵中每一元素可以取用户对物品的具体打分值。也可以取0,1两个值。
  2. 计算用户之间的相似度矩阵,相似度利用上面所说的公式。
  3. 求出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=sSwu,ssS(wu,sRs,p)

UserCF基于一种逻辑,兴趣相似的用户,喜欢的东西应该也是相似的。确实如此。但是,UserCF也有很大的弊端:

  1. 在互联网场景下,用户数>>物品数,这样会导致计算量大的无法接受。因为UserCF的计算复杂度是O(n^2)。
  2. 共现矩阵其实是非常稀疏的,对于只有几次购买或点击行为的用户来说,找到相似用户的准确度是很低的。这导致UserCF不适合那些反馈获取较为困难的场景(比如酒店预订,大件商品购买等低频应用)。

所以在互联网初期,实现的协同是基于物品相似度的。

基于物品相似度的协同推荐ItemCF

实现逻辑:

  1. 构建用户-物品共现矩阵
  2. 计算物品之间的相似度,形成矩阵
  3. 获得用户的历史的正反馈物品列表
  4. 基于正反馈列表和其他物品的相似度,找出相似TopK的物品,组成推荐集合
  5. 排序,对推荐集合进行排序,公式如下:

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=hH(wp,hRu,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 mm的方阵,V是 n ∗ n n*n nn的方阵,E为 m ∗ n m*n mn的对角阵。

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 MUmkEkkVknT
则每个用户和物品就可以以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(ruiqiTpu)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(ruiqiTpu)2+λ(qi2+pu2)

梯度下降算法迭代如下:
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α((ruiqiTpu)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α((ruiqiTpu)qiλpu)

α \alpha α之后的部分是目标函数对p,u分别做的偏导。

矩阵分解的优点和局限性

  • 泛化能力强
  • 空间复杂度低
  • 更好的扩展性和灵活性,得到的用户向量和物品向量能跟其他特征拼接。

逻辑回归

逻辑回归的输入为:用户,物品,上下文等多种不同的特征。相比MF和CF这种计算相似度的推荐,LR是将推荐看做一个分类问题,通过预测正样本的概率对物品进行排序。正样本可以是用户点击了某商品,业可以是用户观看了某视频等。LR将推荐转换为为一个点击率(CTR)预估问题。

LR推荐流程:
  1. 准备输入:用户信息,物品信息,当前时间信息等转换为数值型特征向量。
  2. 确定优化目标,利用模型数据进行训练,确定算法内部参数。
  3. 模型服务阶段,将特征向量输入逻辑回归模型,经过逻辑回归模型的推荐,得到“点击”概率
  4. 对结果按照点击率进行排序,得到推荐列表。
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/myii=1m(logfw(xi)+(1yi)log(1fw(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=1i(fw(xi)yi)xji
之后更新 w j w_j wj

LR的优势和局限性

  • 可解释性强,可以通过查看权重的不同,看出特征的重要程度。
  • 表达能力不强,无法进行特征交叉,特征筛选。

你可能感兴趣的:(推荐系统,机器学习)