逻辑回归算法为什么用的是sigmoid函数而不用阶跃函数?
在分类问题中,预测的变量
y
y
y是离散的值,考虑二分类任务输出标记
y
∈
{
0
,
1
}
y \in \{ 0,1\}
y∈{0,1},而线性回归模型产生的预测值
z
=
w
T
x
+
b
z = {w^T}x + b
z=wTx+b是实数,我们需要将实数值
z
z
z转换为0/1值。最理想的是单位阶跃函数(unit-step function)
y
=
{
0
,
z
<
0
;
0.5
,
z
=
0
;
1
,
z
>
0
;
y =\begin{cases} {0,} & {z < 0;} \\ {0.5,} & {z = 0;} \\ {1,} & {z > 0;} \\ \end{cases}
y=⎩⎪⎨⎪⎧0,0.5,1,z<0;z=0;z>0;
即若预测值
z
z
z大于0就判断为正例,小于0则判断为反例,预测值为临界值0则等于0.5。
显然这个单位阶跃函数不连续,阶跃函数虽然能够直观刻画分类的错误率,但是由于其非凸、非光滑的特点,使得算法很难直接对该函数进行优化。而sigmoid函数本身的特征(光滑无限阶可导),以及完美的映射到概率空间,就用于逻辑回归了。对率函数正是这样一个可替代单位阶跃函数的替代函数:
y
=
1
1
+
e
−
z
y = \frac{1}{{1 + {e^{ - z}}}}
y=1+e−z1
Sigmoid函数即形似S的函数,对率函数是Sigmoid函数最重要的代表,它将
z
z
z值转化为接近0或1的值,并且其输出值在
z
=
0
z=0
z=0附近变化很陡。
把
z
z
z带入上述方程可得到:
y
=
1
1
+
e
−
(
w
T
x
+
b
)
y = \frac{1}{{1 + {e^{ - ({w^T}x + b)}}}}
y=1+e−(wTx+b)1
可做变换:
ln
y
1
−
y
=
w
T
x
+
b
\ln \frac{y}{{1 - y}} = {w^T}x + b
ln1−yy=wTx+b
若将
y
y
y视为样本
x
x
x作为正例的可能性,则
1
−
y
1-y
1−y是其反例的可能性,两者的比值
y
1
−
y
\frac{y}{{1 - y}}
1−yy,反映了
x
x
x作为正例的相对概率,对概率取对数则得到“对数概率”
ln
y
1
−
y
\ln \frac{y}{{1 - y}}
ln1−yy。
逻辑回归为什么是线性模型?
考虑单调可微函数
g
(
⋅
)
g( \cdot )
g(⋅),令
y
=
g
−
1
(
w
T
x
+
b
)
y = {g^{ - 1}}({w^T}x + b)
y=g−1(wTx+b) 得到这样的模型称为“广义线性模型”,其中的函数
g
(
⋅
)
g( \cdot )
g(⋅)称为“联系函数”。
而逻辑回归公式:
y
=
1
1
+
e
−
z
=
1
1
+
e
−
(
w
T
x
+
b
)
y = \frac{1}{{1 + {e^{ - z}}}}= \frac{1}{{1 + {e^{ - ({w^T}x + b)}}}}
y=1+e−z1=1+e−(wTx+b)1可变换为:
ln
y
1
−
y
=
w
T
x
+
b
\ln \frac{y}{{1 - y}} = {w^T}x + b
ln1−yy=wTx+b根据广义线性模型的定义,逻辑回归是联系函数为
g
(
y
)
=
ln
y
1
−
y
g(y) = \ln \frac{y}{{1 - y}}
g(y)=ln1−yy的广义线性模型。
如何拟合逻辑回归模型的参数 θ = ( w ; b ) \theta = (w;b) θ=(w;b)
若将上式中的
y
y
y视为类后验概率估计
p
(
y
=
1
∣
x
)
p(y=1|x)
p(y=1∣x),则
ln
y
1
−
y
\ln \frac{y}{{1 - y}}
ln1−yy可重写为:
ln
p(y = 1|x)
p(y = 0|x)
=
w
T
x
+
b
\ln \frac{{{\text{p(y = 1|x)}}}}{{{\text{p(y = 0|x)}}}} = {w^T}x + b
lnp(y = 0|x)p(y = 1|x)=wTx+b
显然有
p(y = 1|x)
=
e
w
T
x
+
b
1
+
e
w
T
x
+
b
p(y = 0|x)
=
1
1
+
e
w
T
x
+
b
\begin{aligned} & {\text{p(y = 1|x)}} = \frac{{{e^{{w^T}x + b}}}}{{1 + {e^{{w^T}x + b}}}} \\ & {\text{p(y = 0|x)}} = \frac{1}{{1 + {e^{{w^T}x + b}}}} \\ \end{aligned}
p(y = 1|x)=1+ewTx+bewTx+bp(y = 0|x)=1+ewTx+b1
于是,我们可通过“极大似然法”来估计
w
和
b
w和b
w和b.给定数据集
{
(
x
(
i
)
,
y
(
i
)
)
}
i
=
1
m
\{ ({x^{(i)}},{y^{(i)}})\} _{i = 1}^m
{(x(i),y(i))}i=1m,对率回归模型最大化“对数似然”
J
(
w
,
b
)
=
∑
i
=
1
m
ln
p
(
y
(
i
)
∣
x
(
i
)
;
w
,
b
)
J(w,b) = \sum\limits_{i = 1}^m {\ln p({y^{(i)}}|{x^{(i)}};w,b)}
J(w,b)=i=1∑mlnp(y(i)∣x(i);w,b)即令每个样本属于其真实标记的概率越大越好。为方便讨论,令
θ
=
(
b
;
w
)
,
x
:
=
(
1
;
x
)
\theta=(b;w),x:=(1;x)
θ=(b;w),x:=(1;x),则
w
T
x
+
b
{w^T}x + b
wTx+b可以简写为
θ
T
x
{\theta ^T}x
θTx。再令
p
1
(
x
(
i
)
;
θ
)
=
p
(
y
=
1
∣
x
(
i
)
;
θ
)
p
0
(
x
(
i
)
;
θ
)
=
p
(
y
=
0
∣
x
(
i
)
;
θ
)
=
1
−
p
1
(
x
(
i
)
;
θ
)
\begin{aligned} &{p_1}({x^{(i)}};\theta ) = p(y = 1|{x^{(i)}};\theta )\\ &{p_0}({x^{(i)}};\theta ) = p(y = 0|{x^{(i)}};\theta ) = 1 - {p_1}({x^{(i)}};\theta ) \end{aligned}
p1(x(i);θ)=p(y=1∣x(i);θ)p0(x(i);θ)=p(y=0∣x(i);θ)=1−p1(x(i);θ)则似然项
p
(
y
(
i
)
∣
x
(
i
)
;
w
,
b
)
p({y^{(i)}}|{x^{(i)}};w,b)
p(y(i)∣x(i);w,b)可重写为:
p
(
y
(
i
)
∣
x
(
i
)
;
w
,
b
)
=
y
(
i
)
p
1
(
x
(
i
)
;
θ
)
+
(
1
−
y
(
i
)
)
p
0
(
x
(
i
)
;
θ
)
p({y^{(i)}}|{x^{(i)}};w,b) = {y^{(i)}}{p_1}({x^{(i)}};\theta ) + (1 - {y^{(i)}}){p_0}({x^{(i)}};\theta )
p(y(i)∣x(i);w,b)=y(i)p1(x(i);θ)+(1−y(i))p0(x(i);θ)将
p
(
y
(
i
)
∣
x
(
i
)
;
w
,
b
)
p({y^{(i)}}|{x^{(i)}};w,b)
p(y(i)∣x(i);w,b)带入
J
(
w
,
b
)
J(w,b)
J(w,b)得:
J
(
θ
)
=
∑
i
=
1
m
(
−
y
(
i
)
θ
T
x
(
i
)
+
ln
(
1
+
e
θ
T
x
(
i
)
)
)
J(\theta ) = \sum\limits_{i = 1}^m {( - {y^{(i)}}{\theta ^T}{x^{(i)}} + \ln (1 + {e^{{\theta ^T}{x^{(i)}}}}))}
J(θ)=i=1∑m(−y(i)θTx(i)+ln(1+eθTx(i)))对
J
(
w
,
b
)
J(w,b)
J(w,b)求导得:
∂
J
(
θ
)
∂
θ
j
=
∑
i
=
1
m
[
(
1
1
+
e
θ
T
x
(
i
)
−
y
(
i
)
)
x
j
(
i
)
]
\frac{{\partial J(\theta )}}{{\partial {\theta _j}}}=\sum\limits_{i = 1}^m {[( \frac{1}{{1 + {e^{{\theta ^T}{x^{(i)}}}}}} - {y^{(i)}})x_{_j}^{(i)}]}
∂θj∂J(θ)=i=1∑m[(1+eθTx(i)1−y(i))xj(i)]考虑sigmoid函数
f
(
x
(
i
)
)
=
1
1
+
e
−
θ
T
x
(
i
)
f({x^{(i)}}) = \frac{1}{{1 + {e^{ - {\theta ^T}{x^{(i)}}}}}}
f(x(i))=1+e−θTx(i)1,故:
∂
J
(
θ
)
∂
θ
j
=
∑
i
=
1
m
[
(
f
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
]
\frac{{\partial J(\theta )}}{{\partial {\theta _j}}}=\sum\limits_{i = 1}^m {[(f(x^{(i)}) - {y^{(i)}})x_{_j}^{(i)}]}
∂θj∂J(θ)=i=1∑m[(f(x(i))−y(i))xj(i)]
梯度下降算法
在得到这样一个代价函数以后,我们便可以用梯度下降算法来求得能使代价函数最小的参数了。算法为:
Repeat {
θ
j
=
θ
j
−
α
∂
J
(
θ
)
∂
θ
j
{\theta _j} = {\theta _j} - \alpha \frac{{\partial J(\theta )}}{{\partial {\theta _j}}}
θj=θj−α∂θj∂J(θ)
(simultaneously update all
θ
j
\theta _j
θj )
}
即
Repeat {
θ
j
=
θ
j
−
α
1
m
∑
i
=
1
m
[
(
f
(
x
)
−
y
(
i
)
)
x
j
(
i
)
]
{\theta _j} = {\theta _j} - \alpha \frac{1}{m}\sum\limits_{i = 1}^m {[(f(x) - {y^{(i)}})x_{_j}^{(i)}]}
θj=θj−αm1i=1∑m[(f(x)−y(i))xj(i)]
(simultaneously update all
θ
j
\theta _j
θj )
高级优化
然而梯度下降并不是我们可以使用的唯一算法,还有其他一些算法,更高级、更复杂。如果我们能用这些方法来计算代价函数
J
(
θ
)
{J(\theta )}
J(θ)和偏导数项
∂
J
(
θ
)
∂
θ
j
\frac{{\partial J(\theta )}}{{\partial {\theta _j}}}
∂θj∂J(θ)两个项的话,那么这些算法就是为我们优化代价函数的不同方法,共轭梯度法 BFGS (变尺度法) 和L-BFGS (限制变尺度法) 就是其中一些更高级的优化算法,它们需要有一种方法来计算
J
(
θ
)
{J(\theta )}
J(θ),以及需要一种方法计算导数项,然后使用比梯度下降更复杂的算法来最小化代价函数。
使用这其中任何一个算法,你通常不需要手动选择学习率
α
\alpha
α,所以对于这些算法的一种思路是,给出计算导数项和代价函数的方法,你可以认为算法有一个智能的内部循环,而且,事实上,他们确实有一个智能的内部循环,称为线性搜索(line search)算法,它可以自动尝试不同的学习速率
α
\alpha
α,并自动选择一个好的学习速率
α
\alpha
α,因此它甚至可以为每次迭代选择不同的学习速率,那么你就不需要自己选择。这些算法实际上在做更复杂的事情,而不仅仅是选择一个好的学习率,所以它们往往最终收敛得远远快于梯度下降。
多元分类学习
考虑
N
N
N个类别
C
1
,
C
2
,
⋯
,
C
N
{C_1},{C_2}, \cdots ,{C_N}
C1,C2,⋯,CN,多分类学习的基本思路是“拆解法”,即将多个分类任务拆为若干个二分类任务求解。
最经典的拆分策略有三种:“一对一”(One vs.One,简称OvO)、“一对其余”(One vs. Rest,简称OvR)和“多对多”(Many vs. Many,简称MvM).
给定数据集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
m
,
y
m
)
}
,
y
∈
{
C
1
,
C
2
,
⋯
,
C
N
}
D = \{ ({x_1},{y_1}),({x_2},{y_2}), \cdots ,({x_m},{y_m})\} ,\\ y \in \{ {C_1},{C_2}, \cdots ,{C_N}\}
D={(x1,y1),(x2,y2),⋯,(xm,ym)},y∈{C1,C2,⋯,CN}
OvO将这
N
N
N个类别两两配对,从而产生
N
(
N
−
1
)
/
2
N(N-1)/2
N(N−1)/2个二分类任务,例如OvO将为区分类别
C
i
{C_i}
Ci和
C
j
{C_j}
Cj;训练一个分类器,该分类器把D中的
C
i
{C_i}
Ci类样例作为正例,
C
j
{C_j}
Cj类样例作为反例.在测试阶段,新样本将同时提交给所有分类器,于是我们将得到
N
(
N
−
1
)
/
2
N(N -1)/2
N(N−1)/2个分类结果,最终结果可通过投票产生:即把被预测得最多的类别作为最终分类结果.如下图。
OvR则是每次将一个类的样例作为正例、所有其他类的样例作为反例来训练
N
N
N个分类器.在测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果,如下图所示.若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
容易看出,OvR只需训练N个分类器,而OvO需训练
N
(
N
−
1
)
/
2
N(N - 1)/2
N(N−1)/2个分类器,因此,OvO的存储开销和测试时间开销通常比OvR更大.但在训练时,OvR的每个分类器均使用全部训练样例,而OvO的每个分类器仅用到两个类的样例,因此,在类别很多时,OvO的训练时间开销通常比OvR更小.至于预测性能,则取决于具体的数据分布,在多数情形下两者差不多.
.MvM是每次将若干个类作为正类,若干个其他类作为反类.显然,OvO和OvR是MvM的特例.MvM 的正、反类构造必须有特殊的设计,不能随意选取.比如最常用的MvM技术:“纠错输出码”(Error CorrectingOutput Codes,简称ECOC).
参考文献
周志华《机器学习》
吴恩达 机器学习