1. 写在前面
本文主要针对一个简单的机器学习算法逻辑斯蒂回归模型进行相关的讲解。主要内容包括:逻辑斯蒂回归模型定义及来源、二项逻辑斯蒂回归模型形式与推导、二项逻辑斯蒂回归模型的参数估计与多项逻辑斯蒂回归模型推广。
2. 逻辑斯蒂回归模型定义及来源
逻辑斯蒂回归模型主要是来源于逻辑斯蒂分布与逻辑斯蒂函数。当然,如果换一个名字,你对它应当相当熟悉,那就是sigmoid函数。它的形式如下:
f
(
x
)
=
1
1
+
e
−
x
f(x)=\frac{1}{1+e^{-x}}
f(x)=1+e−x1
而逻辑斯蒂回归模型的另一个则来源于线性回归:
g
(
x
)
=
w
0
x
0
+
w
1
x
1
+
⋅
⋅
⋅
+
w
n
x
n
=
w
T
x
g(x)=w_0x_0+w_1x_1+···+w_nx_n=w^Tx
g(x)=w0x0+w1x1+⋅⋅⋅+wnxn=wTx
把两者组合起来,就形成了大名鼎鼎的十大数据挖掘算法(LR):
f
(
x
)
=
1
1
+
e
−
g
(
x
)
=
1
1
+
e
−
w
T
x
=
e
w
T
x
1
+
e
w
T
x
f(x)=\frac{1}{1+e^{-g(x)}}=\frac{1}{1+e^{-w^Tx}}=\frac{e^{w^Tx}}{1+e^{w^Tx}}
f(x)=1+e−g(x)1=1+e−wTx1=1+ewTxewTx
那么这个 f ( x ) f(x) f(x)值获得的是什么呢?是正例的概率值,它是一个0到1之间的数。
3. 二项逻辑斯蒂回归模型形式与推导
二项回归模型形式表示如下;
p
(
y
=
1
∣
x
)
=
e
w
T
x
1
+
e
w
T
x
=
π
(
x
)
p(y=1|x)=\frac{e^{w^Tx}}{1+e^{w^Tx}}=\pi(x)
p(y=1∣x)=1+ewTxewTx=π(x)
p
(
y
=
0
∣
x
)
=
1
−
p
(
y
=
1
∣
x
)
=
1
1
+
e
w
T
x
p(y=0|x)=1-p(y=1|x)=\frac{1}{1+e^{w^Tx}}
p(y=0∣x)=1−p(y=1∣x)=1+ewTx1
在第二节中,我们讲,这个来源于我们的sigmoid函数。而具体的,其实主要来源于一个逻辑斯蒂回归模型。它牵扯到这样一个名词——几率。
严格上讲,几率和概率是不一样的。他们之间的关系是:一个时间的几率是指该事件发生的概率与改时间不发生的概率的壁纸。该事件的对数几率就为:
l
o
g
i
t
(
p
)
=
l
o
g
(
p
1
−
p
)
logit(p)=log(\frac{p}{1-p})
logit(p)=log(1−pp)
因此就得到了这样一个式子:
l
o
g
(
P
(
y
=
1
∣
x
)
1
−
P
(
y
=
1
∣
x
)
)
=
w
T
x
log({\frac{P(y=1|x)}{1-P(y=1|x)}})=w^Tx
log(1−P(y=1∣x)P(y=1∣x))=wTx
这个式子就是说,输出y=1的对数几率是输入x的线性函数。这点为后面的化简做准备。
3.1 逻辑斯蒂回归一般形式
一般的,认为正例y值为1,负例y值为0,则可以得到其似然函数为:
∏
i
=
0
N
[
π
(
x
i
)
]
y
i
[
1
−
π
(
x
i
)
]
1
−
y
i
\prod_{i=0}^N[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}
i=0∏N[π(xi)]yi[1−π(xi)]1−yi
对数似然函数为:
L
(
w
)
=
∑
i
=
1
N
[
y
i
l
o
g
π
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
π
(
x
i
)
)
]
L(w)=\sum_{i=1}^N[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))]
L(w)=i=1∑N[yilogπ(xi)+(1−yi)log(1−π(xi))]
=
∑
i
=
1
N
[
y
i
l
o
g
π
(
x
i
)
1
−
π
(
x
i
)
+
l
o
g
(
1
−
π
(
x
i
)
)
]
=\sum_{i=1}^N[y_ilog\frac{\pi(x_i)}{1-\pi(x_i)}+log(1-\pi(x_i))]
=i=1∑N[yilog1−π(xi)π(xi)+log(1−π(xi))]
=
∑
i
=
1
N
[
y
i
(
w
⋅
x
i
)
−
l
o
g
(
1
+
e
x
p
(
w
⋅
x
i
)
)
]
=\sum_{i=1}^N[y_i(w·x_i)-log(1+exp(w·x_i))]
=i=1∑N[yi(w⋅xi)−log(1+exp(w⋅xi))]
对L(w)求极大值,就能得到w的估计值。
一般的使用拟牛顿法或者梯度下降法求解最佳参数。这里使用梯度下降法求解。
w
n
e
w
=
w
o
l
d
+
L
′
(
w
)
δ
w^{new}=w^{old}+L'(w)\delta
wnew=wold+L′(w)δ
其中
δ
\delta
δ为设定的学习率,也就是步长,
L
′
(
w
)
L'(w)
L′(w)可以求解过程如下:
L
′
(
w
)
=
∑
n
=
1
N
x
i
(
y
i
−
π
(
x
i
)
)
L'(w)=\sum_{n=1}^Nx_i(y_i-\pi(x_i))
L′(w)=n=1∑Nxi(yi−π(xi))
3.2 逻辑斯蒂回归另一种形式
如果令正例y值为1,负例y值为-1,则可以得到另一种逻辑斯蒂回归形式。这种形式是非常美妙的,如果我们进行一次转换就能看出一点端倪:
P
(
y
=
1
∣
X
)
=
e
w
T
x
1
+
e
w
T
x
=
1
1
+
e
−
w
T
x
P(y=1|X)=\frac{e^{w^Tx}}{1+e^{w^Tx}}=\frac{1}{1+e^{-w^Tx}}
P(y=1∣X)=1+ewTxewTx=1+e−wTx1
P
(
y
=
−
1
∣
X
)
=
1
1
+
e
w
T
x
P(y=-1|X)=\frac{1}{1+e^{w^Tx}}
P(y=−1∣X)=1+ewTx1
可以看出这样一个规律:
h
(
X
)
=
1
1
+
e
y
w
T
x
h(X)=\frac{1}{1+e^{yw^Tx}}
h(X)=1+eywTx1
另外一方面,我们看到sigmoid函数有一个特性:
s
i
g
m
o
i
d
(
−
x
)
=
1
−
s
i
g
m
o
i
d
(
x
)
sigmoid(-x)=1-sigmoid(x)
sigmoid(−x)=1−sigmoid(x)
因此我们可以得到极大似然估计为(假设X1为正例,X2为负例):
a
r
g
m
a
x
H
=
P
(
x
1
)
h
(
x
1
)
P
(
x
2
)
[
1
−
h
(
x
2
)
]
.
.
.
argmaxH=P(x_1)h(x_1)P(x_2)[1-h(x_2)]...
argmaxH=P(x1)h(x1)P(x2)[1−h(x2)]...
a
r
g
m
a
x
H
=
P
(
x
1
)
h
(
y
1
x
1
)
P
(
x
2
)
h
(
y
2
x
2
)
.
.
.
argmaxH=P(x_1)h(y_1x_1)P(x_2)h(y_2x_2)...
argmaxH=P(x1)h(y1x1)P(x2)h(y2x2)...
取对数后,等价于:
E
=
a
r
g
m
i
n
1
N
∑
n
=
1
N
−
I
n
(
1
1
+
e
−
y
n
W
T
x
n
)
E=argmin\frac{1}{N}\sum_{n=1}^N-In(\frac{1}{1+e^{-y_nW^Tx_n}})
E=argminN1n=1∑N−In(1+e−ynWTxn1)
E
=
a
r
g
m
i
n
1
N
∑
n
=
1
N
I
n
(
1
+
e
−
y
n
W
T
x
n
)
E=argmin\frac{1}{N}\sum_{n=1}^NIn(1+e^{-y_nW^Tx_n})
E=argminN1n=1∑NIn(1+e−ynWTxn)
我们需要求导为0,才能为极值,因此需要调整参数W,调整方法如下:
W
t
+
1
=
W
t
−
η
∇
E
W_{t+1}=W_{t}-\eta\nabla E
Wt+1=Wt−η∇E
其中
η
\eta
η为学习速率,
∇
E
=
∂
E
∂
W
(
w
t
)
=
1
N
∑
n
=
1
N
−
y
n
X
n
1
+
e
y
n
W
t
T
X
n
\nabla E=\frac{\partial E}{\partial W}(w_t)=\frac{1}{N}\sum_{n=1}^N\frac{-y_nX_n}{1+e^{y_nW_t^TX_n}}
∇E=∂W∂E(wt)=N1n=1∑N1+eynWtTXn−ynXn
3.4 进行预测
在进行预测时,最终会获得一个值,这个值表示的是正例的概率,一般的,我们会设计一个阈值,当大于阈值时,我们认为是正例,低于阈值时,我们认为是负例。至于阈值的多少与问题有关,如果要求正例的置信度要高,那么阈值可以高一些。
4. 二项逻辑斯蒂回归模型的参数估计与多项逻辑斯蒂回归模型推广
4.1 二项逻辑斯蒂回归模型的参数估计
二阶逻辑斯蒂回归模型的参数估计这里使用的是极大似然估计。极大似然估计其实就是把所有可能性相乘得到的似然函数求导。
似然函数大部分情况都是这样:
如果设:
p
(
Y
=
1
∣
x
)
=
π
(
x
)
,
p
(
Y
=
0
∣
x
)
=
1
−
π
(
x
)
p(Y=1|x)=\pi(x),p(Y=0|x)=1-\pi(x)
p(Y=1∣x)=π(x),p(Y=0∣x)=1−π(x)
则:
∏
i
=
1
N
[
π
(
x
i
)
]
y
i
[
1
−
π
(
x
i
)
]
1
−
y
i
\prod_{i=1}^N[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}
i=1∏N[π(xi)]yi[1−π(xi)]1−yi
对数似然函书即为:
L
(
w
)
=
∑
i
=
1
N
[
y
i
l
o
g
π
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
π
(
x
i
)
)
]
L(w)=\displaystyle \sum_{i=1}^N[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))]
L(w)=i=1∑N[yilogπ(xi)+(1−yi)log(1−π(xi))]
=
∑
i
=
1
N
[
y
i
l
o
g
π
(
x
i
)
1
−
π
(
x
i
)
+
l
o
g
(
1
−
π
(
x
i
)
)
]
=\displaystyle \sum_{i=1}^N[y_ilog\frac{\pi(x_i)}{1-\pi(x_i)}+log(1-\pi(x_i))]
=i=1∑N[yilog1−π(xi)π(xi)+log(1−π(xi))]
=
∑
i
=
1
N
[
y
i
(
w
⋅
x
i
)
−
l
o
g
(
1
+
e
w
⋅
x
i
)
]
=\displaystyle \sum_{i=1}^N[y_i(w·x_i)-log(1+e^{w·x_i})]
=i=1∑N[yi(w⋅xi)−log(1+ew⋅xi)]
然后求这个L(w)的极大值即可,就得到了w的估计值。一般使用梯度下降法或者拟牛顿法解决。
以牛顿法为例,其第t+1轮迭代解的更新公式为:
w
t
+
1
=
w
t
−
(
∂
2
L
(
w
)
∂
w
∂
w
T
)
−
1
∂
L
(
w
)
∂
w
w^{t+1}=w^{t}-(\frac{\partial ^2L(w)}{\partial w\partial w^T})^{-1}\frac{\partial L(w)}{\partial w}
wt+1=wt−(∂w∂wT∂2L(w))−1∂w∂L(w)
其中,一阶导数和二阶导数分别为:
∂
L
(
w
)
∂
w
=
−
∑
i
=
1
m
x
^
i
(
y
i
−
p
1
(
x
^
i
;
w
)
)
\frac{\partial L(w)}{\partial w}=-\sum^m_{i=1}\hat x_i(y_i-p_1(\hat x_i;w))
∂w∂L(w)=−i=1∑mx^i(yi−p1(x^i;w))
∂
2
L
(
w
)
∂
w
∂
w
T
=
∑
i
=
1
m
x
^
i
x
^
i
T
p
1
(
x
^
i
;
w
)
(
1
−
p
1
(
x
^
i
;
w
)
)
\frac{\partial ^2L(w)}{\partial w\partial w^T}=\sum^m_{i=1}\hat x_i\hat x_i^{T}p_1(\hat x_i;w)(1-p_1(\hat x_i;w))
∂w∂wT∂2L(w)=i=1∑mx^ix^iTp1(x^i;w)(1−p1(x^i;w))
值得注意的是,这里的二阶导数中拥有 x ^ i x ^ i T \hat x_i\hat x_i^{T} x^ix^iT,这就是能做分布式的关键。,矩阵乘法的分布式运算方法使用上即可。
4.2 多项逻辑斯蒂回归模型推广
多项逻辑斯蒂回归模型与二项逻辑斯蒂回归模型样子长的挺像的,也就是选取其中一个可能性的分子为1,剩下的可能性为
e
w
k
⋅
x
e^{w_k·x}
ewk⋅x即可:
P
(
Y
=
k
∣
x
)
=
e
w
k
⋅
x
1
+
∑
k
=
1
K
−
1
e
w
k
⋅
x
,
k
=
1
,
2
,
⋅
⋅
⋅
,
K
−
1
P(Y=k|x)=\frac{e^{w_k·x}}{1+\displaystyle \sum_{k=1}^{K-1}e^{w_k·x}},k=1,2,···,K-1
P(Y=k∣x)=1+k=1∑K−1ewk⋅xewk⋅x,k=1,2,⋅⋅⋅,K−1
P
(
Y
=
K
∣
x
)
=
1
1
+
∑
k
=
1
K
−
1
e
w
k
⋅
x
P(Y=K|x)=\frac{1}{1+\displaystyle \sum_{k=1}^{K-1}e^{w_k·x}}
P(Y=K∣x)=1+k=1∑K−1ewk⋅x1