披着回归的外衣做着分类的工作–逻辑回归
1.背景
机器学习要解决的问题大致分为两类: 预测 or 分类.
预测问题常用回归模型,分类问题可以用决策树等模型。
我们今天要讲的逻辑回归虽然披着回归的外衣,但其实做着分类的工作。
2.逻辑回归到底是什么?
2.1来源和思想
对于一个二分类问题,属性变量为
x
1
,
x
2
,
.
.
.
,
x
m
x_1,x_2,...,x_m
x1,x2,...,xm,分类标签为
y
∈
y∈
y∈{0,1}。
很自然的,我们会忍不住建立
y
y
y 和 属性值
x
1
,
x
2
,
.
.
.
,
x
m
x_1,x_2,...,x_m
x1,x2,...,xm 之间的回归关系,试图对
y
y
y进行预测
→
\to
→
z
:
=
y
^
z:=\hat{y}
z:=y^=
w
T
x
+
b
w^Tx+b
wTx+b , 但是接着我们就会发现:
y
^
\hat{y}
y^的值是实数,但是我们要预测的真正的
y
y
y是个{0,1}变量.
经过人们机智的探索,通过回归我们既然给不出非0即1的预测值,那我们就不给非0即1的预测值了,我们转而给一个概率~~~
为了将预测值变换成分类为1的概率,此时,
S
i
g
m
o
i
d
Sigmoid
Sigmoid函数就登场了:
解释:
S
i
g
m
o
i
d
Sigmoid
Sigmoid函数其实是做了这么一件事:首先我们照常进行回归预测
z
=
w
T
x
+
b
z=w^Tx+b
z=wTx+b, 然后将
z
z
z放进函数
g
(
z
)
=
1
1
+
e
−
z
g(z)=\frac{1}{1+e^{-z}}
g(z)=1+e−z1中进行压缩处理,得出的值
g
(
z
)
g(z)
g(z)就是一个在0
→
\to
→ 1之间变化的值了,并且可以看到
z
z
z越大,
g
(
z
)
g(z)
g(z)越接近1 ; 相应的有
z
z
z越小 ,
g
(
z
)
g(z)
g(z)越接近于0,
(
1
−
g
(
z
)
)
(1-g(z))
(1−g(z))也就越接近于1!
细心的你们肯定会发现:预测出来的
g
(
z
)
g(z)
g(z)接近于1 是否 能代表分类为1的概率越大呢?
其实可以这么看:
z
z
z的值越大,代表属性空间中的点离分类面越远,就越可能属于类别1。(你要问能不能越属于类别0的话,其实是没啥差别的,反正就2类,总能定义成离分类面某一侧方向越远,越为类别1)
因此,先做回归再将预测值放进
S
i
g
m
o
i
d
Sigmoid
Sigmoid函数进行压缩变换,得出来的值可以看做是变量分类为1的概率大小!
以上就是逻辑回归的基本来源和思想。
总结:逻辑回归就是一个将回归预测值代入Sigmoid函数变换成分类为某一类别的概率的回归分类方法。得出的结果不是非0即1的类别值,而是分为某一类别的概率值。
2.2 逻辑回归怎么求解呢?
求解历程先览:类比线性回归,先用最小二乘,后发现代价函数不是凸函数,不好优化,转而构造了新的代价函数,通过梯度下降法最小化新的代价函数便可获得结果。
模仿线性回归,采用最小二乘的思想,用误差平方和做代价函数:
J
(
w
)
=
∑
i
1
2
(
g
(
z
i
)
−
y
i
)
2
J(w)=\sum_{i}{\frac{1}{2}(g(z_i)-y_i)^2}
J(w)=i∑21(g(zi)−yi)2
按照正常思维,接下来我们通常会求导获取最小值,但是会发现该函数不是一个凸函数,会有不止一个极值点,不容易做最优化计算。
这也就意味着我们要想办法设计新的代价函数,按照前面我们讨论的结果(预测出来的
g
(
z
)
g(z)
g(z)越接近于1 ,越能代表分类为1的概率越大),我们可以设:
P
(
y
=
1
∣
X
,
W
)
=
g
(
z
)
P(y=1|X,W)=g(z)
P(y=1∣X,W)=g(z)
其中
y
y
y 是样本X的类别,
P
(
y
=
1
∣
X
,
W
)
P(y=1|X,W)
P(y=1∣X,W)指的是在给定属性值为
X
X
X时样本类别为1的概率,是一个预测值。
进而有:
P
(
y
=
0
∣
X
,
W
)
=
1
−
g
(
z
)
P(y=0|X,W)=1-g(z)
P(y=0∣X,W)=1−g(z)
用一个小技巧,我们可以将上面两个式子结合成一个式子:
P
(
y
∣
X
,
W
)
=
g
(
z
)
y
(
1
−
g
(
z
)
)
1
−
y
,
y
=
0
或
1
P(y|X,W)=g(z)^y(1-g(z))^{1-y}, y=0或1
P(y∣X,W)=g(z)y(1−g(z))1−y,y=0或1
解释:
y
=
1
y=1
y=1的概率就是
g
(
z
)
(
1
−
g
(
z
)
)
0
=
g
(
z
)
g(z)(1-g(z))^{0}=g(z)
g(z)(1−g(z))0=g(z) .
假设我们获得了一个样本,联合概率
∏
P
(
y
i
∣
X
i
,
W
)
\prod P(y_i|X_i,W)
∏P(yi∣Xi,W)越大,说明模型的学习结果与真实情况越接近【可以这么理解:假设对于第
i
i
i个样本点,已知类别为
y
i
=
1
y_i=1
yi=1,对应的联合概率中的第
i
i
i项为
P
(
y
i
=
1
∣
X
i
,
W
)
P(y_i=1|X_i,W)
P(yi=1∣Xi,W),也就是说联合概率表达式中的
y
i
y_i
yi是样本的真实分类,概率是该真实类别的预测值。我们就看一下当前模型预测出真实类别
y
i
=
1
y_i=1
yi=1的概率。很显然,预测出真实类别的概率越大,模型效果越好!】;联合概率越小,表明模型的学习结果与真实情况越背离。
显然,我们下一步的目的就是选择参数
W
W
W让联合概率最大。
求解:
- 写出最大似然函数,取对数化乘为加
L ( W ) = ∑ i = 1 n l n P ( y i ∣ X i ; W ) L(W)=\sum_{i=1}^n{ln P(y_i|X_i;W)} L(W)=i=1∑nlnP(yi∣Xi;W) = ∑ i = 1 n l n ( g ( z i ) y i ( 1 − g ( z i ) 1 − y i ) ) =\sum_{i=1}^n{ln(g(z_i)^{y_i}(1-g(z_i)^{1-y_i}))} =i=1∑nln(g(zi)yi(1−g(zi)1−yi)) = ∑ i = 1 n [ y i l n g ( z i ) + ( 1 − y i ) l n ( 1 − g ( z i ) ) ] =\sum_{i=1}^n{[y_ilng(z_i)+(1-y_i)ln(1-g(z_i))]} =i=1∑n[yilng(zi)+(1−yi)ln(1−g(zi))]
2.最大似然函数取负值获得等价的代价函数:
J
(
W
)
=
−
∑
i
=
1
n
[
y
i
l
n
g
(
z
i
)
+
(
1
−
y
i
)
l
n
(
1
−
g
(
z
i
)
)
]
J(W)= -\sum_{i=1}^n{[y_ilng(z_i)+(1-y_i)ln(1-g(z_i))]}
J(W)=−i=1∑n[yilng(zi)+(1−yi)ln(1−g(zi))]
为了直观的理解,下面给出
J
(
W
)
J(W)
J(W)的图像:
总结: 代价函数越小预测结果越接近于真实.
3.梯度下降求代价函数最小值:
通过
J
(
W
)
J(W)
J(W)的图像可以发现
J
(
W
)
J(W)
J(W)是一个非线性的S型函数,无法通过求偏导来求最小值,但是我们可以通过梯度下降法求解:
首先应该有一个初始的权重
W
0
W_0
W0,然后需要按照梯度下降最快的方向进行更新:
w
j
:
=
w
j
−
η
α
J
(
W
)
α
w
j
w_{j} :=w_j-\eta \frac{\alpha J(W)}{\alpha w_j}
wj:=wj−ηαwjαJ(W)
其中 α J ( W ) α w j = − J ( W ) = − ∑ i = 1 n [ y i 1 g ( z i ) + ( 1 − y i ) 1 ( 1 − g ( z i ) ) ] α g ( z i ) α w j = − ∑ i = 1 n [ y i − g ( z i ) ] x i j \frac{\alpha J(W)}{\alpha w_j}=-J(W)= -\sum_{i=1}^n{[y_i \frac{1}{g(z_i)}+(1-y_i)\frac{1}{(1-g(z_i))}]\frac{\alpha g(z_i)}{\alpha w_j}}=-\sum_{i=1}^n{[y_i-g(z_i)]x_{ij}} αwjαJ(W)=−J(W)=−∑i=1n[yig(zi)1+(1−yi)(1−g(zi))1]αwjαg(zi)=−∑i=1n[yi−g(zi)]xij
注意: α g ( z i ) α w j = α g ( z i ) α z i ∗ α z i α w j , 其 中 g ( z ) ′ = ( 1 1 + e − z ) ′ = g ( z ) [ 1 − g ( z ) ] \frac {\alpha g(z_i)}{\alpha w_j}=\frac {\alpha g(z_i)}{\alpha z_i}*\frac {\alpha z_i}{\alpha w_j},其中g(z)'=(\frac {1}{1+e^{-z}})'=g(z)[1-g(z)] αwjαg(zi)=αziαg(zi)∗αwjαzi,其中g(z)′=(1+e−z1)′=g(z)[1−g(z)]
∗ ∗ 最 终 : w j : = w j − η ∗ ( − ∑ i n [ y i − g ( z i ) ] x i j ) = w j + η ∗ ∑ i n [ y i − g ( z i ) ] x i j **最终: w_j:=w_j- \eta *(-\sum_{i}^n{[y_i-g(z_i)]x_{ij})}=w_j+ \eta *\sum_{i}^n{[y_i-g(z_i)]x_{ij}} ∗∗最终:wj:=wj−η∗(−i∑n[yi−g(zi)]xij)=wj+η∗i∑n[yi−g(zi)]xij
补充:权重向量w的初始化值一般选择接近于0的随机值,如果初始的 w j w_j wj很大的话,会使初始的 z = w T x + b z=w^Tx+b z=wTx+b变得很大,也就会使 g ( z ) g(z) g(z)变得很接近于1,导数会很接近于0,从而会使更新迭代变得很慢!