逻辑回归(详细推导)


用线性回归做分类

线性回归的输出是一个数值,而不是一个标签,显然不能直接解决二分类问题。那我如何改进我们的回归模型来预测标签呢?

一个最直观的办法就是设定一个阈值,比如0,如果我们预测的数值 y > 0 ,那么属于标签A,反之属于标签B,采用这种方法的模型又叫做感知机(Perceptron)。

另一种方法,我们不去直接预测标签,而是去预测标签为A概率,我们知道概率是一个[0,1]区间的连续数值,那我们的输出的数值就是标签为A的概率。一般的如果标签为A的概率大于0.5,我们就认为它是A类,否则就是B类。这就是逻辑回归模型 (Logistics Regression)。


sigmoid

明确预测目标是标签为A的概率。

我们知道,概率是属于[0,1]区间。但是线性模型值域是 [ − ∞ , + ∞ ] [-\infty,+\infty ] [,+]
h θ ( x ) = θ T x h_\theta(x)=\theta^Tx hθ(x)=θTx
我们需要找到一个模型的值域刚好在[0,1]区间,同时要足够好用。

于是,选择了我们的sigmoid函数。
g ( Z ) = 1 1 + e − Z g(Z)=\frac{1}{1+e^{-Z}} g(Z)=1+eZ1
导数性质:
g ( Z ) ′ = ( − 1 ) ( 1 + e − Z ) − 2 e − Z ( − 1 ) = 1 + e − Z − 1 ( 1 + e − Z ) 2 = 1 1 + e − Z − 1 ( 1 + e − Z ) 2 = 1 1 + e − Z ( 1 − 1 1 + e − Z ) = g ( Z ) ( 1 − g ( Z ) ) \begin{aligned} g(Z)'&=(-1)(1+e^{-Z})^{-2}e^{-Z}(-1)\\ &=\frac{1+e^{-Z}-1}{(1+e^{-Z})^{2}}\\ &=\frac{1}{1+e^{-Z}}-\frac{1}{(1+e^{-Z})^{2}}\\ &=\frac{1}{1+e^{-Z}}(1-\frac{1}{1+e^{-Z}})\\ &=g(Z)(1-g(Z)) \end{aligned} g(Z)=(1)(1+eZ)2eZ(1)=(1+eZ)21+eZ1=1+eZ1(1+eZ)21=1+eZ1(11+eZ1)=g(Z)(1g(Z))


模型假设

y ( i ) ∈ { 1 , 0 } h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x y^{(i)} \in \{1,0\} \\ h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}} y(i){1,0}hθ(x)=g(θTx)=1+eθTx1
建模
p ( y ( i ) = 1 ∣ x ( i ) ; θ ) = h θ ( x ( i ) ) p ( y ( i ) = 0 ∣ x ( i ) ; θ ) = 1 − h θ ( x ( i ) ) } ⇒ p ( y ( i ) ∣ x ( i ) ; θ ) = h θ ( x ( i ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i ) \left.\begin{matrix} p(y^{(i)}=1|x^{(i)};\theta)=h_\theta(x^{(i)}) \\ p(y^{(i)}=0|x^{(i)};\theta)=1 - h_\theta(x^{(i)}) \end{matrix}\right\}\Rightarrow p(y^{(i)}|x^{(i)};\theta)=h_\theta(x^{(i)})^{y^{(i)}}(1 - h_\theta(x^{(i)}))^{1-y^{(i)}} p(y(i)=1x(i);θ)=hθ(x(i))p(y(i)=0x(i);θ)=1hθ(x(i))}p(y(i)x(i);θ)=hθ(x(i))y(i)(1hθ(x(i)))1y(i)
log似然函数
l ( θ ) = log ⁡ p ( Y ∣ X ; θ ) = log ⁡ ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∑ i = 1 m log ⁡ p ( y ( i ) ∣ x ( i ) ; θ ) = ∑ i = 1 m log ⁡ ( h θ ( x ( i ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i ) ) = ∑ i = 1 m [ y ( i ) log ⁡ ( h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] \begin{aligned} l(\theta)&=\log p(Y|X;\theta)\\ &=\log\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)\\ &=\sum_{i=1}^{m}\log p(y^{(i)}|x^{(i)};\theta)\\ &=\sum_{i=1}^{m}\log (h_\theta(x^{(i)})^{y^{(i)}}(1 - h_\theta(x^{(i)}))^{1-y^{(i)}})\\ &=\sum_{i=1}^{m}[y^{(i)}\log (h_\theta(x^{(i)})+(1-y^{(i)})\log(1 - h_\theta(x^{(i)}))] \end{aligned} l(θ)=logp(YX;θ)=logi=1mp(y(i)x(i);θ)=i=1mlogp(y(i)x(i);θ)=i=1mlog(hθ(x(i))y(i)(1hθ(x(i)))1y(i))=i=1m[y(i)log(hθ(x(i))+(1y(i))log(1hθ(x(i)))]
优化目标
θ ∗ = arg ⁡ max ⁡ θ l ( θ ) \theta^* = \arg\max_\theta l(\theta) θ=argθmaxl(θ)


求解-梯度提升法

参数更新公式:
θ j = θ j + α ∗ ∂ J ( θ ) ∂ θ j \theta_j = \theta_j + \alpha * \frac{\partial J(\theta)}{\partial \theta_j} θj=θj+αθjJ(θ)
计算梯度:
∂ J ( θ ) ∂ θ j = ∂ ∂ θ j ( ∑ i = 1 m [ y ( i ) log ⁡ ( h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] ) = ∑ i = 1 m [ y ( i ) 1 h θ ( x ( i ) ) − ( 1 − y ( i ) ) 1 1 − h θ ( x ( i ) ) ] ∂ ∂ θ j h θ ( x ( i ) ) = ∑ i = 1 m [ y ( i ) 1 h θ ( x ( i ) ) − ( 1 − y ( i ) ) 1 1 − h θ ( x ( i ) ) ] h θ ( x ( i ) ) ( 1 − h θ ( x ( i ) ) ) ∂ ∂ θ j θ x ( i ) = ∑ i = 1 m [ y ( i ) ( 1 − h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) h θ ( x ( i ) ) ] ∂ ∂ θ j θ x ( i ) = ∑ i = 1 m [ y ( i ) − h θ ( x ( i ) ) ] ∂ ∂ θ j ∑ j = 0 d + 1 θ j ∗ x j ( i ) = ∑ i = 1 m [ y ( i ) − h θ ( x ( i ) ) ] x j ( i ) \begin{aligned} \frac{\partial J(\theta)}{\partial \theta_j}&=\frac{\partial }{\partial \theta_j}(\sum_{i=1}^{m}[y^{(i)}\log (h_\theta(x^{(i)})+(1-y^{(i)})\log(1 - h_\theta(x^{(i)}))]) \\ &=\sum_{i=1}^{m}[y^{(i)}\frac{1}{ h_\theta(x^{(i)})}-(1-y^{(i)})\frac{1}{1 - h_\theta(x^{(i)})}]\frac{\partial }{\partial \theta_j}h_\theta(x^{(i)}) \\ &=\sum_{i=1}^{m}[y^{(i)}\frac{1}{ h_\theta(x^{(i)})}-(1-y^{(i)})\frac{1}{1 - h_\theta(x^{(i)})}]h_\theta(x^{(i)})(1-h_\theta(x^{(i)}))\frac{\partial }{\partial \theta_j} \theta x^{(i)}\\ &=\sum_{i=1}^{m}[y^{(i)}(1 - h_\theta(x^{(i)}))-(1-y^{(i)})h_\theta(x^{(i)})]\frac{\partial }{\partial \theta_j} \theta x^{(i)}\\ &=\sum_{i=1}^{m}[y^{(i)}-h_\theta(x^{(i)})]\frac{\partial }{\partial \theta_j} \sum_{j=0}^{d+1}\theta_j*x_j^{(i)}\\ &=\sum_{i=1}^{m}[y^{(i)}-h_\theta(x^{(i)})]x_j^{(i)} \end{aligned} θjJ(θ)=θj(i=1m[y(i)log(hθ(x(i))+(1y(i))log(1hθ(x(i)))])=i=1m[y(i)hθ(x(i))1(1y(i))1hθ(x(i))1]θjhθ(x(i))=i=1m[y(i)hθ(x(i))1(1y(i))1hθ(x(i))1]hθ(x(i))(1hθ(x(i)))θjθx(i)=i=1m[y(i)(1hθ(x(i)))(1y(i))hθ(x(i))]θjθx(i)=i=1m[y(i)hθ(x(i))]θjj=0d+1θjxj(i)=i=1m[y(i)hθ(x(i))]xj(i)
最终参数更新公式:
θ j = θ j + α ∗ ∑ i = 1 m [ y ( i ) − h θ ( x ( i ) ) ] x j ( i ) \theta_j = \theta_j + \alpha * \sum_{i=1}^{m}[y^{(i)}-h_\theta(x^{(i)})]x_j^{(i)} θj=θj+αi=1m[y(i)hθ(x(i))]xj(i)
注意:上述更新式与线性回归形式上一致,但模型假设不同


优点

  • 直接对分类概率建模,避免了分布假设偏差的问题
  • 输出预测概率,可解释性强
  • Sigmoid函数是任意阶可导的凸函数,易于优化

与其他模型的比较

与线性回归

一个角度

p ( y ( i ) = 1 ∣ x ( i ) ; θ ) = h θ ( x ( i ) ) p ( y ( i ) = 0 ∣ x ( i ) ; θ ) = 1 − h θ ( x ( i ) ) p(y^{(i)}=1|x^{(i)};\theta)=h_\theta(x^{(i)}) \\ p(y^{(i)}=0|x^{(i)};\theta)=1 - h_\theta(x^{(i)}) p(y(i)=1x(i);θ)=hθ(x(i))p(y(i)=0x(i);θ)=1hθ(x(i))
ln ⁡ p ( y ( i ) = 1 ∣ x ( i ) ; θ ) p ( y ( i ) = 0 ∣ x ( i ) ; θ ) = ln ⁡ h θ ( x ( i ) ) 1 − h θ ( x ( i ) ) = ln ⁡ 1 1 + e − θ T x 1 − 1 1 + e − θ T x = θ T x \begin{aligned} \ln \frac{p(y^{(i)}=1|x^{(i)};\theta)}{p(y^{(i)}=0|x^{(i)};\theta)}&=\ln \frac{h_\theta(x^{(i)})}{1-h_\theta(x^{(i)})}\\ &=\ln \frac{\frac{1}{1+e^{-\theta^Tx}}}{1-\frac{1}{1+e^{-\theta^Tx}}}\\ &=\theta^Tx \end{aligned} lnp(y(i)=0x(i);θ)p(y(i)=1x(i);θ)=ln1hθ(x(i))hθ(x(i))=ln11+eθTx11+eθTx1=θTx
逻辑回归相当于是用线性回归预测的结果去逼近标签的对数几率(标签的对数几率的线性回归)。

区别与联系

区别

  • 输出变量分布假设不同:线性回归假设输出变量服从正态分布,逻辑回归假设输出变量服从伯努利分布
  • 目标函数不同:线性回归优化的目标函数是均方误差(最小二乘),而逻辑回归优化的是似然函数(交叉熵)
  • 模型假设不同:线性归回要求自变量与因变量呈线性关系,而逻辑回归没有要求
  • 解释性不同:线性回归分析的是因变量自身与自变量的关系,而逻辑回归研究的是因变量取值的概率与自变量的概率
  • 学习任务不同:逻辑回归处理的是分类问题,线性回归处理的是回归问题,这也导致了两个模型的取值范围不同:0-1和实数域

联系

  • 两个都是线性模型,线性回归是普通线性模型,逻辑回归是广义线性模型
  • 表达形式上,逻辑回归是线性回归套上了一个Sigmoid函数
  • 参数估计上,都可以用极大似然估计的方法估计参数(高斯分布导致了线性模型损失函数为均方差,伯努利分布导致逻辑回归损失函数为交叉熵)

与最大熵模型

逻辑回归本质上是最大熵模型的一个特例。

与SVM

1、LR和SVM有什么相同点

  1. 都是监督分类算法,判别模型;
  2. LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)
  3. 两个方法都可以增加不同的正则化项,如L1、L2等等。所以在很多实验中,两种算法的结果是很接近的。

2、LR和SVM有什么不同点

  • 本质上是其loss function不同
    区别在于逻辑回归采用的是Logistical Loss,SVM采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
    逻辑回归损失函数:
    image
    SVM损失函数:
    image
    LR方法基于概率理论,假设样本为0或者1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值,或者从信息论的角度来看,其是让模型产生的分布P(Y|X)P(Y|X)尽可能接近训练数据的分布;支持向量机基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面 。

  • SVM只考虑分类面上的点,而LR考虑所有点(远离的点对边界线的确定也起作用)
    SVM中,在支持向量之外添加减少任何点都对结果没有影响,而LR则是每一个点都会影响决策。
    Linear SVM不直接依赖于数据分布,分类平面不受一类点影响 ;LR则是受所有数据点的影响,所以受数据本身分布影响的,如果数据不同类别strongly unbalance,一般需要先对数据做balancing。

  • 在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。
    SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。 而LR则每个点都需要两两计算核函数,计算量太过庞大。

  • SVM依赖于数据的测度,而LR则不受影响
    因为SVM是基于距离的,而LR是基于概率的,所以LR是不受数据不同维度测度不同的影响,而SVM依赖于不同维度测度的不同,如果差别较大需要做normalization 。当然如果LR要加上正则化时,也是需要normalization一下的 。

  • SVM自带结构风险最小化,LR则是经验风险最小化
    SVM的损失函数就自带正则(损失函数中的 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2||w||^2} 2w21项),因此SVM是结构风险最小化,而LR必须另外在损失函数上添加正则项。

  • LR和SVM在实际应用的区别
    根据经验,对于小规模数据集,SVM的效果要好于LR,但是大数据中,SVM的计算复杂度受到限制,而LR因为训练简单,可以在线训练,所以经常会被大量采用。


与朴素贝叶斯

两者的不同点

  • 逻辑回归属于判别式模型,而朴素贝叶斯属于生成式模型。
    具体来说,两者的目标虽然都是最大化后验概率,但是逻辑回归是直接对后验概率P(Y|X)进行建模,而朴素贝叶斯是对联合概率P(X,Y)进行建模。

  • 朴素贝叶斯分类器要求“属性条件独立假设”,即对于已知类别的样本x,假设x的所有属性是相互独立的。这就导致了两点与逻辑回归的不同之处:

    • 朴素贝叶斯的限制条件比逻辑回归更加严格,意味着逻辑回归的应用范围更广。
    • 朴素贝叶斯可以不通过(而不是不能)梯度下降等优化方法进行参数优化,事实上,在利用极大似然法的进行参数估计的时候,由于其严格的条件限制,朴素贝叶斯分类器的相关参数就已经很明确了,或者说是有固定的形式了,它可以直接通过统计每个特征的逻辑发生比来当做权重。而逻辑回归求得的参数并没有明确的形式(因为他没有朴素贝叶斯那么严格的限制条件),可以通过梯度下降法等优化方法,得到特征之间的耦合信息,从而得到相应的权重(参数)。
  • 逻辑回归是通过学习超平面来实现分类,而朴素贝叶斯通过考虑特征的概率来实现分类。

  • 逻辑回归在有相关性feature上面学习得到的模型在测试数据的performance更好。也就是说,逻辑回归在训练时,不管特征之间有没有相关性,它都能找到最优的参数。而在朴素贝叶斯中,由于特征直接相互独立的严格设定,在有相关性的feature上面学习到的权重同时变大或变小,它们之间的权重不会相互影响。从这方面来说,如果能够在对参数较好地控制,在损失项方面处理的很好的话,逻辑回归相对朴素贝叶斯在应用时更不会限制在特征工程上面。(简言之,逻辑回归对特征工程的要求相对朴素贝叶斯更低)

  • 朴素贝叶斯的好处是没有优化参数,通过训练数据可以直接得到一个概率表,这些有助于并行化

  • 在小数据上面朴素贝叶斯分类器可以取得更好的效果,随着数据的增多、特征维度的增大,逻辑回归的效果更好。这也是因为朴素贝叶斯是生成模型,在有prior的情况下模型能够把数据fit的更好,而逻辑回归属于判别模型,目标驱动化,不去建模联合概率,通过训练数据直接预测输出,因此在数据足够多的情况下能够得到更好一些的效果。

两者的相同点

  • 两者都利用了极大似然法进行参数估计。虽然似然函数的目标不同。
  • 逻辑回归和朴素贝叶斯分类器都是对特征的线性表达,虽然两者拟合的参数不同,前者是W和b后者是先验概率和似然。
  • 逻辑回归和朴素贝叶斯建模的都是条件概率(后者通过贝叶斯公式得到) ,对所最终求得的不同类的结果有很好的解释性。而不像SVM,神经网络这样解释性不高。

模型细节

适合离散特征

  1. 模型稳定性和鲁棒性。离散后的特征能够去除噪声,对异常值不再敏感,可以加强模型的稳定性。
  2. 简化模型:特征离散化后就降低了样本中的个别信息对模型的影响,降低模型的过拟合的风险。
  3. 计算更快速:更少的变量会运算复杂的大大降低,加快计算速度。
  4. 易于解释性:离散特征方便我们对业务的解释。

为什么使用sigmoid函数?

  • sigmoid函数的优势:概率解释,单调连续可导等
  • 广义线性模型,指数族分布解释

指数族分布

p ( y ; η ) = b ( y ) exp ⁡ { η T T ( y ) − a ( η ) } p(y;\eta)=b(y)\exp\{\eta^TT(y)-a(\eta)\} p(y;η)=b(y)exp{ηTT(y)a(η)}

广义线性模型定义

y ∣ x ; θ ∼ 指 数 族 分 布 ( η ) η = θ T x h θ ( x ) = E [ y ∣ x ; θ ] y|x;\theta \sim 指数族分布(\eta)\\ \eta = \theta^Tx\\ h_\theta(x)=E[y|x;\theta] yx;θ(η)η=θTxhθ(x)=E[yx;θ]
伯努利分布属于指数分布族
p ( y ; ϕ ) = ϕ y ( 1 − ϕ ) 1 − y = exp ⁡ { y ln ⁡ ϕ + ( 1 − y ) ln ⁡ ( 1 − ϕ ) } = exp ⁡ { ln ⁡ ( ϕ 1 − ϕ ) y − ( − ln ⁡ ( 1 − ϕ ) ) } \begin{aligned} p(y;\phi)&=\phi^y(1-\phi)^{1-y}\\ &=\exp\{y\ln \phi +(1-y)\ln (1-\phi)\}\\ &=\exp\{\ln(\frac{\phi}{1-\phi})y-(-\ln(1-\phi))\} \end{aligned} p(y;ϕ)=ϕy(1ϕ)1y=exp{ylnϕ+(1y)ln(1ϕ)}=exp{ln(1ϕϕ)y(ln(1ϕ))}
则有
b ( y ) = 1 T ( y ) = y a ( η ) = − ln ⁡ ( 1 − ϕ ) η = ln ⁡ ( ϕ 1 − ϕ ) ⇒ ϕ = 1 1 + e − η = 1 1 + e − θ T x b(y)=1\\ T(y)=y\\ a(\eta)=-\ln(1-\phi)\\ \eta=\ln(\frac{\phi}{1-\phi})\\ \Rightarrow \phi=\frac{1}{1+e^{-\eta}}=\frac{1}{1+e^{-\theta^Tx}} b(y)=1T(y)=ya(η)=ln(1ϕ)η=ln(1ϕϕ)ϕ=1+eη1=1+eθTx1

为何使用最大似然估计而不用均方误差?

可以从求最优解的角度来解释:

如果用最小二乘法,目标函数就是
∑ i = 1 m [ y ( i ) − 1 1 + e − θ T x ] 2 \sum_{i=1}^{m}[y^{(i)}-\frac{1}{1+e^{-\theta^Tx}}]^2 i=1m[y(i)1+eθTx1]2
是非凸的,不容易求解,会得到局部最优。

如果用最大似然估计,目标函数就是对数似然函数:
∑ i = 1 m [ y ( i ) ln ⁡ 1 1 + e − θ T x + ( 1 − y ( i ) ) ln ⁡ ( 1 − 1 1 + e − θ T x ) ] \sum_{i=1}^{m}[y^{(i)}\ln\frac{1}{1+e^{-\theta^Tx}}+(1-y^{(i)})\ln(1 - \frac{1}{1+e^{-\theta^Tx}})] i=1m[y(i)ln1+eθTx1+(1y(i))ln(11+eθTx1)]
是关于参数的高阶连续可导凸函数,可以方便通过一些凸优化算法求解,比如梯度下降法、牛顿法等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值