基础推荐模型——传送门:
- 推荐系统 | 基础推荐模型 | 协同过滤 | UserCF与ItemCF的Python实现及优化
- 推荐系统 | 基础推荐模型 | 矩阵分解模型 | 隐语义模型 | PyTorch实现
- 推荐系统 | 基础推荐模型 | 逻辑回归模型 | LS-PLM | PyTorch实现
- 推荐系统 | 基础推荐模型 | 特征交叉 | FM | FFM | PyTorch实现
- 推荐系统 | 基础推荐模型 | GBDT+LR模型 | Python实现
一、逻辑回归(LR模型)
相比协同过滤模型仅利用用户与物品的相互行为信息进行推荐,逻辑回归模型能够综合利用用户、物品、上下文等多种不同的特征,生成较为"全面"的推荐结果。另外,逻辑回归的另一种表现形式"感知机"作为神经网络中最基础的神经元,是深度学习的基础性结构。因此,多特征融合的逻辑回归模型成了独立于协同过滤的推荐模型发展的另一个主要方向。
相比协同过滤和矩阵分解利用用户和物品的"相似度"进行推荐,逻辑回归将推荐问题看成一个分类问题,通过预测正样本的概率对物品进行排序。这里的正样本可以是用户"点击"了某商品,也可以是用户"观看"了某视频,均是推荐系统希望用户产生的"正反馈"行为。 因此,逻辑回归模型将推荐问题转换成一个点击率( Click Through Rate , CTR
) 预估问题。
1.基于逻辑回归模型的推荐流程
基于逻辑回归的推荐过程如下:
- 将用户年龄、性别、物品属性、物品描述、当前时间、当前地点等特征转换成数值型特征向量
- 确定逻辑回归模型的优化目标(以优化"点击率"为例),利用已有样本数据对逻辑回归模型进行训练,确定逻辑回归模型的内部参数
- 在模型服务阶段,将特征向量输入逻辑回归模型,经过逻辑回归模型的推断,得到用户"点击" (这里用点击作为推荐系统正反馈行为的例子)物品的概率
- 利用"点击"概率对所有候选物品进行排序,得到推荐列表
基于逻辑回归的推荐过程的重点在于利用样本的特征向量进行模型训练和在线推断。
2.逻辑回归的数学形式
如图所示,逻辑回归模型的推断过程可以分为如下几步:
- 将特征向量 x = ( x 1 , x 2 , . . . x n ) x=(x_1,x_2,...x_n) x=(x1,x2,...xn)作为模型的输入
- 通过为各特征赋予相应的权重 ( w 1 , w 2 , . . . , w n + 1 ) (w_1,w_2,...,w_{n+1}) (w1,w2,...,wn+1)来表示各特征的重要性差异,将各特征进行加权求和,得到 x T w x^Tw xTw
- 将 x T w x^Tw xTw输入 sigmoid 函数,使之映射到 0~1 的区间,得到最终的"点击率"
其中, sigmoid 函数的具体形式为:
f ( z ) = 1 1 + e − z f(z)=\frac{1}{1+e^{-z}} f(z)=1+e−z1
因此,逻辑回归模型整个推断过程的数学形式为:
f ( x ) = f w ( x ) = 1 1 + e − ( w ⋅ b + x ) f(x)=f_w(x)=\frac{1}{1+e^{-(w·b+x)}} f(x)=fw(x)=1+e−(w⋅b+x)1
对于标准的逻辑回归模型来说,要确定的参数就是特征向量相应的权重向量 w w w。
3.逻辑回归模型的训练方法
逻辑回归模型常用的训练方法是梯度下降法、牛顿法、拟牛顿法等,其中梯度下降法是应用最广泛的训练方法。
使用梯度下降法求解逻辑回归模型的第一步是确定逻辑回归的目标函数。对于一个输入样本 x x x,预测结果为正样本(类别1)和负样本(类别0)的概率如下:
p ( y = 1 ∣ x ; w ) = f w ( x ) p(y=1|x;w)=f_w(x) p(y=1∣x;w)=fw(x)
p ( y = 0 ∣ x ; w ) = 1 − f w ( x ) p(y=0|x;w)=1-f_w(x) p(y=0∣x;w)=1−fw(x)
其中, f w ( x ) f_w(x) fw(x)是逻辑回归的数学形式。
将上面两个式子综合起来,可以写成如下形式:
p ( y ∣ x ; w ) = ( f w ( x ) ) y ( 1 − f w ( x ) ) 1 − y p(y|x;w)=(f_w(x))^y(1-f_w(x))^{1-y} p(y∣x;w)=(fw(x))y(1−fw(x))1−y
由极大似然估计的原理可以写出逻辑回归的目标函数,如下所示:
L ( w ) = ∏ i = 1 m P ( y ∣ x ; w ) L(w)=\prod_{i=1}^{m}P(y|x;w) L(w)=i=1∏mP(y∣x;w)
由于目标函数连乘的形式不便于求导,故在上式两侧取 log
,并乘以系数 − 1 m -\frac{1}{m} −m1,将求最大值的问题转换成求极小值的问题,最终的目标函数形式如下所示:
J ( w ) = − 1 m L ( w ) = − 1 m ( ∑ i = 1 m ( y i l o g f w ( x i ) ) + ( 1 − y i ) l o g ( 1 − f w ( x i ) ) ) J(w)=-\frac{1}{m}L(w)=-\frac{1}{m}(\sum_{i=1}^{m}(y^ilogf_w(x^i))+(1-y^i)log(1-f_w(x^i))) J(w)=−m1L(w)=−m1(i=1∑m(