6逻辑回归(Logistic Regression)
6.1分类问题(Classification)
在分类问题中,要预测的变量 y y y 是离散的值,尝试预测的是结果是否属于某一个类。逻辑回归算法是分类算法,使用逻辑回归 (Logistic Regression) 算法解决分类问题,这是目前最流行使用最广泛的一种学习算法。
二元分类问题:将因变量(dependent variable)可能属于的两个类分别称为负向类(negative class)和正向类(positive class),则因变量 y ∈ 0 , 1 y\in { 0,1 \\} y∈0,1 ,其中 0 表示负向类,1 表示正向类。
逻辑回归算法的性质是:输出值永远在0到 1 之间。
6.2 假设陈述(Hypothesis Representation)
根据线性回归模型我们只能预测连续的值,然而对于分类问题,需要输出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 。
引入一个新的模型,逻辑回归,该模型的输出变量范围始终在0和1之间。
逻辑回归模型的假设是:
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。
h θ ( x ) h_\theta \left( x \right) hθ(x)的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1的可能性(estimated probablity)即 h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_\theta \left( x \right)=P\left( y=1|x;\theta \right) hθ(x)=P(y=1∣x;θ)
6.3 决策边界(Decision boundary)
决策边界(decision boundary)的概念能更好地帮助理解逻辑回归的假设函数在计算什么。
可以用非常复杂的模型来适应非常复杂形状的判定边界。
注:决策边界是满足 θ T ∗ x = 0 \theta^T*x=0 θT∗x=0的点的集合
6.4 代价函数(Cost function)
拟合逻辑回归模型的参数 θ \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带入到这样定义了的代价函数中时,得到的代价函数将是一个非凸函数(non-convexfunction)。这意味着代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。
线性回归的代价函数为:
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)),其中
h
θ
(
x
)
{h_\theta}\left( x \right)
hθ(x)与
C
o
s
t
(
h
θ
(
x
)
,
y
)
Cost\left( {h_\theta}\left( x \right),y \right)
Cost(hθ(x),y)之间的关系如下图所示:
将构建的
C
o
s
t
(
h
θ
(
x
)
,
y
)
Cost\left( {h_\theta}\left( x \right),y \right)
Cost(hθ(x),y)简化如下:
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))
带入代价函数得到:
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)))]
即:
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(θ)会是一个凸函数,并且没有局部最优值。推导过程:
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)))]
考虑:
h
θ
(
x
(
i
)
)
=
1
1
+
e
−
θ
T
x
(
i
)
{h_\theta}\left( {{x}^{(i)}} \right)=\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}}
hθ(x(i))=1+e−θTx(i)1
则:
y
(
i
)
log
(
h
θ
(
x
(
i
)
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
{{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)
y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))
=
y
(
i
)
log
(
1
1
+
e
−
θ
T
x
(
i
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
1
1
+
e
−
θ
T
x
(
i
)
)
={{y}^{(i)}}\log \left( \frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}} \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}} \right)
=y(i)log(1+e−θTx(i)1)+(1−y(i))log(1−1+e−θTx(i)1)
=
−
y
(
i
)
log
(
1
+
e
−
θ
T
x
(
i
)
)
−
(
1
−
y
(
i
)
)
log
(
1
+
e
θ
T
x
(
i
)
)
=-{{y}^{(i)}}\log \left( 1+{{e}^{-{\theta^T}{{x}^{(i)}}}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{{\theta^T}{{x}^{(i)}}}} \right)
=−y(i)log(1+e−θTx(i))−(1−y(i))log(1+eθTx(i))
所以:
∂
∂
θ
j
J
(
θ
)
=
∂
∂
θ
j
[
−
1
m
∑
i
=
1
m
[
−
y
(
i
)
log
(
1
+
e
−
θ
T
x
(
i
)
)
−
(
1
−
y
(
i
)
)
log
(
1
+
e
θ
T
x
(
i
)
)
]
]
\frac{\partial }{\partial {\theta_{j}}}J\left( \theta \right)=\frac{\partial }{\partial {\theta_{j}}}[-\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( 1+{{e}^{-{\theta^{T}}{{x}^{(i)}}}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{{\theta^{T}}{{x}^{(i)}}}} \right)]}]
∂θj∂J(θ)=∂θj∂[−m1i=1∑m[−y(i)log(1+e−θTx(i))−(1−y(i))log(1+eθTx(i))]]
=
−
1
m
∑
i
=
1
m
[
−
y
(
i
)
−
x
j
(
i
)
e
−
θ
T
x
(
i
)
1
+
e
−
θ
T
x
(
i
)
−
(
1
−
y
(
i
)
)
x
j
(
i
)
e
θ
T
x
(
i
)
1
+
e
θ
T
x
(
i
)
]
=-\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\frac{-x_{j}^{(i)}{{e}^{-{\theta^{T}}{{x}^{(i)}}}}}{1+{{e}^{-{\theta^{T}}{{x}^{(i)}}}}}-\left( 1-{{y}^{(i)}} \right)\frac{x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}}]
=−m1i=1∑m[−y(i)1+e−θTx(i)−xj(i)e−θTx(i)−(1−y(i))1+eθTx(i)xj(i)eθTx(i)]
=
−
1
m
∑
i
=
1
m
y
(
i
)
x
j
(
i
)
1
+
e
θ
T
x
(
i
)
−
(
1
−
y
(
i
)
)
x
j
(
i
)
e
θ
T
x
(
i
)
1
+
e
θ
T
x
(
i
)
]
=-\frac{1}{m}\sum\limits_{i=1}^{m}{{y}^{(i)}}\frac{x_j^{(i)}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}-\left( 1-{{y}^{(i)}} \right)\frac{x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}]
=−m1i=1∑my(i)1+eθTx(i)xj(i)−(1−y(i))1+eθTx(i)xj(i)eθTx(i)]
=
−
1
m
∑
i
=
1
m
y
(
i
)
x
j
(
i
)
−
x
j
(
i
)
e
θ
T
x
(
i
)
+
y
(
i
)
x
j
(
i
)
e
θ
T
x
(
i
)
1
+
e
θ
T
x
(
i
)
=-\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{{{y}^{(i)}}x_j^{(i)}-x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}+{{y}^{(i)}}x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}}
=−m1i=1∑m1+eθTx(i)y(i)xj(i)−xj(i)eθTx(i)+y(i)xj(i)eθTx(i)
=
−
1
m
∑
i
=
1
m
y
(
i
)
(
1
+
e
θ
T
x
(
i
)
)
−
e
θ
T
x
(
i
)
1
+
e
θ
T
x
(
i
)
x
j
(
i
)
=-\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{{{y}^{(i)}}\left( 1\text{+}{{e}^{{\theta^T}{{x}^{(i)}}}} \right)-{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}x_j^{(i)}}
=−m1i=1∑m1+eθTx(i)y(i)(1+eθTx(i))−eθTx(i)xj(i)
=
−
1
m
∑
i
=
1
m
(
y
(
i
)
−
e
θ
T
x
(
i
)
1
+
e
θ
T
x
(
i
)
)
x
j
(
i
)
=-\frac{1}{m}\sum\limits_{i=1}^{m}{({{y}^{(i)}}-\frac{{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}})x_j^{(i)}}
=−m1i=1∑m(y(i)−1+eθTx(i)eθTx(i))xj(i)
=
−
1
m
∑
i
=
1
m
(
y
(
i
)
−
1
1
+
e
−
θ
T
x
(
i
)
)
x
j
(
i
)
=-\frac{1}{m}\sum\limits_{i=1}^{m}{({{y}^{(i)}}-\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}})x_j^{(i)}}
=−m1i=1∑m(y(i)−1+e−θTx(i)1)xj(i)
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
−
h
θ
(
x
(
i
)
)
]
x
j
(
i
)
=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}-{h_\theta}\left( {{x}^{(i)}} \right)]x_j^{(i)}}
=−m1i=1∑m[y(i)−hθ(x(i))]xj(i)
=
1
m
∑
i
=
1
m
[
h
θ
(
x
(
i
)
)
−
y
(
i
)
]
x
j
(
i
)
=\frac{1}{m}\sum\limits_{i=1}^{m}{[{h_\theta}\left( {{x}^{(i)}} \right)-{{y}^{(i)}}]x_j^{(i)}}
=m1i=1∑m[hθ(x(i))−y(i)]xj(i)
注:虽然得到的梯度下降算法表面上看上去与线性回归的梯度下降算法一样,但是这里的 h θ ( x ) = g ( θ T X ) {h_\theta}\left( x \right)=g\left( {\theta^T}X \right) hθ(x)=g(θTX)与线性回归中不同,所以实际上是不一样的。另外,在运行梯度下降算法之前,进行特征缩放是必要的。
除了梯度下降算法以外,还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:共轭梯度(Conjugate Gradient),局部优化法(Broyden fletcher goldfarb shann,BFGS)和有限内存局部优化法(LBFGS) 。
6.5 简化的成本函数和梯度下降(Simplifeied cost function and gradient descent)
逻辑回归的代价函数可以合并成:
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))
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
log
(
h
θ
(
x
(
i
)
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
]
=-\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)]}
=−m1i=1∑m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
最小化代价函数的方法,是使用梯度下降法(gradient descent)。将梯度下降算法写作如下形式:
θ
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
即使更新参数的规则看起来基本相同,但由于假设的定义发生了变化,所以逻辑函数的梯度下降,跟线性回归的梯度下降实际上不同。
6.6 高级优化(Advanced optimization)
上节讨论了用梯度下降的方法最小化逻辑回归中代价函数 J ( θ ) J\left( \theta \right) J(θ)。本节介绍一些高级优化算法和一些高级的优化概念,利用这些方法能够使通过梯度下降,进行逻辑回归的速度大大提高,这也使算法更加适合解决大型的机器学习问题。
共轭梯度法 BFGS (变尺度法) 和L-BFGS (限制变尺度法) 是更高级的优化代价函数的算法,它们需要有一种方法来计算 J ( θ ) J\left( \theta \right) J(θ),以及需要一种方法计算导数项,然后使用比梯度下降更复杂的算法来最小化代价函数。
这三种算法有许多优点:
- 不需要手动选择学习率 α \alpha α。算法有一个智能的内部循环,称为线性搜索(line search)算法,它可以自动尝试不同的学习速率 α \alpha α,并自动选择一个好的学习速率。
- 比梯度下降收敛得快多了。
可以使用复杂的优化库,让算法使用起来更模糊一点。因此也许稍微有点难调试,不过由于这些算法的运行速度通常远远超过梯度下降。
6.7 多元分类:一对多(Multi-class classification: One-vs-all)
使用逻辑回归 (logistic regression)来解决多类别分类问题。
将多个类中的一个类标记为正向类(
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)
接下来训练逻辑回归分类器: h θ ( i ) ( x ) h_\theta^{\left( i \right)}\left( x \right) hθ(i)(x), 其中 i i i 对应每一个可能的 y = i y=i y=i。在多个分类器里输入 x x x,然后选择一个让 h θ ( i ) ( x ) h_\theta^{\left( i \right)}\left( x \right) hθ(i)(x) 最大的 i i i,即 max i h θ ( i ) ( x ) \mathop{\max}\limits_i\,h_\theta^{\left( i \right)}\left( x \right) imaxhθ(i)(x)。
七、正则化(Regularization)
7.1 过拟合问题(The problem of overfitting)
如果有非常多的特征,通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为0),但可能会不能推广到新的数据。
过拟合问题解决方案:
- 丢弃一些不能帮助正确预测的特征。可以手工选择保留哪些特征,或使用一些模型选择的算法来帮忙(如PCA)
- 正则化。 保留所有的特征,但是减少参数的大小(magnitude)。
7.2 代价函数(Cost function)
回归问题中如果模型是:
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
可以看出是高次项导致了过拟合的产生,如果让高次项的系数接近于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(θ)=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
n
θ
j
2
\lambda =\sum\limits_{j=1}^{n}{\theta_j^{2}}
λ=j=1∑nθj2 可以使
θ
\theta
θ的值减小?
如果令
λ
\lambda
λ 的值很大,为了使Cost Function 尽可能的小,所有的
θ
\theta
θ 值(不包括
θ
0
{\theta_{0}}
θ0)都会在一定程度上减小。但若
λ
\lambda
λ 的值太大,那么
θ
\theta
θ(不包括
θ
0
{\theta_{0}}
θ0)都会趋近于0,这样得到的只能是一条平行于
x
x
x轴的直线。所以对于正则化,要取一个合理的
λ
\lambda
λ 的值,这样才能更好的应用正则化。
7.3 线性回归的正则化(Regularized linear regression)
线性回归的求解,之前推导了两种学习算法:一种基于梯度下降,一种基于正规方程。
正则化线性回归的代价函数为:
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
}
对上面的算法中 j = 1 , 2 , . . . , n j=1,2,...,n j=1,2,...,n 时的更新式子进行调整可得:
θ j : = θ j ( 1 − a λ m ) − a 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) {\theta_j}:={\theta_j}(1-a\frac{\lambda }{m})-a\frac{1}{m}\sum\limits_{i=1}^{m}{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}} θj:=θj(1−amλ)−am1i=1∑m(hθ(x(i))−y(i))xj(i)
可以看出正则化线性回归的梯度下降算法的变化在于,每次都在原有算法更新规则的基础上令 θ \theta θ值减少了一个额外的值。
同样可以利用正规方程来求解正则化线性回归模型,方法如下:
图中的矩阵尺寸为
(
n
+
1
)
∗
(
n
+
1
)
(n+1)*(n+1)
(n+1)∗(n+1)。
7.4 正则化的逻辑回归模型(Regularized logistic regression)
针对逻辑回归问题已经学习过两种优化算法:使用梯度下降法来优化代价函数 J ( θ ) J\left( \theta \right) J(θ);更高级的优化算法需要自己设计代价函数 J ( θ ) J\left( \theta \right) J(θ)。
代价函数增加一个正则化的表达式得到代价函数:
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
要最小化该代价函数,通过求导,得出梯度下降算法为:
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
}
注:
- 虽然正则化的逻辑回归中的梯度下降和正则化的线性回归中的表达式看起来一样,但由于两者的 h θ ( x ) {h_\theta}\left( x \right) hθ(x)不同所以还是有很大差别。
- θ 0 {\theta_{0}} θ0不参与其中的任何一个正则化。
错题
31.你正在训练一个分类逻辑回归模型。以下哪项陈述是正确的?(D)
A. 将正则化引入到模型中,总是能在训练集上获得相同或更好的性能
B. 在模型中添加许多新特性有助于防止训练集过度拟合
C. 将正则化引入到模型中,对于训练集中没有的例子,总是可以获得相同或更好的性能
D. 向模型中添加新特征总是会在训练集上获得相同或更好的性能
33.以下关于正则化的陈述哪一个是正确的?(C)?
A. 使用太大的 λ 值可能会导致您的假设与数据过拟合;这可以通过减小 λ 来避免
B. 使用非常大的 λ 值不会影响假设的性能;我们不将 λ 设置为太大的唯一原因是避免数值问题
C. 考虑一个分类问题。添加正则化可能会导致分类器错误地分类某些训练示例(当不使用正则化时,即当时 λ = 0,它正确地分类了这些示例)