机器学习--基础--逻辑回归/分类(logistic regression)原理与设计思路

logistic regression

文章目录

  • logistic regression
    • 原理
      • 前言
      • 建模
    • 思路
      • 为什么采用sigmoid
      • 为什么采用交叉熵构建损失函数

原理

前言

逻辑回归与分类同线性回归与分类有很强的关系;关于逻辑回归算法本身的学习应当参考线性回所指出的一般性思路,即先找两个算法的共同点;其后就逻辑回归算法设计的独到之处进行辨明,即学习该算法相较于其他算法的不同点;从中领略算法设计的思想。

建模

逻辑回归的建模是明确且简单的,假设具有 ( x 0 ( 0 ) , x 1 ( 0 ) , . . . ) , ( x 0 ( 1 ) , x 1 ( 1 ) , . . . ) , . . . (x_0^{(0)},x_1^{(0)},...),(x_0^{(1)},x_1^{(1)},...),... (x0(0),x1(0),...),(x0(1),x1(1),...),...这样的一组特征向量,或者特征矩阵;具有 ( y 0 , y 1 , . . . ) (y_0,y_1,...) (y0,y1,...)这样的一组标签,那么构建起标签同特征向量的关系为
Y = 1 1 + e − h θ ( X ) Y=\frac{1}{1+e^{-h_{\theta}(X)}} Y=1+ehθ(X)1
这里 h θ ( X ) h_{\theta}(X) hθ(X)就是线性回归的模型,具体可参考链接。
这也就明确了,logistic regression 实际上就是需要去确定一组合适的 θ \theta θ使得上述计算出的结果同真实标签的差异最小化;因此接下来就可以基于上述模型,定义出损失函数:
L ( θ ) = − ∑ i = 1 n y i l o g ( p ( x i , θ ) ) + ( 1 − y i ) l o g ( 1 − p ( x i , θ ) ) L(\theta) =- \sum_{i=1}^{n}y_i log(p(x_i,\theta))+(1-y_i)log(1-p(x_i,\theta)) L(θ)=i=1nyilog(p(xi,θ))+(1yi)log(1p(xi,θ))
这里的 p ( x , θ ) p(x,\theta) p(x,θ)就是上述的模型函数。现在先不考虑为什么不是像线性回归那样的绝对值差,先就认为要优化的函数就是上述的 L L L,值得说一句的是这里的 L L L就是深度学习里常见的交叉熵函数,那么一般来说,我们通常采用基于梯度下降的方法来优化L,下面进行推导 ∂ L ∂ θ \frac{\partial L}{\partial \theta} θL

