机器学习之逻辑斯谛回归分类问题
分类
要尝试分类,一种方法是使用线性回归并将所有大于0.5的预测映射为1,将所有小于0.5的预测映射为0。但是,此方法效果不佳,因为分类问题实际上不是线性函数。
分类问题就像回归问题一样,除了我们现在要预测的值仅包含少量离散值。现在,我们将重点讨论二分类问题,其中y只能采用两个值0和1。(我们在这里所说的大多数内容也将推广到多类情况。)例如,如果我们尝试为电子邮件建立垃圾邮件分类器,然后 x ( i ) x^{(i)} x(i)可能是一封电子邮件的某些功能,如果是垃圾邮件,则y可以为1,否则为0。因此,y∈{0,1}。0也称为否定类别,1也称为正类别,有时也用符号“-”和“ +”表示。给定 x ( i ) x^{(i)} x(i), 相应的 y ( i ) y^{(i)} y(i)也称为训练示例的标签。
假设表示
我们可以忽略y是离散值这一事实来处理分类问题,并使用我们的旧线性回归算法尝试在给定x的情况下预测y。但是,很容易构造此方法执行效果很差的示例。直观地讲,这对于
H
θ
(
x
)
H_\theta(x)
Hθ(x)当我们知道y∈{0,1}时,取大于1或小于0的值。为了解决这个问题,让我们更改假设的形式
H
θ
(
x
)
H_\theta(x)
Hθ(x)为了
0
≤
H
θ
(
x
)
≤
1
0\leq H_\theta (x)\leq1
0≤Hθ(x)≤1满足。这是通过
x
x
x插入
θ
T
X
\theta^{T}X
θTX来完成逻辑斯谛的。
我们的新表单使用“ Sigmoid函数”,也称为“逻辑函数”:
h
θ
(
x
)
=
g
(
θ
T
x
)
z
=
θ
T
x
g
(
z
)
=
1
1
+
e
(
−
z
)
\begin{aligned} h_\theta(x)&=g(\theta^Tx) \\ z &= \theta^Tx\\ g(z)&=\frac{1}{1+e^{(-z)}} \end{aligned}
hθ(x)zg(z)=g(θTx)=θTx=1+e(−z)1
下图显示了sigmoid函数的外观:
此处显示的函数
g
(
z
)
g(z)
g(z)将任何实数映射到(0,1)区间,这对于将任意值函数转换为更适合分类的函数很有用。
H
θ
(
x
)
H_\theta(x)
Hθ(x)将使我们有可能输出为1。例如,
H
θ
(
x
)
=
0.7
H_\theta(x)=0.7
Hθ(x)=0.7 输出为1的概率为70%。我们预测为0的概率只是我们为1的概率的补充(例如,如果它为1的概率为70%,那么它为0的概率是30%)。
h
θ
(
x
)
=
P
(
y
=
1
∣
x
;
θ
)
=
1
−
P
(
y
=
0
∣
x
;
θ
)
P
(
y
=
0
∣
x
;
θ
)
+
P
(
y
=
1
∣
x
;
θ
)
=
1
h_\theta(x)=P(y=1|x;\theta)=1-P(y=0|x;\theta) \\ P(y=0|x;\theta)+P(y=1|x;\theta) =1
hθ(x)=P(y=1∣x;θ)=1−P(y=0∣x;θ)P(y=0∣x;θ)+P(y=1∣x;θ)=1
决策边界
为了获得离散的0或1分类,我们可以如下转换假设函数的输出:
h
θ
(
x
)
≥
0.5
→
y
=
1
h
θ
(
x
)
<
0.5
→
y
=
0
h_\theta(x)\geq0.5\rightarrow y=1\\ h_\theta(x)<0.5\rightarrow y=0
hθ(x)≥0.5→y=1hθ(x)<0.5→y=0
我们的逻辑函数g的行为方式是,当其输入大于或等于零时,其输出大于或等于0.5:
g
(
z
)
≥
0.5
w
h
e
n
z
≥
0
g(z)\geq0.5\\ when \, z\geq0
g(z)≥0.5whenz≥0
记住,
z
=
0
,
e
0
=
1
⇒
g
(
z
)
=
1
2
z
→
−
∞
,
e
−
∞
→
0
⇒
g
(
z
)
=
0
z
→
−
∞
,
e
∞
→
∞
⇒
g
(
z
)
=
0
z=0,e^0=1\Rightarrow g(z)= \frac{1}{2}\\ z\rightarrow -\infty,e^{-\infty}\rightarrow0\Rightarrow g(z)=0\\ z\rightarrow-\infty,e^{\infty}\rightarrow\infty\Rightarrow g(z)=0
z=0,e0=1⇒g(z)=21z→−∞,e−∞→0⇒g(z)=0z→−∞,e∞→∞⇒g(z)=0
所以如果我们对g的输入是
θ
T
X
\theta^TX
θTX,则表示:
h
θ
(
x
)
=
g
(
θ
T
x
)
≥
0.5
w
h
e
n
θ
T
x
≥
0
h_\theta(x)=g(\theta^Tx)\geq0.5\\ when\, \theta^Tx\geq0
hθ(x)=g(θTx)≥0.5whenθTx≥0
从这些语句中,我们现在可以说:
θ
T
x
≥
0
⇒
y
=
1
θ
T
x
<
0
⇒
y
=
0
\theta^Tx\geq0\Rightarrow y=1 \\\theta^Tx<0\Rightarrow y=0
θTx≥0⇒y=1θTx<0⇒y=0
该决策边界是其中y = 0且其中y = 1,这是由我们的假设函数创建分离区域的线条。
举例:
θ
=
[
5
−
1
0
]
y
=
1
i
f
5
+
(
−
1
)
x
1
+
0
x
2
≥
0
5
−
x
1
≥
0
−
x
1
≥
−
5
x
1
≤
5
\theta=\begin{bmatrix} 5\\-1\\0\end{bmatrix}\\ y=1\,if\,5+(-1)x_1+0x_2\geq0\\ 5-x_1\geq0\\ -x_1\geq-5\\ x_1\leq5
θ=⎣⎡5−10⎦⎤y=1if5+(−1)x1+0x2≥05−x1≥0−x1≥−5x1≤5
在这种情况下,我们的决策边界是放置在图上的垂直直线
X
1
=
5
X_1=5
X1=5,其左侧的所有内容表示
y
=
1
y = 1
y=1,而右侧的所有内容表示
y
=
0
y = 0
y=0。
同样,S型函数g(z)的输入(例如 θ T X \theta ^ TX θTX)不必是线性的,可以是描述圆的函数(例如 z = θ 0 + θ 1 x 1 2 + θ 2 x 2 2 z = \theta_0 + \theta_1 x_1 ^ 2 + \theta_2 x_2 ^ 2 z=θ0+θ1x12+θ2x22)或适合我们数据的任何形状。
成本函数
我们不能使用与线性回归相同的成本函数,因为逻辑函数将导致输出波动,从而导致许多局部最优。换句话说,它将不是凸函数。
相反,我们用于逻辑回归的成本函数如下所示:
J
(
θ
)
=
1
m
∑
i
=
1
m
C
o
s
t
(
h
θ
(
x
(
i
)
)
,
y
(
i
)
)
C
o
s
t
(
h
θ
(
x
)
,
y
)
=
−
l
o
g
(
h
θ
(
x
)
)
i
f
y
=
1
C
o
s
t
(
h
θ
(
x
)
,
y
)
=
−
l
o
g
(
1
−
h
θ
(
x
)
)
i
f
y
=
0
J(\theta)=\frac{1}{m}\sum_{i=1}^mCost(h_\theta(x^{(i)}),y^{(i)})\\ Cost(h_\theta(x),y)=-log(h_\theta(x))\qquad if\,y=1\\ Cost(h_\theta(x),y)=-log(1-h_\theta(x))\qquad if\,y=0
J(θ)=m1i=1∑mCost(hθ(x(i)),y(i))Cost(hθ(x),y)=−log(hθ(x))ify=1Cost(hθ(x),y)=−log(1−hθ(x))ify=0
当y = 1时,我们得到以下图
J
(
θ
)
J(\theta)
J(θ) 与
h
θ
(
x
)
h_ \theta(x)
hθ(x):
当y = 0时,我们得到以下图
J
(
θ
)
J(\theta)
J(θ) 与
h
θ
(
x
)
h_ \theta(x)
hθ(x):
C
o
s
t
(
h
θ
(
x
)
,
y
)
=
0
i
f
h
θ
(
x
)
=
y
C
o
s
t
(
h
θ
(
x
)
,
y
)
→
∞
i
f
y
=
0
a
n
d
h
θ
(
x
)
→
1
C
o
s
t
(
h
θ
(
x
)
,
y
)
→
∞
i
f
y
=
1
a
n
d
h
θ
(
x
)
→
0
Cost(h_\theta(x),y)=0\,if\,h_\theta(x)=y\\ Cost(h_\theta(x),y)\rightarrow\infty \,if\,y=0\,and\,h_\theta(x)\rightarrow1\\ Cost(h_\theta(x),y)\rightarrow\infty \,if\,y=1\,and\,h_\theta(x)\rightarrow0
Cost(hθ(x),y)=0ifhθ(x)=yCost(hθ(x),y)→∞ify=0andhθ(x)→1Cost(hθ(x),y)→∞ify=1andhθ(x)→0
如果我们的正确答案“ y”为0,则如果我们的假设函数也输出0,则成本函数将为0。如果我们的假设接近1,则成本函数将接近无穷大。
如果我们正确的答案y为1,那么如果我们的假设函数输出为1,则成本函数将为0。如果我们的假设接近0,则成本函数将接近无穷大。
请注意,以这种方式编写成本函数可确保对于逻辑回归, J ( θ ) J(θ) J(θ)是凸的。
简化的成本函数和梯度下降
我们可以将成本函数的两个条件情况压缩为一个情况:
C
o
s
t
(
h
θ
(
x
)
,
y
)
=
−
y
l
o
g
(
h
θ
(
x
)
)
−
(
1
−
y
)
l
o
g
(
1
−
h
θ
(
x
)
)
Cost(h_\theta(x),y)=-y\,log(h_\theta(x))-(1-y)log(1-h_\theta(x))
Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))请注意,当y等于1时,第二项
(
1
−
y
)
l
o
g
(
1
−
h
θ
(
x
)
)
(1-y)log(1-h_\theta(x))
(1−y)log(1−hθ(x))将为零,并且不会影响结果。如果y等于0,则第一项
−
y
l
o
g
(
h
θ
(
x
)
)
-ylog(h_\theta(x))
−ylog(hθ(x))将为零,并且不会影响结果。
我们可以完全写出整个成本函数,如下所示:
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
l
o
g
(
h
θ
(
x
(
i
)
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
h
θ
(
x
(
i
)
)
)
]
J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))]
J(θ)=−m1i=1∑m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
向量化的实现是:
h
=
g
(
X
θ
)
J
(
θ
)
=
1
m
⋅
(
−
y
T
l
o
g
(
h
)
−
(
1
−
y
)
T
l
o
g
(
1
−
h
)
)
h=g(X\theta)\\ J(\theta)=\frac{1}{m}\cdot(-y^Tlog(h)-(1-y)^Tlog(1-h))
h=g(Xθ)J(θ)=m1⋅(−yTlog(h)−(1−y)Tlog(1−h))
梯度下降
请记住,梯度下降的一般形式是:
R
e
p
e
a
t
{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
)
}
\begin{aligned} Repeat\{ \\ &\theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta)\\ \} \end{aligned}
Repeat{}θj:=θj−α∂θj∂J(θ)
我们可以使用微积分计算出导数部分,从而得到:
R
e
p
e
a
t
{
θ
j
:
=
θ
j
−
α
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
}
\begin{aligned} Repeat\{ \\ &\theta_j:=\theta_j-\frac{\alpha}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}\\ \} \end{aligned}
Repeat{}θj:=θj−mαi=1∑m(hθ(x(i))−y(i))xj(i)
注意,该算法与我们在线性回归中使用的算法相同。我们仍然必须同时更新
θ
\theta
θ中的所有值。
向量化的实现是:
θ
:
=
θ
−
α
m
X
T
(
g
(
X
θ
)
−
y
⃗
)
\theta:=\theta-\frac{\alpha}{m}X^T(g(X\theta)-\vec y)
θ:=θ−mαXT(g(Xθ)−y)
多类别分类:一对多
现在,当我们具有两个以上类别时,将对数据进行分类。代替y = {0,1},我们将扩展定义,以便y = {0,1 … n}。
由于y = {0,1 … n},我们将问题分为n + 1个(+1,因为索引从0开始)二分类问题。在每一个类别中,我们预测“ y”是我们类别之一的概率。
y
∈
{
0
,
1
…
n
}
h
θ
(
0
)
(
x
)
=
P
(
y
=
0
∣
x
;
θ
)
h
θ
(
1
)
(
x
)
=
P
(
y
=
1
∣
x
;
θ
)
…
h
θ
(
n
)
(
x
)
=
P
(
y
=
n
∣
x
;
θ
)
p
r
e
d
i
c
t
i
o
n
=
m
a
x
i
(
h
θ
(
i
)
(
x
)
)
y\in\{0,1\dots n\}\\ h_\theta^{(0)}(x)=P(y=0|x;\theta)\\ h_\theta^{(1)}(x)=P(y=1|x;\theta)\\ \dots\\ h_\theta^{(n)}(x)=P(y=n|x;\theta)\\ prediction=max_i(h_\theta^{(i)}(x))
y∈{0,1…n}hθ(0)(x)=P(y=0∣x;θ)hθ(1)(x)=P(y=1∣x;θ)…hθ(n)(x)=P(y=n∣x;θ)prediction=maxi(hθ(i)(x))我们基本上是选择一个类,然后将所有其他类合并为一个第二类。我们反复进行此操作,对每种情况应用二元logistic回归,然后使用返回最高值的假设作为我们的预测。
下图显示了如何对3个类别进行分类:
过度拟合的问题
考虑从x∈R预测y的问题。下面最左边的图显示了拟合
y
=
θ
0
+
θ
1
x
y=\theta_0+\theta_1x
y=θ0+θ1x的结果到数据集。我们看到数据并不真正位于直线上,因此拟合度不是很好。
相反,如果我们添加了额外的功能
X
2
X^ 2
X2和适合
y
=
θ
0
+
θ
1
x
+
θ
2
x
2
y = \theta_0 + \theta_1x + \theta_2x ^ 2
y=θ0+θ1x+θ2x2 ,则我们获得的数据拟合度稍好一些(请参见中间图)。天真的,似乎我们添加的功能越多越好。但是,添加太多功能也有危险:最右边的图像是拟合
5
t
h
5^{th}
5th阶多项式
y
=
∑
j
=
0
5
θ
j
x
j
y = \sum_ {j = 0} ^ 5 \theta_j x ^ j
y=∑j=05θjxj。我们看到,即使拟合曲线完美地通过了数据,我们也不能期望这可以很好地预测不同居住区域(x)的房价(y)。在没有正式定义这些术语的含义的情况下,我们将说左边的图显示了一个拟合不足的实例(其中数据清楚地显示了模型未捕获的结构),而右边的图则是过度拟合的实例。
拟合不足或高偏差是指假设函数h的形式与数据趋势的映射不佳的情况。这通常是由于功能太简单或使用的功能太少所致。在另一种极端情况下,过拟合或高方差是由假设函数引起的,该函数拟合可用数据,但不能很好地泛化以预测新数据。它通常是由复杂的函数引起的,该函数会创建许多与数据无关的不必要的曲线和角度。
此术语适用于线性回归和逻辑回归。有两个主要选项可以解决过度拟合的问题:
1)减少特征数量:
手动选择要保留的功能。
使用模型选择算法(后面部分研究)。
2)正则化
保留所有功能,但减小参数的数量
θ
j
\theta_j
θj .
当我们具有许多稍微有用的特征时,正则化效果很好。
成本函数
如果我们从假设函数中过度拟合,则可以通过增加其成本来减少函数中某些术语的权重。
假设我们想使以下函数更二次方:
θ
0
+
θ
1
X
+
θ
2
X
2
+
θ
3
X
3
+
θ
4
X
4
\theta_0+\theta_1X+\theta_2X^2+\theta_3X^3+\theta_4X^4
θ0+θ1X+θ2X2+θ3X3+θ4X4
我们想消除的影响
θ
3
x
3
\theta_3x ^ 3
θ3x3和
θ
4
x
4
\theta_4x ^ 4
θ4x4 。无需实际摆脱这些功能或更改假设的形式,我们可以改为修改成本函数:
m
i
n
θ
1
2
m
∑
i
=
1
m
(
h
θ
(
x
)
(
i
)
−
y
(
i
)
)
2
+
1000
⋅
θ
3
2
+
1000
⋅
θ
4
2
min_\theta\frac{1}{2m}\sum_{i=1}^m(h_\theta(x)^{(i)}-y^{(i)})^2+1000\cdot\theta_3^2+1000\cdot\theta_4^2
minθ2m1i=1∑m(hθ(x)(i)−y(i))2+1000⋅θ32+1000⋅θ42
最后,我们又增加了两个字词,以增加成本
θ
3
\theta_3
θ3和
θ
4
\theta_4
θ4 。现在,为了使成本函数接近零,我们将不得不减小
θ
3
\theta_3
θ3和
θ
4
\theta_4
θ4 接近零。反过来,这将大大降低
θ
3
x
3
\theta_3x^3
θ3x3和
θ
4
x
4
\theta_4x ^ 4
θ4x4在我们的假设函数中。结果,我们看到新的假设(由粉红色曲线表示)看起来像一个二次函数,但是由于额外的小项,它更好地拟合了数据
θ
3
x
3
\theta_3x ^ 3
θ3x3和
θ
4
x
4
\theta_4x ^ 4
θ4x4 .
我们还可以将所有的theta参数归一化为:
m
i
n
θ
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
+
λ
∑
j
=
1
n
θ
j
2
min_\theta\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^n\theta_j^2
minθ2m1i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2
λ或lambda是正则化参数。它确定了我们theta参数的成本被夸大了多少。
通过将上述成本函数与额外的总和结合使用,我们可以平滑假设函数的输出以减少过度拟合。如果选择的lambda太大,可能会使功能过于平滑,从而导致拟合不足。
正则线性回归
我们可以将正则化应用于线性回归和逻辑回归。我们将首先进行线性回归。
梯度下降
我们将修改梯度下降函数以分离出
θ
0
\theta_0
θ0从其余参数中删除,因为我们不想惩罚
θ
0
\theta_0
θ0 .
R
e
p
e
a
t
{
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
0
(
i
)
θ
j
:
=
θ
j
−
α
[
(
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
)
+
λ
m
θ
j
]
j
∈
{
1
,
2
…
n
}
}
\begin{aligned} Repeat\{\\ &\theta_0:=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)} \\ &\theta_j :=\theta_j-\alpha \bigg[\bigg(\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j\bigg)+\frac{\lambda}{m}\theta_j\bigg]\qquad j\in\{ 1,2\dots n\} \\ \} \end{aligned}
Repeat{}θ0:=θ0−αm1i=1∑m(hθ(x(i))−y(i))x0(i)θj:=θj−α[(m1i=1∑m(hθ(x(i))−y(i))xj(i))+mλθj]j∈{1,2…n}
术语
λ
m
θ
j
\frac {\lambda} {m} \theta_j
mλθj 执行我们的正则化。通过一些操作,我们的更新规则也可以表示为:
θ
j
:
=
θ
j
(
1
−
α
λ
m
)
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\theta_j:=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j
θj:=θj(1−αmλ)−αm1i=1∑m(hθ(x(i))−y(i))xj(i)上式中的第一项
1
−
α
λ
m
1-\alpha \frac {\lambda} {m}
1−αmλ总是小于1。直觉上您可以将其视为降低
θ
j
\theta_j
θj每次更新都多少。请注意,第二项现在与以前完全相同。
正态方程
现在,让我们使用非迭代正态方程的替代方法来进行正则化。
为了添加正则化,该方程式与我们的原始方程式相同,只是我们在括号内添加了另一个术语:
θ
=
(
X
T
X
+
λ
⋅
L
)
−
1
X
T
y
w
h
e
r
e
L
=
[
0
1
1
⋱
1
]
\theta=(X^TX+\lambda\cdot L)^{-1}X^Ty\\ where\,L=\begin{bmatrix}0\\ &1\\ &&1\\&&&\ddots \\&&&&1 \end{bmatrix}
θ=(XTX+λ⋅L)−1XTywhereL=⎣⎢⎢⎢⎢⎡011⋱1⎦⎥⎥⎥⎥⎤
L是一个矩阵,左上角为0,对角线下为1,其他所有地方为0。它的尺寸应为(n + 1)×(n + 1)。直觉上,这是恒等矩阵(尽管我们不包括
x
0
x_0
x0乘以单个实数
λ
λ
λ)。
回想一下,如果m<n,则 X T X X ^ TX XTX是不可逆的。但是,当我们添加项 λ ⋅ L λ⋅L λ⋅L时, X T X + λ ⋅ L X ^ TX+λ⋅L XTX+λ⋅L可逆。
正则Logistic回归
我们可以以与线性回归相同的方式来正规化逻辑回归。结果,我们可以避免过度拟合。下图显示了粉红色线条显示的正则函数比蓝色线条代表的非正则函数不太可能过拟合:
成本函数
回想一下我们用于逻辑回归的成本函数是:
我们可以通过在末尾添加一个术语来规范该方程式: