机器学习(回归六)——逻辑回归

逻辑回归本质是分类问题,而且是二分类问题,不属于回归,为何把逻辑回归放到回归系统博客中呢?我们可以这样理解,逻辑回归就是用回归的办法来做分类。它是在线性回归的基础上,通过Sigmoid函数进行了非线性转换,从而具有更强的拟合能力。

Sigmoid函数

Sigmoid函数具体的计算公式如下:
g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1
在这里插入图片描述
当x为0时,Sigmoid函数值为0.5。随着x的增大,对应的Sigmoid值将逼近于1;而随着x的减小,Sigmoid值将逼近于0。两种坐标尺度下的Sigmoid函数图。上图的横坐标为-5到5,这时的曲线变化较为平滑;下图横坐标的尺度足够大,可以看到,在x = 0点处Sigmoid函数看起来很像阶跃函数,如果横坐标刻度足够大(上图中的下图),Sigmoid函数看起来很像一个阶跃函数。

Logistic回归分类器

为了实现Logistic回归分类器,我们可以在每个特征上都乘以一个回归系数,然后把所有的结果值相加,将这个总和代入Sigmoid函数中,进而得到一个范围在0~1之间的数值。任何大于0.5的数据被分入1类,小于0.5即被归入0类。所以,Logistic回归也可以被看成是一种概率估计。
p = h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x p=h_\theta (x)=g(\theta ^Tx)=\frac{1}{1+e^{-\theta ^Tx}} p=hθ(x)=g(θTx)=1+eθTx1
所以说,Logistic回归分类器可以看成线性回归与sigmoid的混合函数,是一个二分类的模型(这里是取的0和1,有的算法是+1和-1)
y = { 0 1 y=\begin{cases} 0\\ 1 \end{cases} y={01
y ^ = { 0 , P ( y ^ = 1 ) > p 1 , P ( y ^ = 0 ) > p \hat{y}=\begin{cases} 0,P(\hat{y}=1)>p\\ 1,P(\hat{y}=0)>p \end{cases} y^={0,P(y^=1)>p1,P(y^=0)>p
在用于分类时,实际上是找一个阈值,大于阈值的属于1类别,小于的属于0类别。(阈值是可根据具体情况进行相应变动的)

公式推导

  \, y=1y=0
p(y|x) θ \theta θ 1 − θ 1- \theta 1θ

我们假设
P ( y = 1 │ x ; θ ) = h θ ( x ) P ( y = 0 │ x ; θ ) = 1 − h θ ( x ) P(y=1│x;θ)=h_θ (x) \\ P(y=0│x;θ)=1−h_θ (x) P(y=1x;θ)=hθ(x)P(y=0x;θ)=1hθ(x)
把两个式子结合
P ( y │ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y P(y│x;θ)=\left( h_θ (x) \right)^y \left(1−h_θ (x)\right)^{1−y} P(yx;θ)=(hθ(x))y(1hθ(x))1y
这是因为,我们期望的是,对于单个样本

  • 当y=1时,我们期望 h θ ( x ) h_θ (x) hθ(x) 最大
  • 当y=0时,我们期望 1 − h θ ( x ) 1−h_θ (x) 1hθ(x) 最大

所以综合起来:我们期望 P ( y │ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y P(y│x;θ)=\left( h_θ (x) \right)^y \left(1−h_θ (x)\right)^{1−y} P(yx;θ)=(hθ(x))y(1hθ(x))1y 最大

我们可以对所有样本取似然函数
L ( θ ) = p ( y ⃗ ∣ X ; θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) ( 1 − y ( i ) ) \begin{aligned} L(\theta) =p( \vec{y} | X;\theta) = \prod_{i=1}^m p \left( y^{(i)}|x^{(i)};\theta\right) = \prod_{i=1}^m \left( h_\theta \left( x^{(i)} \right) \right)^{y^{(i)}} \left( 1-h_\theta \left( x^{(i)} \right) \right)^{\left(1-y^{(i)} \right)} \end{aligned} L(θ)=p(y X;θ)=i=1mp(y(i)x(i);θ)=i=1m(hθ(x(i)))y(i)(1hθ(x(i)))(1y(i))
累乘不好求,我们可以求其对数似然函数
l ( θ ) = log ⁡ L ( θ ) = ∑ i = 1 m ( y ( i ) log ⁡ h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) \begin{aligned} l{(\theta)}= \log L{(\theta)} = \sum_{i=1}^m \left( y^{(i)} \log h_\theta \left( x^{(i)}\right) \right) + \left(1-y^{(i)} \right) \log \left( 1-h_\theta \left( x^{(i)} \right) \right) \end{aligned} l(θ)=logL(θ)=i=1m(y(i)loghθ(x(i)))+(1y(i))log(1hθ(x(i)))

最值的问题,我们可以求导。
∂ l ( θ ) ∂ θ j = ∑ i = 1 m ( y ( i ) h θ ( x ( i ) ) − 1 − y ( i ) 1 − h θ ( x ( i ) ) ) ⋅ ∂ h θ ( x ( i ) ) ∂ θ j = ∑ i = 1 m ( y ( i ) g ( θ T x ( i ) ) − 1 − y ( i ) 1 − g ( θ T x ( i ) ) ) ⋅ ∂ g ( θ T x ( i ) ) ∂ θ j = ∑ i = 1 m ( y ( i ) g ( θ T x ( i ) ) − 1 − y ( i ) 1 − g ( θ T x ( i ) ) ) ⋅ g ( θ T x ( i ) ) ( 1 − g ( θ T x ( i ) ) ) ⋅ ∂ ( θ T x ( i ) ) ∂ θ j = ∑ i = 1 m ( y ( i ) ( 1 − g ( θ T x ( i ) ) ) − ( 1 − y ( i ) ) g ( θ T x ( i ) ) ) ⋅ X j ( i ) = ∑ i = 1 m ( y ( i ) − g ( θ T x ( i ) ) ) ⋅ X j ( i ) \begin{aligned} \frac{\partial l(\theta)}{\partial \theta_j} &=\sum_{i=1}^m \left( \frac{y^{(i)}}{h_\theta (x^{(i)})} - \frac{1-y^{(i)}}{1-h_\theta (x^{(i)})} \right) \cdot \frac{\partial h_\theta (x^{(i)})}{\partial \theta_j}\\ &=\sum_{i=1}^m \left( \frac{y^{(i)}}{g(\theta ^T x^{(i)})} - \frac{1-y^{(i)}}{1-g(\theta ^T x^{(i)})} \right) \cdot \frac{\partial g(\theta ^T x^{(i)})}{\partial \theta_j}\\ &=\sum_{i=1}^m \left( \frac{y^{(i)}}{g(\theta ^T x^{(i)})} - \frac{1-y^{(i)}}{1-g(\theta ^T x^{(i)})} \right) \cdot g(\theta ^T x^{(i)}) \left( 1-g(\theta ^T x^{(i)}) \right) \cdot \frac{\partial (\theta ^T x^{(i)})}{\partial \theta_j}\\ &= \sum_{i=1}^m \left( y^{(i)} \left( 1-g(\theta^T x^{(i)}) \right) -(1-y^{(i)}) g(\theta^T x^{(i)}) \right) \cdot X_j^{(i)}\\ &= \sum_{i=1}^m \left( y^{(i)} -g(\theta^T x^{(i)}) \right) \cdot X_j^{(i)} \end{aligned} θjl(θ)=i=1m(hθ(x(i))y(i)1hθ(x(i))1y(i))θjhθ(x(i))=i=1m(g(θTx(i))y(i)1g(θTx(i))1y(i))θjg(θTx(i))=i=1m(g(θTx(i))y(i)1g(θTx(i))1y(i))g(θTx(i))(1g(θTx(i)))θj(θTx(i))=i=1m(y(i)(1g(θTx(i)))(1y(i))g(θTx(i)))Xj(i)=i=1m(y(i)g(θTx(i)))Xj(i)

不难发现:和梯度下降的公式极其类似
∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \sum_{i=1}^m \left(h_\theta(x^{(i)})-y^{(i)} \right) x_j^{(i)} i=1m(hθ(x(i))y(i))xj(i)
这里需要补充一下,在上面求导的过程中,第二行到第三行省略了Sigmoid求导的过程,具体如下:

g ′ ( z ) = ( 1 1 + e − z ) ′ = e − z ( 1 + e − z ) 2 = 1 1 + e − z ⋅ e − z 1 + e − z = 1 1 + e − z ⋅ ( 1 − 1 1 + e − z ) = g ( z ) ⋅ ( 1 − g ( z ) ) \begin{aligned} g^{'} (z) &= \left( \frac{1}{1+e^{-z}} \right)^{'}\\ &=\frac{e^{-z}}{(1+e^{-z})^2}\\ &=\frac{1}{1+e^{-z}} \cdot \frac{e^{-z}}{1+e^{-z}}\\ &=\frac{1}{1+e^{-z}} \cdot \left( 1- \frac{1}{1+e^{-z}}\right)\\ &= g(z) \cdot \left( 1-g(z) \right) \end{aligned} g(z)=(1+ez1)=(1+ez)2ez=1+ez11+ezez=1+ez1(11+ez1)=g(z)(1g(z))

接着上面对数似然的求导结果。我们期望的是极大似然,可以进行一下转换,类似于梯度下降来求 θ \theta θ
θ j = θ j + α ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) ⋅ x j ( i ) \theta_j = \theta_j + \alpha \sum_{i=1}^m \left( y^{(i)} - h_\theta (x^{(i)})\right) \cdot x_j^{(i)} θj=θj+αi=1m(y(i)hθ(x(i)))xj(i)
上式为BGD
θ j = θ j + α ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) \theta_j = \theta_j + \alpha \left(y^{(i)} - h_\theta(x^{(i)}) \right) x_j^{(i)} θj=θj+α(y(i)hθ(x(i)))xj(i)
上式为SGD

我们要让对数似然函数最大,也就是他的相反数 − l ( θ ) -l(θ) l(θ) 最小。而 − l ( θ ) -l(θ) l(θ) 最小化,则可以看成损失函数,求其最小化:
l o s s = − l ( θ ) loss = -l(\theta) loss=l(θ)

先看一下极大似然估计
L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m p i y ( i ) ( 1 − p i ) 1 − y ( i ) L(\theta)=\prod_{i=1}^m p\left( y^{(i)} | x^{(i)};\theta \right)=\prod_{i=1}^m p_i^{y^{(i)}} \left( 1-p_i \right)^{1-y^{(i)}} L(θ)=i=1mp(y(i)x(i);θ)=i=1mpiy(i)(1pi)1y(i)
l ( θ ) = ln ⁡ L ( θ ) = ∑ i = 1 m ln ⁡ ( p i y ( i ) ( 1 − p i ) 1 − y ( i ) ) l(\theta)=\ln L(\theta)=\sum_{i=1}^m \ln \left( p_i^{y^{(i)}} \left( 1-p_i \right)^{1-y^{(i)}} \right) l(θ)=lnL(θ)=i=1mln(piy(i)(1pi)1y(i))

注意,这里 p i = h θ ( x ( i ) ) = 1 1 + e − θ T x ( i ) p_i=h_\theta (x^{(i)})=\frac{1}{1+e^{-\theta^T x^{(i)}}} pi=hθ(x(i))=1+eθTx(i)1

所以,我们可以得到损失函数:
l o s s = − l ( θ ) = − ∑ i = 1 m ( y ( i ) ln ⁡ ( p i ) + ( 1 − y ( i ) ) ln ⁡ ( 1 − p i ) ) = ∑ i = 1 m ( − y ( i ) ln ⁡ ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) ln ⁡ ( 1 − h θ ( x ( i ) ) ) ) \begin{aligned} loss &= -l(\theta)\\ &=-\sum_{i=1}^m \left( y^{(i)} \ln(p_i) +(1-y^{(i)}) \ln(1-p_i)\right)\\ &=\sum_{i=1}^m \left( -y^{(i)} \ln(h_\theta (x^{(i)})) -(1-y^{(i)}) \ln(1-h_\theta (x^{(i)}))\right) \end{aligned} loss=l(θ)=i=1m(y(i)ln(pi)+(1y(i))ln(1pi))=i=1m(y(i)ln(hθ(x(i)))(1y(i))ln(1hθ(x(i))))
这个结果就是交叉熵损失函数。

总结

就一句话:通过以上过程,会发现逻辑回归的求解,跟线性回归的求解基本相同。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值