∂ L ∂ θ i = ∑ i = 1 n ( − y i 1 p ( x i , θ ) ∂ p ( x i , θ ) ∂ θ i − ( 1 − y i ) 1 ( 1 − p ( x i , θ ) ) ∂ p ( x i , θ ) ∂ θ i ) \frac{\partial L}{\partial \theta_i}=\sum_{i=1}^{n}(-y_i\frac{1}{p(x_i,\theta)}\frac{\partial p(x_i,\theta)}{\partial \theta_i}-(1-y_i)\frac{1}{(1-p(x_i,\theta))}\frac{\partial p(x_i,\theta)}{\partial \theta_i}) θiL=i=1n(yip(xi,θ)1θip(xi,θ)(1yi)(1p(xi,θ))1θip(xi,θ))
这里的 P P P就是上面的sigmoide函数,以下简称 P P P,这里借用sigmoid函数的性质 y ‘ = y ( 1 − y ) y^`=y(1-y) y=y(1y)代入上述偏微分表达式,可得上式左边等于
− ∑ i = 1 n ( y i 1 P − ( 1 − y i ) 1 ( 1 − P ) ) P ( 1 − P ) ∂ h θ ∂ x i -\sum_{i=1}^{n}(y_i \frac{1}{P}-(1-y_i)\frac{1}{(1-P)})P(1-P)\frac{\partial h_{\theta}}{\partial x_i} i=1n(yiP1(1yi)(1P)1)P(1P)xihθ
进一步可得
− ∑ 1 n ( y i − P ) ∂ h θ ∂ x i -\sum_{1}^{n}(y_i-P)\frac{\partial h_{\theta}}{\partial x_i} 1n(yiP)xihθ
这里 ∂ h θ ∂ x i \frac{\partial h_{\theta}}{\partial x_i} xihθ就是之前的线性回归时的模型的偏微分。
至此,如果使用梯度下降方法进行优化,梯度的计算就可以得到。

回顾以下:1. 定义sigmoid形制的模型,2. 采用交叉熵形制的损失函数,3. 使用梯度下降法在推导出的微分表达式中可以获得权重 θ \theta θ的最佳结果

思路

从上面可以看出,设计logistic regression的思路同线性回归里面所提到的机器学习一般性思路是一以贯之的;即建模,定义损失函数建模,制定损失函数建模的优化方法。
但是,相较于在线性回归里面简单的线性加权建模,这里却用到了sigmoid形制的建模;另外在定义损失函数时并没有像之前那样使用预测值与标签的绝对差来定义。下面就这些不同点,一一讨论。

为什么采用sigmoid

首先,如果我们如果考察线性回归的表现形式时,可以知道在训练的一开始其实是平等对待每一个特征,但是如果特征设计不合理,或者有离群特征点的话,线性回归处理的方式很可能得到一个不好的模型;但是采用sigmoid形制,因为将输出实际上压在0~1之间,实际上可以较为有效的处理这些离群点的影响。当然这只是定性的解释。

定量的的原因是:1. 假定标签 y y y服从伯努利分布,伯努利分布是指随机变量只能取0或者1,非此即彼,2. 然后认为 Y ∣ X Y|X YX满足广义线性模型,即实际上认为有这样的一个分布, η = θ X \eta=\theta X η=θX, η \eta η满足一个指数形式的分布
基于这上述两点可以推导出sigmoid形制函数实际是 y y y的后验概率。
这个理由我其实觉得很扯,因为上面提到的具体的指数形式有很多,可能导致推导的后验概率表达式不一样,但又有人说sigmoid是伯努利分布的正则link函数链接,这可以参考参考。

我个人感觉最为靠谱的解释是从贝叶斯定理的角度出发的
从贝叶斯定理出发可有:
p ( y = 1 ∣ x ) = p ( x ∣ y = 1 ) p ( y = 1 ) p ( x ∣ y = 0 ) p ( y = 0 ) + p ( x ∣ y = 1 ) p ( y = 1 ) p(y=1|x)=\frac{p(x|y=1)p(y=1)}{p(x|y=0)p(y=0)+p(x|y=1)p(y=1)} p(y=1x)=p(xy=0)p(y=0)+p(xy=1)p(y=1)p(xy=1)p(y=1)
假定 Y ∣ X Y|X YX服从伯努利分布,可得:
{ p ( y = 1 ) = ϕ p ( y = 0 ) = 1 − ϕ p ( x ∣ y = 1 ) = 1 2 π 1 / 2 σ 1 1 / 2 e x p ( − ( x − μ 1 ) 2 2 σ 1 2 ) p ( x ∣ y = 0 ) = 1 2 π 1 / 2 σ 0 1 / 2 e x p ( − ( x − μ 2 ) 2 2 σ 0 2 ) \left\{ \begin{aligned} p(y=1)&=\phi\\ p(y=0)&=1-\phi\\ p(x|y=1)&=\frac{1}{2\pi^{1/2}\sigma_1^{1/2}}exp(-\frac{(x-\mu_1)^2}{2\sigma_1^2})\\ p(x|y=0)&=\frac{1}{2\pi^{1/2}\sigma_0^{1/2}}exp(-\frac{(x-\mu_2)^2}{2\sigma_0^2}) \end{aligned} \right. p(y=1)p(y=0)p(xy=1)p(xy=0)=ϕ=1ϕ=2π1/2σ11/21exp(2σ12(xμ1)2)=2π1/2σ01/21exp(2σ02(xμ2)2)
然后将上式代入上面的贝叶斯公式,将公式进行变形
p ( y = 1 ∣ x ) = 1 1 + p ( x ∣ y = 0 ) p ( y = 0 ) p ( x ∣ y = 1 ) p ( y = 1 ) = 1 1 + 1 − ϕ ϕ h ( x , μ 0 , μ 1 , σ 0 , σ 1 ) p(y=1|x) = \frac{1}{1+\frac{p(x|y=0)p(y=0)}{p(x|y=1)p(y=1)}} =\frac{1}{1+\frac{1-\phi}{\phi}h(x,\mu_0,\mu_1,\sigma_0,\sigma_1)} p(y=1x)=1+p(xy=1)p(y=1)p(xy=0)p(y=0)1=1+ϕ1ϕh(x,μ0,μ1,σ0,σ1)1
其中这里的 h h h的表达形式如下,这里假定 σ \sigma σ是一样的:
e x p ( ( μ 1 − μ 0 ) x σ 2 − ( μ 1 − μ 0 ) 2 2 σ 2 ) exp(\frac{(\mu_1-\mu_0)x}{\sigma^2}-\frac{(\mu_1-\mu_0)^2}{2\sigma^2}) exp(σ2(μ1μ0)x2σ2(μ1μ0)2)
然后可以做进一步变化
p ( y = 1 ∣ x ) = 1 1 + h × e x p ( l n ( 1 − ϕ ϕ ) ) p(y=1|x) = \frac{1}{1+h\times exp(ln(\frac{1-\phi}{\phi}))} p(y=1x)=1+h×exp(ln(ϕ1ϕ))1
此时将 h h h代入,并令x的系数项为 θ \theta θ,令其余常数项为 b b b,则上式可变为
p ( y = 1 ∣ x ) = 1 1 + e − ( θ x + b ) p(y=1|x) = \frac{1}{1+e^{-(\theta x+b)}} p(y=1x)=1+e(θx+b)1

为什么采用交叉熵构建损失函数

了解这一点之前需要了解泛函的凸性判断,因为梯度下降法等常见优化方法在凸函数里面可以保证收敛到全局最优点,但是如果函数非凸,则不能保证。
凸函数的定义是这样的,对于 λ ∈ [ 0 , 1 ] \lambda \in [0,1] λ[0,1],取定义域上两点 x , y x,y x,y,满足:
f ( λ x + ( 1 − λ y ) ) ≤ λ f ( x ) + ( 1 − λ ) f ( y ) f(\lambda x+(1-\lambda y)) \leq \lambda f(x)+(1-\lambda)f(y) f(λx+(1λy))λf(x)+(1λ)f(y)
而sigmoid函数的图像,令x的系数为-10:
机器学习--基础--逻辑回归/分类(logistic regression)原理与设计思路_第1张图片
可以看出不满足上述凸的定义;因此在设计损失函数时,并不能直接套用将这个函数代入线性回归那样的做法中。
然而采用交叉熵那样的做法是符合凸函数的情形。

你可能感兴趣的:(机器学习)