Logistic Regression
二值随机变量的伯努利分布。二值随机变量 c ∈ 0 , 1 c \in {0,1} c∈0,1,其概率分布为 f ( c ; p ) = p c ( 1 − p ) 1 − c f(c;p) = p^c(1-p)^{1-c} f(c;p)=pc(1−p)1−c。其中 p = P r ( c = 1 ) p = Pr(c = 1) p=Pr(c=1),即事件发生的可能性。
概率:一个事件发生的可能性
P ( 抽到红球 ) = 红球个数 所有球个数 P(抽到红球) = \frac{红球个数}{所有球个数} P(抽到红球)=所有球个数红球个数
发生比:
o d d s ( 抽到红球 ) = P ( 抽到红球 ) 1 − P ( 抽到红球 ) odds(抽到红球) = \frac{P(抽到红球)}{1-P(抽到红球)} odds(抽到红球)=1−P(抽到红球)P(抽到红球)
Logit:对发生比求对数
L o g i t = l o g ( P ( 抽到红球 ) 1 − P ( 抽到红球 ) ) Logit = log(\frac{P(抽到红球)}{1-P(抽到红球)}) Logit=log(1−P(抽到红球)P(抽到红球))
三者有以下关系。概率取值在01、发生比取值在0lnf。
-
当概率为0.5时,odds = 1
-
当概率大于0.5时, o d d s ∈ ( 1 , l n f ) odds \in (1,lnf) odds∈(1,lnf)
-
当概率小于0.5时, o d d s ∈ ( 0 , 1 ) odds \in (0,1) odds∈(0,1)
可见,当概率大于或小于0.5时,odds范围并不对称。因此当两个概率“对称”时,其发生比并不对称。
概率为0.3和0.7时,这两个概率的均值是0.5,他们是“对称”的;但这两个概率的发生比却分别是0.429和2.333,这使我们很难直观地感受到他们的对称关系。
当概率从0.1增加到0.2,时,发生比增加了0.139;当概率从0.8增加到0.9时,发生比却增加了5,虽然概率的增量相同,但发生比的增量却大大的不同。
概率为0.3和0.7时,Logit分别为-0.847和0.847,这两个值关于0对称,因此我们知道这两Logit值对应的发生比是对称的。
当概率从0.2减少至0.1时,Logit的增量是-0.811;当概率从0.8增加到0.9时,Logit的增量也是0.811,我们可以直观地感受到发生比增量也是对称的。
当发生比为1时,Logit为0;当发生比小于或大于1时,Logit取值范围为(-Inf,0)和(0,Inf).取值范围对称。
作者:小严闲不住 https://www.bilibili.com/read/cv6157816/ 出处:bilibili
令 θ = L o g i t ( p ) = l o g ( P 1 − P ) \theta = Logit(p) = log(\frac{P}{1-P}) θ=Logit(p)=log(1−PP),可以推出$ p = \frac{1}{1+exp(-\theta)}$
Sigmoid函数
σ ( θ ) = e θ e θ + 1 = 1 1 + e − θ \sigma(\theta) = \frac{e^{\theta}}{e^{\theta} + 1} = \frac{1}{1 + e^{-\theta}} σ(θ)=eθ+1eθ=1+e−θ1
- $ \sigma(-\theta) = 1-\sigma(\theta)$
- ∂ σ ( θ ) ∂ θ = σ ( θ ) ( 1 − σ ( θ ) ) = σ ( θ ) σ ( − θ ) \frac{\partial\sigma(\theta)}{\partial \theta} = \sigma(\theta)(1-\sigma(\theta)) = \sigma(\theta)\sigma(-\theta) ∂θ∂σ(θ)=σ(θ)(1−σ(θ))=σ(θ)σ(−θ)
- ∂ l o g σ ( θ ) ∂ θ = σ ( θ ) ( 1 − σ ( θ ) ) σ ( θ ) = σ ( − θ ) \frac{\partial log \sigma(\theta)}{\partial \theta} = \frac{\sigma(\theta)(1-\sigma(\theta))}{\sigma(\theta)} = \sigma(-\theta) ∂θ∂logσ(θ)=σ(θ)σ(θ)(1−σ(θ))=σ(−θ)
- l o g ( 1 − σ ( θ ) ) = l o g ( e − θ 1 + e − θ ) = − θ − l o g ( 1 + e − θ ) log(1-\sigma(\theta)) = log(\frac{e^{-\theta}}{1+e^{-\theta}}) = -\theta - log(1+e^{-\theta}) log(1−σ(θ))=log(1+e−θe−θ)=−θ−log(1+e−θ)
- l o g ( σ ( θ ) ) = − l o g ( 1 + e − θ ) log(\sigma(\theta)) = - log(1+e^{-\theta}) log(σ(θ))=−log(1+e−θ)
损失函数
根据sigmoid的概念,可以得到在给定样本 x x x和参数 w w w,样本 x x x属于正样本 y = 1 y=1 y=1和负样本 y = 0 y=0 y=0的条件概率如下
P ( y = 1 ∣ x ; w ) = σ ( w ′ x ) P ( y = 0 ∣ x ; w ) = 1 − σ ( w ′ x ) P(y=1|x;w) = \sigma(w'x) \\ P(y=0|x;w) = 1 - \sigma(w'x) P(y=1∣x;w)=σ(w′x)P(y=0∣x;w)=1−σ(w′x)
在理想情况下,我们希望上述概率越接近1越好,对第一个公式,概率越接近1说明该样本属于正样本概率更大。下面将两个公式合并统一起来。
L o s s ( σ ( w ′ x ) , y ) = σ ( w ′ x ) y ( 1 − σ ( w ′ x ) ) 1 − y Loss(\sigma(w'x),y) = \sigma(w'x)^y(1-\sigma(w'x))^{1-y} Loss(σ(w′x),y)=σ(w′x)y(1−σ(w′x))1−y
最后将损失函数对数化,当标签值为0和1时。此时 L 01 L_{01} L01为交叉熵损失函数。
L 01 = − [ y l o g σ ( w ′ x ) + ( 1 − y ) l o g ( 1 − σ ( w ′ x ) ) ] = y l o g ( 1 + e − w ′ x ) + ( 1 − y ) [ w ′ x + l o g ( 1 + e − w ′ x ) ] = ( 1 − y ) w ′ x + l o g ( 1 + e − w ′ x ) L_{01} = - [ylog\sigma(w'x) + (1-y)log(1-\sigma(w'x))] \\ = ylog(1+e^{-w'x}) + (1-y)[w'x + log(1+e^{-w'x})] \\= (1-y)w'x + log(1+e^{-w'x}) L01=−[ylogσ(w′x)+(1−y)log(1−σ(w′x))]=ylog(1+e−w′x)+(1−y)[w′x+log(1+e−w′x)]=(1−y)w′x+log(1+e−w′x)
- 当y=1时: L 01 = − l o g σ ( w ′ x ) = l o g ( 1 + e − w ′ x ) L_{01} = - log\sigma{(w'x)} = log(1+e^{-w'x}) L01=−logσ(w′x)=log(1+e−w′x)
- 当y=0时: L 01 = − l o g ( 1 − σ ( w ′ x ) ) ) = w ′ x + l o g ( 1 + e − w ′ x ) L_{01} = -log(1-\sigma(w'x))) = w'x + log(1+e^{-w'x}) L01=−log(1−σ(w′x)))=w′x+log(1+e−w′x)
当标签值为1和-1时
L ± 1 = l o g ( 1 + e − y w ′ x ) = − l o g σ ( y w ′ x ) L_{\pm 1} = log(1+e^{-yw'x}) = -log\sigma(yw'x) L±1=log(1+e−yw′x)=−logσ(yw′x)
目标函数
原本损失函数是希望概率越大越好,越接近1越好。加了负号后,目标函数为最小化损失函数。
上面的损失函数是针对单个样本的,对于整个数据集,假设所有样本相互独立,求所有样本损失函数最值,采用极大似然估计。
$min J(w) = -\sum_{i=1}^{m} [y{i}log\sigma(w’x{i}) + (1-y{i})log(1-\sigma(w’x{i}))] $
梯度下降算法
对于简单函数,求最值可以转换为求其导数为零的点,但对于复杂函数,直接求导为零的点很困难,但可以求函数在某一个点处的导数,并使得函数在这个点处按导数和一个步长更新一个小距离,这样不断迭代,直到参数的变化小于一个非常小的值为止。
- 目标函数的导数 f ′ ( x ) f'(x) f′(x)
- 超参数选择:固定步长alpha = 0.1、精确值 precision = 0.00001、随机选择一个初始x_new = 0,x_old = -1,两者之间的差距要大于precision
- 迭代更新,直到abs(x_old , x_new) < precision
- x_old = x_new
- x_new = x_old + alpha * f ′ ( x o l d ) f'(x_{old}) f′(xold)
- 输出x_new
具体求导公式如下:
∂ J ( w ) ∂ w j = ∂ J ( w ) ∂ σ ( w ) . ∂ σ ( w x ) ∂ w x . ∂ w x ∂ w \frac{\partial J(w)}{\partial w_j} = \frac{\partial J(w)}{\partial \sigma(w)} . \frac{\partial \sigma(wx)}{\partial wx} . \frac{\partial wx}{\partial w} ∂wj∂J(w)=∂σ(w)∂J(w).∂wx∂σ(wx).∂w∂wx
∂ J ( w ) ∂ σ ( w ) = y i σ ( w x ) + y − 1 1 − σ ( w x ) \frac{\partial J(w)}{\partial \sigma(w)} = \frac{y^i}{\sigma(wx)} + \frac{y-1}{1-\sigma(wx)} ∂σ(w)∂J(w)=σ(wx)yi+1−σ(wx)y−1
∂ σ ( w x ) ∂ w x = σ ( w x ) ( 1 − σ ( w x ) ) \frac{\partial \sigma(wx)}{\partial wx} = \sigma(wx)(1-\sigma(wx)) ∂wx∂σ(wx)=σ(wx)(1−σ(wx))
∂ w x ∂ w = x j \frac{\partial wx}{\partial w} = x_j ∂w∂wx=xj
∂ J ( w ) ∂ w j = ∂ J ( w ) ∂ σ ( w ) . ∂ σ ( w x ) ∂ w x . ∂ w x ∂ w = ( y i − σ ( w x ) ) x j \frac{\partial J(w)}{\partial w_j} = \frac{\partial J(w)}{\partial \sigma(w)} . \frac{\partial \sigma(wx)}{\partial wx} . \frac{\partial wx}{\partial w} = (y^i - \sigma(wx))x_j ∂wj∂J(w)=∂σ(w)∂J(w).∂wx∂σ(wx).∂w∂wx=(yi−σ(wx))xj
综上所属,参数 w j w_j wj的更新公式为
w j = w j + α ∑ i = 1 m ( y i − σ ( w x ) ) x j w_j = w_j + \alpha \sum_{i=1}^m (y^i - \sigma(wx))x_j wj=wj+αi=1∑m(yi−σ(wx))xj