前人栽树,后人乘凉,既然前人已经完成了的工作,我觉得没必要做重复的工作,“拿来主义”对于我个人的入门和学习是必要的。在此谢谢他们。内容来自:https://blog.csdn.net/hongbin_xu/article/details/78270526,如果有侵权,联系我删除。
理论推导
在以前的博客(机器学习入门学习笔记:(2.1)线性回归理论推导 )中推导了单元线性回归和多元线性回归的模型。
将线性回归模型简写为:
y
=
ω
T
x
+
b
y=\omega^{T} x+b
y=ωTx+b;
对数线性回归模型可以写成:
ln
(
y
)
=
ω
T
+
b
\ln (y)=\omega^{T}+b
ln(y)=ωT+b;本质上仍然是线性回归,只不过拟合的是非线性的ln函数了。
更一般地,考虑单调可微函数
g
(
.
)
g( .)
g(.),令
y
=
g
−
1
(
ω
T
x
+
b
)
y=g^{-1}\left(\omega^{T} x+b\right)
y=g−1(ωTx+b);这个模型就叫做广义线性回归模型。
对于二分类任务,输出标记为
y
∈
{
0
,
1
}
y \in\{0,1\}
y∈{0,1},而线性回归的预测结果
h
(
x
)
=
ω
T
x
+
b
h(x)=\omega^{T} x+b
h(x)=ωTx+b,很明显是一个连续值,所以需要将其转换为0/1值。
所以要用到单位阶越函数:
y
=
{
0
,
h
(
x
)
<
0
0.5
,
h
(
x
)
=
0
1
,
h
(
x
)
>
0
y=\left\{\begin{array}{l}{0, h(x)<0} \\ {0.5, h(x)=0} \\ {1, h(x)>0}\end{array}\right.
y=⎩⎨⎧0,h(x)<00.5,h(x)=01,h(x)>0
即,若预测值大于0,就判为正例;若预测值小于0,就判为负例;临界值处,任意判别。
我们都知道,阶跃函数不可导,不连续,而
g
−
1
(
.
)
g^{-1}( .)
g−1(.)必须是一个可微的函数,所以阶跃函数不能用作
g
−
1
(
.
)
g^{-1}( .)
g−1(.),还需要找一个连续函数代替阶跃函数。
我们常用对数几率函数(logistic function)来进行替代:
y
=
1
1
+
e
−
z
y=\frac{1}{1+e^{-z}}
y=1+e−z1
画出图形会看到它形似S,所以也是一种sigmoid函数。
把对数几率函数作为
g
−
1
(
.
)
g^{-1}( .)
g−1(.),代入到广义线性回归的公式中:
y
=
1
1
+
e
−
(
ω
T
x
+
b
)
y=\frac{1}{1+e^{-\left(\omega^{T} x+b\right)}}
y=1+e−(ωTx+b)1
做一些化简,可以得到:
ln
(
y
1
−
y
)
=
ω
T
x
+
b
\ln \left(\frac{y}{1-y}\right)=\omega^{T} x+b
ln(1−yy)=ωTx+b
其中,y是正例的可能性,(1-y)是负例的可能性。
那么,这个
ln
(
y
1
−
y
)
\ln \left(\frac{y}{1-y}\right)
ln(1−yy)其实就是“对数几率”,等式右边的是什么不用说了吧。可以看出,对数几率回归实质上就是使用线性回归模型
(
ω
T
x
+
b
)
\left(\omega^{T} x+b\right)
(ωTx+b)来逼近这个对数几率
(
ln
(
y
1
−
y
)
)
\left(\ln \left(\frac{y}{1-y}\right)\right)
(ln(1−yy))。
好的,那么问题来了。如何求解出这个模型中的未知参数ω和b呢?
只考虑二分类的情况下,将y换成后验概率
P
(
y
=
1
∣
x
)
P(y=1 | x)
P(y=1∣x)来表示,同理1-y可以换成
P
(
y
=
0
∣
x
)
P(y=0 | x)
P(y=0∣x)。
则有:
{
ln
(
P
(
y
−
1
∣
x
)
P
(
y
−
0
∣
x
)
)
=
ω
T
x
+
b
P
(
y
=
1
∣
x
)
+
P
(
y
=
0
∣
x
)
=
1
\left\{\begin{array}{l}{\ln \left(\frac{P(y-1 | x)}{P(y-0 | x)}\right)=\omega^{T} x+b} \\ {P(y=1 | x)+P(y=0 | x)=1}\end{array}\right.
{ln(P(y−0∣x)P(y−1∣x))=ωTx+bP(y=1∣x)+P(y=0∣x)=1
解得:
{
P
(
y
=
1
∣
x
)
=
e
x
x
+
b
1
+
e
x
T
x
+
b
P
(
y
=
0
∣
x
)
=
1
1
+
e
x
x
x
+
b
\left\{\begin{array}{l}{P(y=1 | x)=\frac{e^{x} x+b}{1+e^{x^{T} x+b}}} \\ {P(y=0 | x)=\frac{1}{1+e^{x^{x} x+b}}}\end{array}\right.
{P(y=1∣x)=1+exTx+bexx+bP(y=0∣x)=1+exxx+b1
通过极大似然法来估计ωω和bb:
L
(
ω
,
b
)
=
∑
i
=
1
m
ln
(
P
(
y
i
∣
x
i
;
ω
,
b
)
)
L(\omega, b)=\sum_{i=1}^{m} \ln \left(P\left(y_{i} | x i ; \omega, b\right)\right)
L(ω,b)=∑i=1mln(P(yi∣xi;ω,b))
为表述方便,使用一个新矩阵ββ来表示ω和b,令
β
=
{
ω
,
b
}
\beta=\{\omega ,b\}
β={ω,b}。
同时也要给x矩阵补上一列1,令
x
′
=
{
x
,
1
}
x^{\prime}=\{x \quad, 1\}
x′={x,1}。因为要对应参数b,补上1,保证结果不变。
那么,
ω
T
x
+
b
=
β
T
x
′
\omega^{T} x+b=\beta^{T} x^{\prime}
ωTx+b=βTx′。
由于是二分类,即只有y=0和y=1的情况,那么可以将似然项重写为y=0和y=1的情况相加:
p
(
y
i
∣
x
i
;
β
)
=
y
i
×
p
(
y
=
1
∣
x
i
′
;
β
)
+
(
1
−
y
i
)
×
p
(
y
=
0
∣
x
i
′
;
β
)
p\left(y_{i} | x_{i} ; \beta\right)=y_{i} \times p\left(y=1 | x_{i}^{\prime} ; \beta\right)+\left(1-y_{i}\right) \times p\left(y=0 | x_{i}^{\prime} ; \beta\right)
p(yi∣xi;β)=yi×p(y=1∣xi′;β)+(1−yi)×p(y=0∣xi′;β)
”西瓜书“上是这么写的,当然这样也不难理解。其实为了后面推导方便和容易理解,我们可以换成对数几率的形式来表示,原理依然是一样的,无非是加了个对数:
ln
[
p
(
y
i
∣
x
i
;
β
)
]
=
y
i
×
ln
[
p
(
y
=
1
∣
x
i
′
;
β
)
]
+
(
1
−
y
i
)
×
ln
[
p
(
y
=
0
∣
x
i
′
;
β
)
]
\ln \left[p\left(y_{i} | x_{i} ; \beta\right)\right]=y_{i} \times \ln \left[p\left(y=1 | x_{i}^{\prime} ; \beta\right)\right]+\left(1-y_{i}\right) \times \ln \left[p\left(y=0 | x_{i}^{\prime} ; \beta\right)\right]
ln[p(yi∣xi;β)]=yi×ln[p(y=1∣xi′;β)]+(1−yi)×ln[p(y=0∣xi′;β)]
将上式代入到前面极大似然的公式中:
L
(
β
)
=
∑
i
=
1
m
ln
(
P
(
y
i
∣
x
i
;
β
)
)
L(\beta)=\sum_{i=1}^{m} \ln \left(P\left(y_{i} | x i ; \beta\right)\right)
L(β)=i=1∑mln(P(yi∣xi;β))
联立前面推出的后验概率的结果:
{
P
(
y
=
1
∣
x
)
=
e
x
T
x
+
b
1
+
e
x
T
x
+
b
P
(
y
=
0
∣
x
)
=
1
1
+
e
x
T
x
+
b
\left\{\begin{array}{l}{P(y=1 | x)=\frac{e^{x^{T} x+b}}{1+e^{x^{T} x+b}}} \\ {P(y=0 | x)=\frac{1}{1+e^{x^{T} x+b}}}\end{array}\right.
{P(y=1∣x)=1+exTx+bexTx+bP(y=0∣x)=1+exTx+b1
得到最后的结果:
L
(
β
)
=
∑
i
=
1
m
(
y
i
β
T
x
i
′
−
ln
(
1
+
e
β
T
x
i
′
)
)
L(\beta)=\sum_{i=1}^{m}\left(y_{i} \beta^{T} x_{i}^{\prime}-\ln \left(1+e^{\beta^{T} x_{i}^{\prime}}\right)\right)
L(β)=i=1∑m(yiβTxi′−ln(1+eβTxi′))
由于是极大似然,我们需要求出其极大值,所以有:
¥
β
∗
=
argmax
m
L
(
β
)
\beta^{*}=\operatorname{argmax}_{m} L(\beta)
β∗=argmaxmL(β)
求出使L(β)最大的最优解等价于求出使−L(β)最小的解,所以有:
β
∗
=
argmax
m
L
(
β
)
=
argmin
m
L
(
β
)
=
∑
i
=
1
m
(
−
y
i
β
T
x
i
′
+
ln
(
1
+
e
β
T
x
i
′
)
)
\begin{aligned} \beta^{*} &=\operatorname{argmax}_{m} L(\beta)=\operatorname{argmin}_{m} L(\beta) \\ &=\sum_{i=1}^{m}\left(-y_{i} \beta^{T} x_{i}^{\prime}+\ln \left(1+e^{\beta^{T} x_{i}^{\prime}}\right)\right) \end{aligned}
β∗=argmaxmL(β)=argminmL(β)=i=1∑m(−yiβTxi′+ln(1+eβTxi′))
最后可以通过凸优化中的梯度下降法、牛顿法等方法来求出L(β)L(β)函数的最优解β∗β∗。