吴恩达机器学习笔记(五)Logistic回归
本文章是笔者根据Coursera上吴恩达教授的机器学习课程来整理的笔记。如果是初学者,建议大家首先观看吴恩达教授的课程视频,然后再来看博文的要点总结。两者一起食用,效果更佳。
一、分类问题(Classification)
首先介绍二分类问题,后续再介绍多分类。
把线性回归用于分类问题,通常不是一个好主意。
如下图,当训练样本只有左侧的8个时,用线性回归来拟合出一条直线,设定阈值threshold=0.5,可以达到很好的分类效果。但是当我们再增加一个tumor size很大很大的点时(最右侧的点),就会导致拟合出来的直线从紫色变到蓝色的位置。此时再用threshold=0.5做阈值,分类效果很差。
通常,对数据集采用线性回归的方法进行拟合,有时候运气好效果好,但是通常效果很差。吴恩达教授建议一般不要使用线性回归方法来处理分类问题。
线性回归还有一种很奇怪的现象:分类的目标是0或1,训练样本的标签也是0或1,但是使用线性回归后的输出可能是远大于1或远小于1的数。
综上,线性回归不适用于分类问题。
因此,我们后面会介绍Logistic回归算法(Logistic Regression),它的输出的在0和1之间的数字,不会大于1,也不会小于0。虽然Logistic回归算法的名字中有“回归”两字,但算法主要是用于解决二分类问题,并不是预测连续值的那种“回归”。之所以名字中有“回归”二字,只是由于历史原因而已。
二、假设陈述(Hypothesis Representation)
我们希望输出是介于0~1之间的数字,因此在线性回归公式的基础上,增加了Sigmoid函数(也叫Logistic函数, “Logistic回归”名称亦源于此)。
h
θ
(
x
)
=
g
(
θ
T
x
)
h_\theta(x)=g(\theta^Tx)
hθ(x)=g(θTx)
g
(
z
)
=
1
/
(
1
+
e
−
z
)
g(z)=1/(1+e^{-z})
g(z)=1/(1+e−z)
Logistic回归模型中,输出的含义:在输入x的情况下, y=1的概率。
h
θ
(
x
)
=
P
(
y
=
1
∣
x
;
θ
)
h_\theta(x)=P(y=1|x;\theta)
hθ(x)=P(y=1∣x;θ),意思是当参数为
θ
\theta
θ时,输入
x
x
x的情况下,
y
=
1
y=1
y=1的概率。
例如,0表示良性肿瘤,1表示恶性肿瘤。输出为0.1,表明是恶性肿瘤的概率只有0.1,是良性肿瘤的概率是0.9。如下图:
三、决策界限(Decision Boundary)
当
h
θ
(
x
)
≥
0.5
h_\theta(x)\ge0.5
hθ(x)≥0.5时,认为
y
=
1
y=1
y=1,此时
θ
T
x
≥
0
\theta^Tx\ge0
θTx≥0。
当
h
θ
(
x
)
<
0.5
h_\theta(x)<0.5
hθ(x)<0.5时,认为
y
=
0
y=0
y=0,此时
θ
T
x
<
0
\theta^Tx<0
θTx<0。
如下图所示:
下图的例子中,
x
1
+
x
2
=
3
x_1+x_2=3
x1+x2=3这条洋葱紫色的线,就是决策界限(Decision Boundary)。线以上的空间,分类结果是
y
=
1
y=1
y=1。线以下的空间,分类结果是
y
=
0
y=0
y=0。
注意:决策界限不是训练集的属性,而是
h
θ
(
x
)
h_\theta(x)
hθ(x)函数的一种属性。一旦
θ
\theta
θ参数确定了,那么决策界限就也确定了。
更复杂的模型可以拟合出形状更复杂的决策界限。如下图:
四、代价函数(Cost Function)
如果依然使用线性回归中的均方误差来作为代价函数,由于
1
/
(
1
+
e
−
x
)
1/(1+e^{-x})
1/(1+e−x)结构复杂,那么会导致Logistic回归的代价函数是非凸函数(Non-convex Function)。如下图中的左侧所示,非凸函数有多个局部最优解,梯度下降法不能很好地工作。
因此,需要为Logistic回归单独设计其他的代价函数,想到引入log函数,单个样本的代价计算如下:
根据数学知识可以证明,这样的代价函数,是一个凸函数,没有局部最优解。
当真实值是1时,如果预测值也是1,单个样本的代价是0;如果预测值是0,单个样本的代价是无穷大。如下图:
当真实值是0时,如果预测值也是0,单个样本的代价是0;如果预测值是1,单个样本的代价是无穷大。如下图:
五、简化代价函数与梯度下降(Simplified Cost Function and Gradient Descent)
上一小节介绍的代价函数是分段的,我们将分段的两个式子合并成一个,如下:
梯度下降法:(与线性回归的偏导数形式类似)
如果
θ
\theta
θ有多个参数,那么必须同步更新。
验证算法是否收敛的方法,与线性回归中介绍的一致,可以用图象观察法。
特征缩放,也同样适用于Logistic回归。合适的特征缩放,能够加快梯度下降法的收敛。
讲到这里,你可能会有个疑问,Logistic回归与线性回归有什么差别?
差别在于,
h
θ
(
x
)
h_\theta(x)
hθ(x)的含义发生了变化,Logistic做了sigmoid处理,使输出能够表示当前输入下,
y
=
1
y=1
y=1 的概率。
Logistic回归是非常强大的,甚至可以说是世界上应用最广泛的分类算法。
六、高级优化(Advanced Optimization)
除了梯度下降法外,还有其他更复杂更高级的算法来最小化代价函数。如下图中所列出的三种:Conjugate gradient、BFGS、L-BFGS。
它们的优点是:
(1)不需要手动选择学习率。它们拥有“智能内循环”,采用线搜索算法,能自动挑选出最合适的学习率,甚至为每次迭代选用不同的学习率。
(2)收敛速度比梯度下降法更快。它们除了自动选择学习率外,还做了很多其他的优化,此处不做详细介绍。
它们的缺点是:
(1)算法比梯度下降法复杂很多。
吴恩达教授不建议大家去亲自实现算法的细节,他本人也是在不懂细节的情况下,通过调用Octave的库来那三种复杂的算法。
因为高级算法的运行速度明显快于梯度下降,所以在大规模的机器学习中,吴恩达教授本人倾向于使用这三种更复杂高高级的算法,而不是提督学习。
七、多元分类:一对多(Multi-class Classification: One vs All)
One-vs-rest方法:如果有n个类别,就构建n个分类器。
第i个分类器的构建:属于第i个类别的样本作为正样本,其余作为负样本。分类器的输出是当前输入属于第i个类别的概率。
分类方法:输入一个数据,通过n个分类器分别得到n个概率,取概率最大的类别,作为预测的分类结果。