什么是逻辑回归

LR 是 Logistic Regression Classifier,本质上是线性回归,特殊之处在于特征到结果的映射中加入了一层逻辑函数 g(z) 是 sigmoid 函数。因此逻辑回归 = 线性回归 + sigmoid。

线性回归公式:
y = w T x + b y = w^Tx + b y=wTx+b
有时候为了方便,将权值向量和输入向量加以扩充,仍记作 w , x w, x w,x w = ( w ( 1 ) , w ( 2 ) , . . . , w ( n ) , b ) , x = ( x ( 1 ) , x ( 2 ) , . . . , x ( w ) , 1 ) w = (w^{(1)}, w^{(2)}, ... , w^{(n)}, b), x = (x^{(1)}, x^{(2)}, ... , x^{(w)}, 1) w=(w(1),w(2),...,w(n),b),x=(x(1),x(2),...,x(w),1)
即:
y = w x y = wx y=wx

sigmoid 公式:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1+e^{-x}} σ(x)=1+ex1

因此,逻辑回归的公式:
π ( x ) = 1 1 + e − w T x \pi(x) = \frac{1}{1+e^{-w^Tx}} π(x)=1+ewTx1

逻辑回归的优势

逻辑回归的优点:

  1. 它是直接对分类可能性进行建模,无需实现假设数据分布,这样就避免了假设分布不准确所带来的问题;
  2. 它不是仅预测出“类别”,而是可得到近似概率预测,这对许多需利用概率辅助决策的任务很有用;
  3. 逻辑回归函数是任意阶可导的凸函数,有很好的数学性质,现有的许多数值优化算法都可直接用于求取最优解。
  4. 对于线性数据,(大部分时候)逻辑回归的拟合和计算都非常快,计算效率优于SVM和随机森林

逻辑回归的推导

假设数据集为:
D a t a : ( x i , y i ) i = 1 N Data:({{x}_{i}},{{y}_{i}})_{i=1}^{N} Data:(xi,yi)i=1N
其中: x i ∈ R p , y ∈ 0 , 1 {{x}_{i}}\in {{\mathbb{R}}^{p}},y\in 0,1 xiRp,y0,1

线性回归是将向量 x x x 映射为具体的数值 y (连续),而逻辑回归是用来解决分类问题(通常为二分类问题),希望得到0或1的概率(概率区间为[0, 1]),即通过某种方式将数值 y 映射到区间 [0, 1] 范围内。逻辑回归采用 sigmoid 函数来完成这样的映射,从而建立 y 与 x 之间的概率判别模型
P ( Y ∣ X ) P(Y|X) P(YX)

p 1 = P ( y = 1 ∣ x ) = 1 1 + e − w T x p1=P(y=1|x)=\frac{1}{1+e^{-w^Tx}} p1=P(y=1x)=1+ewTx1
p 0 = p ( y = 0 ∣ x ) = 1 − P ( y = 1 ∣ x ) = e − w T x 1 + e − w T x p0 = p(y=0|x) = 1 - P(y=1|x) = \frac{e^{-w^Tx}}{1+e^{-w^Tx}} p0=p(y=0x)=1P(y=1x)=1+ewTxewTx

得到
P ( Y ∣ X ) = p 1 Y p 0 1 − Y , Y ∈ 0 , 1 P(Y|X) = p_1^Yp_0^{1-Y}, Y∈0,1 P(YX)=p1Yp01Y,Y0,1
对应的似然函数为
∏ i = 1 N P ( y i ∣ x i ) \prod\limits_{i=1}^{N}{P({{y}_{i}}|{{x}_{i}})} i=1NP(yixi)

