1.3 逻辑回归
逻辑回归相比于基于共现矩阵的算法,将 推荐分数 转为 推荐概率,从而将原本的分数估计问题转为事件是否发生的分类问题(e.g. 点击率(Click Through Rate,CTR)估计问题)。该算法能够利用用户、物品、上下文等多种不同的特征,生成较为全面的推荐结果。
-
学习过程:
用户特征,物品属性,上下文等特征数值化+预处理→训练逻辑回归模型。
-
推理过程:
用户特征,物品属性,上下文等特征数值化+预处理→模型预测得到概率→概率排序→生成推荐结果。
数学建模:
逻辑回归算法将因变量y视为符合泊松分布的随机变量,适用于推荐语境,对于输入向量 x i \mathbf{x}_i xi,其计算过程如下:
y ^ i = f ( x i , w , b ) = 1 1 − e − ( w T x + b ) \hat{y}_i=f(\mathbf{x}_i,\mathbf{w},b)=\frac{1}{1-e^{-(\mathbf{w}^T\mathbf{x}+b)}} y^i=f(xi,w,b)=1−e−(wTx+b)1
结合最大似然估计法以及对数化简,其目标函数为,
m i n w , b L ( w , b ) = − 1 n ∑ i = 1 , … , n y i l o g ( f ( x i , w , b ) ) − ( 1 − y i ) ( 1 − f ( x i , w , b ) ) min_{\textbf{w},b}\quad L(\textbf{w},b)=-\frac{1}{n}\sum_{i=1,\dots,n}{y_ilog(f(\mathbf{x}_i,\mathbf{w},b))-(1-y_i)(1-f(\mathbf{x}_i,\mathbf{w},b))} minw,bL(w,b)=−n1i=1,…,n∑yilog(f(xi,w,b))−(1−yi)(1−f(xi,w,b))
求导过程如下:
- 令 z = w T x + b z=\mathbf{w}^T\mathbf{x}+b z=wTx+b, ∂ f ∂ w = e − z ( 1 − e − z ) 2 ∂ z ∂ w = ( 1 − f ( x i , w , b ) ) f ( x i , w , b ) x \frac{\partial{f}}{\partial{\mathbf{w}}}=\frac{e^{-z}}{(1-e^{-z})^2}\frac{\partial z}{\partial \mathbf{w}}=(1-f(\mathbf{x}_i,\mathbf{w},b))f(\mathbf{x}_i,\mathbf{w},b)\mathbf{x} ∂w∂f=(1−e−z)2e−z∂w∂z=(1−f(xi,w,b))f(xi,w,b)x
- ∂ L ∂ w = − 1 n ∑ i = 1 , … , n y i f ( x i , w , b ) ( 1 − f ( x i , w , b ) ) f ( x i , w , b ) x + 1 − y i 1 − f ( x i , w , b ) ( f ( x i , w , b ) − 1 ) f ( x i , w , b ) x = 1 n ∑ i = 1 , … , n ( f ( x i , w , b ) − y i ) x \frac{\partial L}{\partial \mathbf{w}}=-\frac{1}{n}\sum_{i=1,\dots,n}{\frac{y_i}{f(\mathbf{x}_i,\mathbf{w},b)}(1-f(\mathbf{x}_i,\mathbf{w},b))f(\mathbf{x}_i,\mathbf{w},b)\mathbf{x}+\frac{1-y_i}{1-f(\mathbf{x}_i,\mathbf{w},b)}}(f(\mathbf{x}_i,\mathbf{w},b)-1)f(\mathbf{x}_i,\mathbf{w},b)\mathbf{x}=\frac{1}{n}\sum_{i=1,\dots,n}{(f(\mathbf{x}_i,\mathbf{w},b)-y_i)\mathbf{x}} ∂w∂L=−n1∑i=1,…,nf(xi,w,b)yi(1−f(xi,w,b))f(xi,w,b)x+1−f(xi,w,b)1−yi(f(xi,w,b)−1)f(xi,w,b)x=n1∑i=1,…,n(f(xi,w,b)−yi)x
- ∂ L ∂ b = − 1 n ∑ i = 1 , … , n y i f ( x i , w , b ) ( 1 − f ( x i , w , b ) ) f ( x i , w , b ) + 1 − y i 1 − f ( x i , w , b ) ( f ( x i , w , b ) − 1 ) f ( x i , w , b ) = 1 n ∑ i = 1 , … , n ( f ( x i , w , b ) − y i ) \frac{\partial L}{\partial b}=-\frac{1}{n}\sum_{i=1,\dots,n}{\frac{y_i}{f(\mathbf{x}_i,\mathbf{w},b)}(1-f(\mathbf{x}_i,\mathbf{w},b))f(\mathbf{x}_i,\mathbf{w},b)+\frac{1-y_i}{1-f(\mathbf{x}_i,\mathbf{w},b)}}(f(\mathbf{x}_i,\mathbf{w},b)-1)f(\mathbf{x}_i,\mathbf{w},b)=\frac{1}{n}\sum_{i=1,\dots,n}{(f(\mathbf{x}_i,\mathbf{w},b)-y_i)} ∂b∂L=−n1∑i=1,…,nf(xi,w,b)yi(1−f(xi,w,b))f(xi,w,b)+1−f(xi,w,b)1−yi(f(xi,w,b)−1)f(xi,w,b)=n1∑i=1,…,n(f(xi,w,b)−yi)
算法总结:
优点:可解释性强,易于工程化( 易于并行,模型简单,训练开销小)。
缺点:特征单一,表达能力弱,无法进行特征交叉和特征筛选。
为什么不用线性回归? 因为线性回归对因变量y的假设是符合高斯分布,而逻辑回归是符合泊松分布,明显泊松分布更使用于这类二分类问题的数学假设。