Logistic regression(逻辑斯蒂回归)

Logistic回归详解

前言

线性回归是一种回归(Regression)方法,常用于预测连续输出,而对于离散的分类输出就难以解决。因此在基于线性回归的前提下,引入了激活函数的概念,形成了Logistic回归。在这里简述自己对Logistic回归的所见所学。 如有谬误,请联系指正。转载请注明出处。

∇ \nabla 联系方式:

e-mail: FesianXu@gmail.com

QQ: 973926198

github: https://github.com/FesianXu

知乎专栏: 计算机视觉/计算机图形理论与应用

微信公众号
qrcode


Logistic regression

线性回归(Linear Regression) 是一种回归方法,常用于预测连续输出,而对于离散的分类输出,则爱莫能助。为了解决线性分类问题,引入了sigmoid激活函数,形成了Logistic回归方法。所谓的sigmoid函数,既是形式如:
σ ( x ) = 1 1 + e − α x (1.1) \sigma(x) = \frac{1}{1+e^{-\alpha x}} \tag{1.1} σ(x)=1+eαx1(1.1)
的式子,通常 α \alpha α取1。图像如下:

![sigmoid](https://img-blog.csdnimg.cn/img_convert/3f138df663d116f1d78cef417d942015.png)

而基本的线性回归的式子我们都知道,如下:
θ ( x ) = θ T x + b (1.2) \theta(x) = \theta^Tx+b \tag{1.2} θ(x)=θTx+b(1.2)
其中, θ T = ( θ 1 , θ 2 , ⋯   , θ n ) \theta^T=(\theta_1, \theta_2,\cdots,\theta_n) θT=(θ1,θ2,,θn) x = ( x 1 , x 2 , ⋯   , x n ) x=(x_1,x_2,\cdots,x_n) x=(x1,x2,,xn),其中n是特征维数,b为实数。

将线性回归和激活函数sigmoid结合起来,就得到了:
f θ ( x ) = 1 1 + e − ( θ T x + b ) (1.3) f_\theta(x) = \frac{1}{1+e^{-(\theta^Tx+b)}} \tag{1.3} fθ(x)=1+e(θTx+b)1(1.3)

我们可以看出,其实sigmoid激活函数的作用可以看成是将 θ T x + b \theta^Tx+b θTx+b映射到 ( 0 , 1 ) (0,1) (0,1)区间中,注意到,因为这个取值区间,我们可以将sigmoid函数看成是将score映射到概率分布的函数,也就是说 f θ ( x ) f_\theta(x) fθ(x)可以看成是概率值。 从这个角度出发,我们定义:

  1. KaTeX parse error: \tag works only in display equations
  2. KaTeX parse error: \tag works only in display equations
    其中,下标i表示第 i i i个样本, x i x_i xi表示第 i i i个样本的特征, x i ∈ R n x_i \in R^n xiRn. y i y_i yi表示第 i i i个样本的标签, y i ∈ { 0 , 1 } y_i \in \{0,1\} yi{0,1}

极大似然估计

极大似然估计(Maximum Likelihood Estimate,MLE)是频率学派常用于对给定模型进行参数估计的方法,在logistic回归中用于(估计)学习出 θ \theta θ b b b的值。极大似然法的基本思想很简单,假定发生的事情(也就是样本)肯定是符合模型的,就是求得参数 θ \theta θ,使得目前所有的样本在这个模型下 f ( x ; θ ) f(x;\theta) f(x;θ)发生的概率之积最大。用到logistic回归上,我们可以得出似然函数:
L ( θ ) = ∏ i = 1 N P ( y i = 1 ∣ x i ) y i P ( y i = 0 ∣ x i ) 1 − y i (2.1) L(\theta) = \prod_{i=1}^N P(y_i=1|x_i)^{y_i} P(y_i=0|x_i)^{1-y_i} \tag{2.1} L(θ)=i=1NP(yi=1xi)yiP(yi=0xi)1yi(2.1)
在实际使用中,因为连乘不如累加好使,我们对等式进行两边求自然对数,得到对数似然函数,有:
ln ⁡ L ( θ ) = ln ⁡ ∏ i = 1 N P ( y i = 1 ∣ x i ) y i P ( y i = 0 ∣ x i ) 1 − y i = ∑ i = 1 N y i ln ⁡ P ( y i = 1 ∣ x i ) + ( 1 − y i ) ln ⁡ P ( y i = 0 ∣ x i ) = ∑ i = 1 N y i ( ln ⁡ P ( y i = 1 ∣ x i ) − ln ⁡ P ( y i = 0 ∣ x i ) ) + ln ⁡ P ( y i = 0 ∣ x i ) = ∑ i = 1 N y i ln ⁡ P ( y i = 1 ∣ x i ) P ( y i = 0 ∣ x i ) + ln ⁡ P ( y i = 0 ∣ x i ) = ∑ i = 1 N y i ln ⁡ P ( y i = 1 ∣ x i ) 1 − P ( y i = 1 ∣ x i ) + ln ⁡ P ( y i = 0 ∣ x i ) = ∑ i = 1 N y i ( θ T x i + b ) + ln ⁡ ( 1 − σ ( θ T x + b ) ) = ∑ i = 1 N y i ( θ T x i + b ) + ln ⁡ 1 1 + e θ T x i + b = ∑ i = 1 N y i ( θ T x i + b ) − ln ⁡ ( 1 + e θ T x i + b ) (2.2) \ln L(\theta) = \ln \prod_{i=1}^N P(y_i=1|x_i)^{y_i} P(y_i=0|x_i)^{1-y_i} \\ = \sum_{i=1}^N y_i \ln P(y_i=1|x_i)+(1-y_i) \ln P(y_i=0|x_i) \\ = \sum_{i=1}^N y_i (\ln P(y_i=1|x_i)-\ln P(y_i=0|x_i))+\ln P(y_i=0|x_i) \\ = \sum_{i=1}^N y_i \ln \frac{P(y_i=1|x_i)}{P(y_i=0|x_i)}+\ln P(y_i=0|x_i) \\ = \sum_{i=1}^N y_i \ln \frac{P(y_i=1|x_i)}{1-P(y_i=1|x_i)}+\ln P(y_i=0|x_i) \\ = \sum_{i=1}^N y_i (\theta^T x_i+b)+\ln (1-\sigma(\theta^Tx+b)) \\ = \sum_{i=1}^N y_i (\theta^T x_i+b)+ \ln \frac{1}{1+e^{\theta^Tx_i+b}} \\ = \sum_{i=1}^N y_i (\theta^T x_i+b)-\ln (1+e^{\theta^Tx_i+b}) \\ \tag{2.2} lnL(θ)=lni=1NP(yi=1xi)yiP(yi=0xi)1yi=i=1NyilnP(yi=1xi)+(1yi)lnP(yi=0xi)=i=1Nyi(lnP(yi=1xi)lnP(yi=0xi))+lnP(yi=0xi)=i=1NyilnP(yi=0xi)P(yi=1xi)+lnP(yi=0xi)=i=1Nyiln1P(yi=1xi)P(yi=1xi)+lnP(yi=0xi)=i=1Nyi(θTxi+b)+ln(1σ(θTx+b))=i=1Nyi(θTxi+b)+ln1+eθTxi+b1=i=1Nyi(θTxi+b)ln(1+eθTxi+b)(2.2)
根据极大似然法的思想,对对数似然函数求最大值,按照传统的方法,我们是对 ln ⁡ L ( θ ) \ln L(\theta) lnL(θ)求导数后令其为0解得极值点,但是我们会发现 ∂ ln ⁡ L ( θ ) ∂ θ = 0 \frac{\partial{\ln L(\theta)}}{\partial{\theta}}=0 θlnL(θ)=0没有解析解,所以我们需要通过梯度下降法去近似求得其数值解。关于梯度下降法的介绍见《随机梯度下降法,批量梯度下降法和小批量梯度下降法以及代码实现》。于是现在我们需要求得 ∂ ln ⁡ L ( θ ) ∂ θ \frac{\partial{\ln L(\theta)}}{\partial{\theta}} θlnL(θ)
∂ ln ⁡ L ( θ ) ∂ θ = ∑ i = 1 N y i x i − 1 1 + e θ T x i + b x i e θ T x i + b = ∑ i = 1 N y i x i − x i 1 1 + e − ( θ T x i + b ) = ∑ i = 1 N y i x i − σ ( θ T x i + b ) x i = ∑ i = 1 N x i ( y i − σ ( θ T x i + b ) ) (2.3) \frac{\partial{\ln L(\theta)}}{\partial{\theta}} = \sum_{i=1}^N y_ix_i-\frac{1}{1+e^{\theta^Tx_i+b}} x_i e^{\theta^Tx_i+b} \\ = \sum_{i=1}^N y_ix_i-x_i \frac{1}{1+e^{-(\theta^Tx_i+b)}} \\ = \sum_{i=1}^N y_ix_i-\sigma(\theta^Tx_i+b)x_i \\ = \sum_{i=1}^N x_i(y_i-\sigma(\theta^Tx_i+b)) \tag{2.3} θlnL(θ)=i=1Nyixi1+eθTxi+b1xieθTxi+b=i=1Nyixixi1+e(θTxi+b)1=i=1Nyixiσ(θTxi+b)xi=i=1Nxi(yiσ(θTxi+b))(2.3)
所以参数的更新公式为:
θ : = θ − η ∂ ln ⁡ L ( θ ) ∂ θ = θ − η ∑ i = 1 N x i ( y i − σ ( θ T x i + b ) ) (2.4) \theta := \theta - \eta \frac{\partial{\ln L(\theta)}}{\partial{\theta}} = \theta - \eta \sum_{i=1}^N x_i(y_i-\sigma(\theta^Tx_i+b)) \tag{2.4} θ:=θηθlnL(θ)=θηi=1Nxi(yiσ(θTxi+b))(2.4)
b : = b − η ∂ ln ⁡ L ( θ ) ∂ b = b − η ∑ i = 1 N ( y i − σ ( θ T x i + b ) ) (2.5) b := b - \eta \frac{\partial{\ln L(\theta)}}{\partial{b}} = b-\eta \sum_{i=1}^N (y_i-\sigma(\theta^Tx_i+b)) \tag{2.5} b:=bηblnL(θ)=bηi=1N(yiσ(θTxi+b))(2.5)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FesianXu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值