Logistic Regression 对数几率回归
首先logistic regression不是叫逻辑回归,而是叫对数几率回归。然后对数几率回归也不是用来解决回归问题的,而是解决分类问题的。
一、由线性回归引入对数几率回归
设有训练集 { X , Y } ∈ N \{X,Y\}\in \Bbb N {X,Y}∈N, { x 0 , x 1 , x 2 , . . . , x n } ∈ X \{x_0,x_1,x_2,...,x_n\}\in X {x0,x1,x2,...,xn}∈X, { y 0 , y 1 , y 2 , . . , y n } ∈ Y \{y_0,y_1,y_2,..,y_n\}\in Y {y0,y1,y2,..,yn}∈Y。先构造线性回归函数:
f ( x ) = w T x + b f(x)={\bf w}^T {\bf x}+b f(x)=wTx+b
这个大家应该都知道怎么来的,
x
\bf x
x为输入向量,
w
,
b
{\bf w},b
w,b为参数向量。
考虑二分类问题,线性回归的输出是真实数,而二分类问题的输出则是阶跃函数:
f ( z ) = { 0 , if z < 0.5 0.5 , if z = 0.5 1 , if z > 0.5 f(z)=\begin{cases}0, & \text{if $z<0.5$} \\0.5, & \text{if $z=0.5$} \\1, & \text{if $z>0.5$} \end{cases} f(z)=⎩⎪⎨⎪⎧0,0.5,1,if z<0.5if z=0.5if z>0.5
那么如何将线性回归输出的真实数转化为阶跃函数的0/1(0.5抛弃不用)呢。这里考虑sigmoid函数,构造sigmoid函数如下:
σ
(
z
)
=
1
1
+
e
−
z
\sigma(z)=\cfrac{1}{1+e^{-z} }
σ(z)=1+e−z1
z
=
w
T
x
+
b
z={\bf w}^T {\bf x}+b
z=wTx+b
其函数图像如下:

sigmoid函数图
该函数的导如下,因为可以用自身来表示,接下来用到的时候,就知道它的好处了
σ ( z ) ′ = ( 1 1 + e z ) ′ = e − z ( 1 + e − z ) 2 = 1 + e − z − 1 ( 1 + e − z ) 2 = 1 1 + e − z ( 1 + − 1 1 + e − z ) = σ ( z ) ( 1 − σ ( z ) ) \begin{aligned} \sigma(z)^\prime & = (\cfrac{1}{1+e^z})^\prime \\ & = \cfrac {e^{-z}}{(1+e^{-z})^2} \\ & = \cfrac {1+e^{-z}-1}{(1+e^{-z})^2} \\ & = \cfrac {1}{1+e^{-z}}(1+\cfrac {-1}{1+e^{-z}}) \\ & = \sigma(z) (1-\sigma(z)) \end{aligned} σ(z)′=(1+ez1)′=(1+e−z)2e−z=(1+e−z)21+e−z−1=1+e−z1(1+1+e−z−1)=σ(z)(1−σ(z))
二、损失函数
目前已知对数几率函数如下:
σ ( x ) = 1 1 + e − ( w T x + b ) \sigma(x)=\cfrac{1}{1+e^{-({\bf w^Tx}+b)}} σ(x)=1+e−(wTx+b)1
现在问题变成如何求解该函数的两个未知参数w,b。由于分类问题为有监督学习,对于训练集来说,我们是已知其分布的。那么已知数据分布,求解能够使最大限度地其服该分布的参数,可以用极大似然估计来解决。构造极大似然函数
l ( w , b ) = ∏ i = 0 n P ( y i ∣ x i ; w , b ) l(w,b)= \prod_{i=0}^n P(y_i|x_i;w,b) l(w,b)=i=0∏nP(yi∣xi;w,b)
要使学习算法尽可能地学习到训练集特征,即是说预测出来的当前数据类别是真实类别的概率要尽可能大,那么就要最大化极大似然函数。则有下面等价变换(取对数是一般极大似然估计函数的解法,转累乘为累加,转最大化为最小化,因为目标函数为凸函数。这部分可以看看极大似然函数相关知识):
w ∗ , b ∗ = a r g m a x w , b l ( w , b ) = a r g m i n w , b − l n l ( w , b ) \begin{aligned} w^*,b^* & = arg \text{ } max_{w,b}l(w,b) \\ & = arg \text{ } min_{w,b}-lnl(w,b) \\ \end{aligned} w∗,b∗=arg maxw,bl(w,b)=arg minw,b−lnl(w,b)
在本二分类问题中,设类别0为
y
0
y^0
y0,设类别1为
y
1
y^1
y1,对于任意
x
∈
X
x\in X
x∈X,设其为类别0的概率为
p
(
x
)
=
P
(
y
0
∣
x
)
p(x)=P(y^0|x)
p(x)=P(y0∣x),则其为类别1的概率为
P
(
y
1
∣
x
)
=
1
−
p
(
x
)
P(y^1|x)=1-p(x)
P(y1∣x)=1−p(x)
设训练集中第一个数据为类别0,第二个数据为类别1,第三个数据为类别0,……,
则极大似然函数可展开为:
− l n l ( w , b ) = − l n [ p ( x 0 ) ( 1 − p ( x 1 ) ) p ( x 2 ) . . . ] = − [ y 0 ∗ l n p ( x 0 ) + ( 1 − y 0 ) ∗ l n ( 1 − p ( x 0 ) ) ]   − [ y 1 ∗ l n p ( x 1 ) + ( 1 − y 1 ) ∗ l n ( 1 − p ( x 1 ) ) ]   − [ y 2 ∗ l n p ( x 2 ) + ( 1 − y 2 ) ∗ l n ( 1 − p ( x 2 ) ) ]     . . . \begin{aligned} -lnl(w,b) & = -ln[p(x_0)(1-p(x_1))p(x_2)...] \\ & = -[ {\color{#F0F}{y_0}}*lnp(x_0)+ {\color{#F0F}{(1-y_0)}}*ln(1-p(x_0)) ] \\ & \quad \, -[ {\color{#F0F}{y_1}}*lnp(x_1)+ {\color{#F0F}{(1-y_1)}}*ln(1-p(x_1))] \\ & \quad \, -[ {\color{#F0F}{y_2}}*lnp(x_2)+ {\color{#F0F}{(1-y_2)}}*ln(1-p(x_2)) ] \\ & \quad \; \, ... \end{aligned} −lnl(w,b)=−ln[p(x0)(1−p(x1))p(x2)...]=−[y0∗lnp(x0)+(1−y0)∗ln(1−p(x0))]−[y1∗lnp(x1)+(1−y1)∗ln(1−p(x1))]−[y2∗lnp(x2)+(1−y2)∗ln(1−p(x2))]...
注意粉色部分对应其真实类别,因此与真实类别不符的一边就会为0,从而消去,得到的结果也是符合实际要求的。这样我们需要最小化的损失函数就如下:
− l n l ( w , b ) = ∑ i − [ y i ∗ l n p ( x i ) + ( 1 − y i ) ∗ l n ( 1 − p ( x i ) ) ] -lnl(w,b)=\sum_{i} -[y_i*lnp(x_i)+(1-y_i)*ln(1-p(x_i))] −lnl(w,b)=i∑−[yi∗lnp(xi)+(1−yi)∗ln(1−p(xi))]
接下来可以用很多方法来最小化这个函数,比如牛顿法或者梯度下降法。这里使用梯度下降法来解:
−
l
n
l
(
w
,
b
)
∂
w
=
∑
i
−
[
y
i
∗
l
n
p
(
x
i
)
∂
w
+
(
1
−
y
i
)
∗
l
n
(
1
−
p
(
x
)
)
∂
w
]
=
∑
i
−
[
y
i
∗
l
n
σ
(
z
)
∂
z
∂
z
∂
w
+
(
1
−
y
i
)
∗
l
n
(
1
−
σ
(
z
)
)
∂
z
∂
z
∂
w
]
=
∑
i
−
[
y
i
∗
1
σ
(
z
)
∂
σ
(
z
)
∂
z
∂
(
w
T
x
i
+
b
)
∂
w
+
(
1
−
y
i
)
∗
1
1
−
σ
(
z
)
−
∂
σ
(
z
)
∂
z
∂
(
w
T
x
i
+
b
)
∂
w
]
∂
σ
(
z
)
∂
z
前面已经提过
=
∑
i
−
[
y
i
∗
(
1
−
σ
(
z
)
)
x
i
−
(
1
−
y
i
)
σ
(
z
)
x
i
]
=
∑
i
−
[
y
i
∗
(
1
−
σ
(
z
)
)
−
(
1
−
y
i
)
σ
(
z
)
]
x
i
=
∑
i
−
(
y
i
−
σ
(
z
)
)
x
i
\begin{aligned} \cfrac {-lnl(w,b)}{\partial w} & =\sum_{i}-[y_i*\cfrac {lnp(x_i)}{\partial w}+(1-y_i)*\cfrac {ln(1-p(x))}{\partial w}] \\ & = \sum_{i} -[y_i*\cfrac {ln \sigma(z)}{\partial z} \cfrac {\partial z}{\partial w}+(1-y_i)* \cfrac{ln(1-\sigma(z))}{\partial z} \cfrac{\partial z}{\partial w}] \\ & = \sum_{i} -[y_i * \cfrac {1}{\sigma(z)} \cfrac { \partial \sigma(z)}{ \partial z} \cfrac { \partial (w^Tx_i + b)}{ \partial w}+(1-y_i)* \cfrac {1}{1- \sigma(z)} \cfrac {- \partial \sigma(z)}{ \partial z} \cfrac { \partial (w^Tx_i + b)}{ \partial w}] \qquad \text{$ \cfrac{\partial{ \sigma(z)}}{ \partial z}$前面已经提过} \\ & = \sum_{i}-[y_i*(1- \sigma(z))x_i-(1-y_i) \sigma(z)x_i] \\ & = \sum_{i}-[y_i*(1- \sigma(z))-(1-y_i) \sigma(z)]x_i \\ & = \sum_{i}-(y_i- \sigma(z))x_i \end{aligned}
∂w−lnl(w,b)=i∑−[yi∗∂wlnp(xi)+(1−yi)∗∂wln(1−p(x))]=i∑−[yi∗∂zlnσ(z)∂w∂z+(1−yi)∗∂zln(1−σ(z))∂w∂z]=i∑−[yi∗σ(z)1∂z∂σ(z)∂w∂(wTxi+b)+(1−yi)∗1−σ(z)1∂z−∂σ(z)∂w∂(wTxi+b)]∂z∂σ(z)前面已经提过=i∑−[yi∗(1−σ(z))xi−(1−yi)σ(z)xi]=i∑−[yi∗(1−σ(z))−(1−yi)σ(z)]xi=i∑−(yi−σ(z))xi
则有
w
w
w更新公式,其中
η
\eta
η为
l
e
a
r
n
i
n
g
  
r
a
t
e
learning \; rate
learningrate,即学习率:
w
i
+
1
=
w
i
−
η
∑
i
−
(
y
i
−
σ
(
z
)
)
x
i
w_{i+1}=w_i- \eta \sum_i-(y_i- \sigma(z))x_i
wi+1=wi−ηi∑−(yi−σ(z))xi
有机会再更新手写logistic regression。