取对数,得到对数似然函数
L ( w ) = ∏ i = 1 N log ⁡ P ( y i ∣ x i ) = ∑ i = 1 N ( y i log ⁡ p 1 + ( 1 − y i ) log ⁡ p 0 ) = ∑ i = 1 N ( y i ( log ⁡ p 1 − log ⁡ ( 1 − p 1 ) ) + log ⁡ ( 1 − p 1 ) ) = ∑ i = 1 N ( y i log ⁡ p 1 1 − p 1 + log ⁡ ( 1 − p 1 ) ) = ∑ i = 1 N ( y i ( w T x i ) + log ⁡ e − w T x i 1 + e − w T x i ) = ∑ i = 1 N ( y i ( w T x i ) + log ⁡ 1 1 + e w T x i ) = ∑ i = 1 N ( y i ( w T x i ) − log ⁡ ( 1 + e w T x i ) \begin{aligned} L(w) & =\prod\limits_{i=1}^{N}{\log P({{y}_{i}}|{{x}_{i}})} \\ & =\sum\limits_{i=1}^{N}{({{y}_{i}}\log {{p}_{1}}+(1-{{y}_{i}})\log {{p}_{0}})} \\ & =\sum\limits_{i=1}^{N}{({{y}_{i}}(\log {{p}_{1}}-\log (1-{{p}_{1}}))+\log (1-{{p}_{1}}))} \\ & =\sum\limits_{i=1}^{N}{({{y}_{i}}\log \frac{{{p}_{1}}}{1-{{p}_{1}}}+\log (1-{{p}_{1}}))} \\ & =\sum\limits_{i=1}^{N}{({{y}_{i}}({{w}^{T}}{{x}_{i}})+\log \frac{{{e}^{-{{w}^{T}}{{x}_{i}}}}}{1+{{e}^{-{{w}^{T}}{{x}_{i}}}}})} \\ & =\sum\limits_{i=1}^{N}{({{y}_{i}}({{w}^{T}}{{x}_{i}})+\log \frac{1}{1+{{e}^{{{w}^{T}}{{x}_{i}}}}})} \\ & =\sum\limits_{i=1}^{N}{({{y}_{i}}({{w}^{T}}{{x}_{i}})-\log (1+{{e}^{{{w}^{T}}{{x}_{i}}}})} \\ \end{aligned} L(w)=i=1NlogP(yixi)=i=1N(yilogp1+(1yi)logp0)=i=1N(yi(logp1log(1p1))+log(1p1))=i=1N(yilog1p1p1+log(1p1))=i=1N(yi(wTxi)+log1+ewTxiewTxi)=i=1N(yi(wTxi)+log1+ewTxi1)=i=1N(yi(wTxi)log(1+ewTxi)

L ( w ) L(w) L(w) 求极大值(即极大似然估计值),即可得到 w w w 的估计值
w ^ = arg ⁡ max ⁡ w   L ( w ) \hat{w}=\underset{w}{\mathop{\arg \max }}\,L(w) w^=wargmaxL(w)

这样,问题就变成了以对数似然函数为目标的最优化问题,可采用梯度下降法或拟牛顿法。

梯度


π ( w T x i ) = 1 1 + e − w T x \pi(w^Tx_i) = \frac{1}{1+e^{-w^Tx}} π(wTxi)=1+ewTx1

此时梯度
∂ L ( w ) ∂ w = ∂ ∂ w [ ∑ i = 1 N ( y i ( w T x i ) − log ⁡ ( 1 + e w T x i ) ) ] = ∑ i = 1 N ( y i x i − x i e w T x i 1 + e w T x i ) = ∑ i = 1 N ( y i − e w T x i 1 + e w T x i ) x i = ∑ i = 1 N ( y i − 1 1 + e − w T x i ) x i = ∑ i = 1 N ( y i − π ( w T x i ) ) x i \begin{aligned} \frac{\partial L(w)}{\partial w} & =\frac{\partial }{\partial w}[\sum\limits_{i=1}^{N}{({{y}_{i}}({{w}^{T}}{{x}_{i}})-\log (1+{{e}^{{{w}^{T}}{{x}_{i}}}}))}] \\ & =\sum\limits_{i=1}^{N}{({{y}_{i}}{{x}_{i}}-\frac{{{x}_{i}}{{e}^{{{w}^{T}}{{x}_{i}}}}}{1+{{e}^{{{w}^{T}}{{x}_{i}}}}})} \\ & =\sum\limits_{i=1}^{N}{({{y}_{i}}-\frac{{{e}^{{{w}^{T}}{{x}_{i}}}}}{1+{{e}^{{{w}^{T}}{{x}_{i}}}}})}{{x}_{i}} \\ & =\sum\limits_{i=1}^{N}{({{y}_{i}}-\frac{1}{1+{{e}^{-{{w}^{T}}{{x}_{i}}}}})}{{x}_{i}} \\ & =\sum\limits_{i=1}^{N}{({{y}_{i}}-\pi ({{w}^{T}}{{x}_{i}}))}{{x}_{i}} \\ \end{aligned} wL(w)=w[i=1N(yi(wTxi)log(1+ewTxi))]=i=1N(yixi1+ewTxixiewTxi)=i=1N(yi1+ewTxiewTxi)xi=i=1N(yi1+ewTxi1)xi=i=1N(yiπ(wTxi))xi

因为求的是最大似然估计值,所以采用梯度上升法:
w j : = w j + α ∑ i = 1 N ( y i − π ( w T x i ) ) x i j {{w}_{j}}:={{w}_{j}}+\alpha \sum\limits_{i=1}^{N}{({{y}_{i}}-\pi ({{w}^{T}}{{x}_{i}}))}x_{i}^{j} wj:=wj+αi=1N(yiπ(wTxi))xij

参考资料

[1]【关于 逻辑回归】那些你不知道的事

[2]《统计学习方法第二版》

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