分类问题
二元的分类问题定义:
将因变量(dependent variable)可能属于的两个类分别称为负向类(negative class)和正向类(positive class),则因变量
y
∈
{
0
,
1
}
y \in \{ 0,1 \}
y∈{0,1} ,其中 0 表示负向类,1 表示正向类。
特点:预测的变量是离散的值
引入问题:逻辑回归 (Logistic Regression)
假说表示
线性回归模型的不足:只能预测连续的值。
对于分类问题,我们需要输出0或1,即:
当 h θ ( x ) > = 0.5 {h_\theta}\left( x \right)>=0.5 hθ(x)>=0.5时,预测 y = 1 y=1 y=1。
当 h θ ( x ) < 0.5 {h_\theta}\left( x \right)<0.5 hθ(x)<0.5时,预测 y = 0 y=0 y=0 。
逻辑回归的假设函数是:
h
θ
(
x
)
=
g
(
θ
T
X
)
h_\theta \left( x \right)=g\left(\theta^{T}X \right)
hθ(x)=g(θTX)
其中:
X
X
X 代表特征向量,
g
g
g 代表逻辑函数(logistic function),是一个常用的逻辑函数为S形函数(Sigmoid function),公式为:
g
(
z
)
=
1
1
+
e
−
z
g\left( z \right)=\frac{1}{1+{{e}^{-z}}}
g(z)=1+e−z1
代价函数
如何拟合逻辑回归模型的参数 θ \theta θ?
将
h
θ
(
x
)
=
1
1
+
e
−
θ
T
x
{h_\theta}\left( x \right)=\frac{1}{1+{e^{-\theta^{T}x}}}
hθ(x)=1+e−θTx1带入到这样定义了的代价函数中时,得到的代价函数将是非凸,导致代价函数有许多局部最小值。
线性回归的代价函数为:
J
(
θ
)
=
1
m
∑
i
=
1
m
1
2
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{1}{2}{{\left( {h_\theta}\left({x}^{\left( i \right)} \right)-{y}^{\left( i \right)} \right)}^{2}}}
J(θ)=m1i=1∑m21(hθ(x(i))−y(i))2
重新定义逻辑回归的代价函数为:
J
(
θ
)
=
1
m
∑
i
=
1
m
C
o
s
t
(
h
θ
(
x
(
i
)
)
,
y
(
i
)
)
J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{{Cost}\left( {h_\theta}\left( {x}^{\left( i \right)} \right),{y}^{\left( i \right)} \right)}
J(θ)=m1i=1∑mCost(hθ(x(i)),y(i))
C
o
s
t
(
h
θ
(
x
)
,
y
)
=
−
y
×
l
o
g
(
h
θ
(
x
)
)
−
(
1
−
y
)
×
l
o
g
(
1
−
h
θ
(
x
)
)
Cost\left( {h_\theta}\left( x \right),y \right)=-y\times log\left( {h_\theta}\left( x \right) \right)-(1-y)\times log\left( 1-{h_\theta}\left( x \right) \right)
Cost(hθ(x),y)=−y×log(hθ(x))−(1−y)×log(1−hθ(x))
Cost函数的特点是:当实际的
y
=
1
y=1
y=1 且
h
θ
(
x
)
{h_\theta}\left( x \right)
hθ(x)也为 1 时误差为 0,当
y
=
1
y=1
y=1 但
h
θ
(
x
)
{h_\theta}\left( x \right)
hθ(x)不为1时误差随着
h
θ
(
x
)
{h_\theta}\left( x \right)
hθ(x)变小而变大;当实际的
y
=
0
y=0
y=0 且
h
θ
(
x
)
{h_\theta}\left( x \right)
hθ(x)也为 0 时代价为 0,当
y
=
0
y=0
y=0 但
h
θ
(
x
)
{h_\theta}\left( x \right)
hθ(x)不为0时误差随着
h
θ
(
x
)
{h_\theta}\left( x \right)
hθ(x)的变大而变大。
带入代价函数得到: J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ] J\left( \theta \right)=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]} J(θ)=−m1i=1∑m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
用梯度下降算法来求使代价函数最小的参数:
Repeat { θ j : = θ j − α ∂ ∂ θ j J ( θ ) \theta_j := \theta_j - \alpha \frac{\partial}{\partial\theta_j} J(\theta) θj:=θj−α∂θj∂J(θ) (simultaneously update all ) }
求导后得到:
Repeat { θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j := \theta_j - \alpha \frac{1}{m}\sum\limits_{i=1}^{m}{{\left( {h_\theta}\left( \mathop{x}^{\left( i \right)} \right)-\mathop{y}^{\left( i \right)} \right)}}\mathop{x}_{j}^{(i)} θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i) (simultaneously update all ) }
代价函数 J ( θ ) J(\theta) J(θ)会是一个凸函数,并且没有局部最优值。
简化的代价函数和梯度下降
最小化代价函数是使用梯度下降法(gradient descent)。
我们的代价函数:
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
log
(
h
θ
(
x
(
i
)
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
]
J\left( \theta \right)=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}
J(θ)=−m1i=1∑m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
要最小化这个关于
θ
\theta
θ的函数值
求导后得到:
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
{\theta_j}:={\theta_j}-\alpha \frac{1}{m}\sum\limits_{i=1}^{m}{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}}){x_{j}}^{(i)}}
θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i)
这个式子正是我们用来做线性回归梯度下降的。但线性回归和逻辑回归不是同一个算法:
线性回归假设函数: h θ ( x ) = θ T X = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n {h_\theta}\left( x \right)={\theta^T}X={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}} hθ(x)=θTX=θ0x0+θ1x1+θ2x2+...+θnxn
而现在逻辑函数假设函数: h θ ( x ) = 1 1 + e − θ T X {h_\theta}\left( x \right)=\frac{1}{1+{{e}^{-{\theta^T}X}}} hθ(x)=1+e−θTX1
即使更新参数的规则看起来基本相同,但由于假设的定义发生了变化,所以逻辑函数的梯度下降,跟线性回归的梯度下降实际上是两个完全不同的东西。
在逻辑回归中,来监测梯度下降,以确保它正常收敛:
①使用 for循环来更新这些参数值,用 for i=1 to n,或者 for i=1 to n+1
②更提倡使用向量化的实现,可以把所有这些
n
n
n个参数同时更新。
特征缩放
也适用于逻辑回归。如果你的特征范围差距很大的话,那么应用特征缩放的方法,同样也可以让逻辑回归中,梯度下降收敛更快。
多类别分类:一对多
我们先从用三角形代表的类别1开始,实际上我们可以创建一个,新的"伪"训练集,类型2和类型3定为负类,类型1设定为正类,我们创建一个新的训练集,如下图所示的那样,我们要拟合出一个合适的分类器。
三角形是正样本,而圆形代表负样本。可以这样想,设置三角形的值为1,圆形的值为0,接下来训练一个标准的逻辑回归分类器。
为了能实现这样的转变,我们将多个类中的一个类标记为正向类(
y
=
1
y=1
y=1),然后将其他所有类都标记为负向类,这个模型记作
h
θ
(
1
)
(
x
)
h_\theta^{\left( 1 \right)}\left( x \right)
hθ(1)(x)。接着,类似地选择另一个类标记为正向类(
y
=
2
y=2
y=2),再将其它类都标记为负向类,将这个模型记作
h
θ
(
2
)
(
x
)
h_\theta^{\left( 2 \right)}\left( x \right)
hθ(2)(x),依此类推。
最后得到一系列的模型简记为:
h
θ
(
i
)
(
x
)
=
p
(
y
=
i
∣
x
;
θ
)
h_\theta^{\left( i \right)}\left( x \right)=p\left( y=i|x;\theta \right)
hθ(i)(x)=p(y=i∣x;θ)其中:
i
=
(
1
,
2
,
3....
k
)
i=\left( 1,2,3....k \right)
i=(1,2,3....k)
在做预测时,将所有的分类机都运行一遍,然后选择最高可能性的输出变量。
正则化
过拟合的问题
x
x
x 的次数越高,拟合的越好,但相应的预测的能力就可能变差。
处理:
1、丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)
2、正则化。 保留所有的特征,但是减少参数的大小(magnitude)。
代价函数
正则化的基本方法:
如果模型是:
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
2
+
θ
3
x
3
3
+
θ
4
x
4
4
{h_\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2}+{\theta_{3}}{x_{3}^3}+{\theta_{4}}{x_{4}^4}
hθ(x)=θ0+θ1x1+θ2x22+θ3x33+θ4x44 则正是那些高次项导致了过拟合的产生, 所以我们要做的就是在一定程度上减小这些参数$\theta $ 的值。
做法:修改代价函数,在其中
θ
3
{\theta_{3}}
θ3和
θ
4
{\theta_{4}}
θ4 设置一点惩罚。这样做的话,我们在尝试最小化代价时也需要将这个惩罚纳入考虑中,并最终导致选择较小一些的
θ
3
{\theta_{3}}
θ3和
θ
4
{\theta_{4}}
θ4。 修改后的代价函数如下:
min
θ
1
2
m
[
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
+
1000
θ
3
2
+
10000
θ
4
2
]
{\mathop{\min\nolimits_\theta }}\frac{1}{2m}[\sum\limits_{i=1}^{m}{{{\left( {{h}_{\theta }}\left( {{x}^{(i)}} \right)-{{y}^{(i)}} \right)}^{2}}+1000\theta _{3}^{2}+10000\theta _{4}^{2}]}
minθ2m1[i=1∑m(hθ(x(i))−y(i))2+1000θ32+10000θ42]
通过这样的代价函数选择出的 θ 3 {\theta_{3}} θ3和 θ 4 {\theta_{4}} θ4 对预测结果的影响就比之前要小许多。假如我们有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化的软件来选择这些惩罚的程度。这样的结果是得到了一个较为简单的能防止过拟合问题的假设: J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 ] J\left( \theta \right)=\frac{1}{2m}[\sum\limits_{i=1}^{m}{{{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})}^{2}}+\lambda \sum\limits_{j=1}^{n}{\theta_{j}^{2}}]} J(θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2]
其中
λ
\lambda
λ又称为正则化参数(Regularization Parameter)。
注:根据惯例,我们不对
θ
0
{\theta_{0}}
θ0 进行惩罚。
经过正则化处理的模型与原模型的可能对比如下图所示:
如果选择的正则化参数 λ \lambda λ 过大,则会把所有的参数都最小化了,导致模型变成 h θ ( x ) = θ 0 {h_\theta}\left( x \right)={\theta_{0}} hθ(x)=θ0,也就是上图中红色直线所示的情况,造成欠拟合。
正则化线性回归
正则化线性回归的代价函数为:
J ( θ ) = 1 2 m ∑ i = 1 m [ ( ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 ) ] J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{[({{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})}^{2}}+\lambda \sum\limits_{j=1}^{n}{\theta _{j}^{2}})]} J(θ)=2m1i=1∑m[((hθ(x(i))−y(i))2+λj=1∑nθj2)]
梯度下降法令最小:
(因为未对
θ
0
\theta_0
θ0进行正则化,所以梯度下降算法将分两种情形)
R e p e a t Repeat Repeat u n t i l until until c o n v e r g e n c e convergence convergence{
θ 0 : = θ 0 − a 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) ) {\theta_0}:={\theta_0}-a\frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{0}^{(i)}}) θ0:=θ0−am1i=1∑m((hθ(x(i))−y(i))x0(i))
θ j : = θ j − a [ 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m θ j ] {\theta_j}:={\theta_j}-a[\frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}}+\frac{\lambda }{m}{\theta_j}] θj:=θj−a[m1i=1∑m((hθ(x(i))−y(i))xj(i)+mλθj]
f o r for for j = 1 , 2 , . . . n j=1,2,...n j=1,2,...n
}
我们同样也可以利用正规方程来求解正则化线性回归模型,方法如下所示:
图中的矩阵尺寸为
(
n
+
1
)
∗
(
n
+
1
)
(n+1)*(n+1)
(n+1)∗(n+1)。
正则化的逻辑回归模型
J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) log ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}+\frac{\lambda }{2m}\sum\limits_{j=1}^{n}{\theta _{j}^{2}} J(θ)=m1i=1∑m[−y(i)log(hθ(x(i)))−(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθj2