前言
之前学习的单变量和多变量线性回归都是解决监督学习中的回归问题,现在开始学习如何解决监督学习中的分类问题,分类问题即输出都是离散值,我们主要通过逻辑回归模型来解决分类问题
1.分类问题(Classification)
2.假说表示(Hypoththesis Representation)
3.判定边界(Decision Boundary)
逻辑回归模型
(一)分类问题(Classification)
分类问题应用很广,比如判断邮件是否为垃圾邮件,或者判断一个肿瘤是否为恶性的。对于这样的Yes还是No的问题,我们将输出结果设为0和1,其中,0表示Negative Class,即表示否定;1表示Positive Class,即表示肯定。例如判断是否为垃圾邮件的时候,输出为1则表示是垃圾邮件,输出为0则表示不是。以下,我们从最简单的二元分类开始,即只对两种数据进行分类,输出结果只有0和1。
以判断肿瘤是否为恶性为例,我们有以下数据集。说明,1表示是恶性肿瘤,0表示不是恶性肿瘤。
我们尝试用之前学习的单变量线性回归算法对数据进行拟合。拟合的直线大致如下:
通过图像,我们大致可以确定,以
h
θ
(
x
)
h_\theta \left( x \right)
hθ(x)=0.5为分割点,确定此时的TumorSize,假设此时的TumorSize为
a
a
a,当
h
θ
(
x
)
h_\theta \left( x \right)
hθ(x)大于0.5时,即TumorSize大于
a
a
a,我们预测为是恶性;当
h
θ
(
x
)
h_\theta \left( x \right)
hθ(x)小于0.5时,即TumorSize小于
a
a
a,我们预测为良性。结果如下:
由此我们可能认为线性回归算法可以解决分类问题,但实际并不如此,主要有以下两点原因。
-
对于存在偏离的数据点,预测效果很差。例如,在上图的肿瘤数据集中,我们增加一个偏离数据集靠右的点,线性回归算法拟合出的直线大致如蓝线:
这时候,还是以 h θ ( x ) h_\theta \left( x \right) hθ(x)=0.5为分割点,并确定此时的TumorSize为 a a a。可以看出,当TumorSize大于 a a a的时候预测为1是正确的,但当TumorSize小于 a a a的时候,有预测为0的,也有预测为1的,这时候的预测是不准确的。可能会疑问,为什么不改变 h θ ( x ) h_\theta \left( x \right) hθ(x)的分割点来继续预测,因为根据图像我们是看不出 h θ ( x ) h_\theta \left( x \right) hθ(x)具体为何值的时候可以很好的划分数据,我们也不可能每次预测的时候画出数据集的图像来观察,所以这一点就基本确定线性回归算法不能用于分类问题。 -
分类问题要求输出 y y y 取值为 0 或者1,但如果使用的是线性回归,那么假设函数的输出值可能远大于 1,或者远小于0,即使所有训练样本的标签 y y y 都等于 0 或 1。
综上,线性回归算法不能解决分类问题,而逻辑回归算法将很好地解决以上问题。
(二)假说表示(Hypoththesis Representation)
对于逻辑回归,我们的学习路线是这样的:学习假说的表示,学习代价函数,学习梯度下降。此前我们说过,希望分类器的输出值在0和1之间,因此,我们希望想出一个满足某个性质的假设函数,这个性质是它的预测值要在0和1之间。我们将线性回归的假设函数
h
θ
(
x
)
=
θ
T
X
h_\theta \left( x \right)=\theta^{T}X
hθ(x)=θTX加以改造,将它的范围限制在0到1之间。我们通过常用的逻辑函数S形函数(Sigmoid function)实现,它的公式为
g
(
z
)
=
1
1
+
e
−
z
g\left( z\right)=\frac{1}{1+{{e}^{-z}}}
g(z)=1+e−z1,改造后的逻辑回归的假设函数如下:
g
(
x
)
=
1
1
+
e
−
θ
T
X
g\left(x\right)=\frac{1}{1+{{e}^{-\theta^{T}X}}}
g(x)=1+e−θTX1
Sigmod函数图像如下:
对于逻辑回归的假设函数
g
(
x
)
=
1
1
+
e
−
θ
T
X
g\left( x \right)=\frac{1}{1+{{e}^{-\theta^{T}X}}}
g(x)=1+e−θTX1可以这样理解,首先和线性回归一样,计算出
θ
T
X
\theta^{T}X
θTX,但是多了一步,计算之后将结果代入到Sigmod函数,输出的值的含义代表预测为1的概率值,这一点很重要,即如果通过已经确定的参数计算得出
h
θ
(
x
)
=
0.7
h_\theta \left( x \right)=0.7
hθ(x)=0.7,则表示有70%的几率
y
y
y为正向类(1),相应地
y
y
y为负向类的几率为1-0.7=0.3,则表示有30%的几率
y
y
y为负向类(0)。我们规定,
h
θ
(
x
)
h_\theta \left( x \right)
hθ(x)大于0.5预测为1,即正向类;小于0.5预测为0,即负向类;等于0.5,可正可负。这边有一个例题:
(三)判定边界(Decision Boundary)
所谓的“判断边界”就是对数据集进行边界划分,理解这个将帮助理解逻辑回归的假设函数是如何发挥作用的。假设函数如下:
我们说过,当
h
θ
(
x
)
>
=
0.5
{h_\theta}\left( x \right)>=0.5
hθ(x)>=0.5时,预测
y
=
1
y=1
y=1(将0.5划分到正向类);当
h
θ
(
x
)
<
0.5
{h_\theta}\left( x \right)<0.5
hθ(x)<0.5时,预测
y
=
0
y=0
y=0。仔细观察图像,很容易发现,当
z
=
0
z=0
z=0 时,
g
(
z
)
=
0.5
g(z)=0.5
g(z)=0.5;当
z
>
0
z>0
z>0 时 ,
g
(
z
)
>
0.5
g(z)>0.5
g(z)>0.5;当
z
<
0
z<0
z<0 时 ,
g
(
z
)
<
0.5
g(z)<0.5
g(z)<0.5。进一步,
z
=
θ
T
x
z={\theta^{T}}x
z=θTx ,即:
θ
T
x
>
=
0
{\theta^{T}}x>=0
θTx>=0 时,预测
y
=
1
y=1
y=1;
θ
T
x
<
0
{\theta^{T}}x<0
θTx<0 时,预测
y
=
0
y=0
y=0 。举两个例子:
假设我们有以下数据集,假设函数已经给出,假设我们已经通过优化算法求出了
θ
\theta
θ的最优值,即
θ
0
=
−
3
\theta_{0}=-3
θ0=−3,
θ
1
=
1
\theta_{1}=1
θ1=1,
θ
2
=
1
\theta_{2}=1
θ2=1,可以得到:当
Z
=
−
3
+
x
1
+
x
2
≥
0
Z=-3+{x_1}+{x_2} \geq 0
Z=−3+x1+x2≥0,即
x
1
+
x
2
≥
3
{x_1}+{x_2} \geq 3
x1+x2≥3,我们预测为正向类,相反,预测为负向类。我们可以根据
x
1
+
x
2
=
3
{x_1}+{x_2} =3
x1+x2=3画出边界:
同样地,假设我们有以下数据集,假设函数已经给出,添加了高阶的多项式,模型参数也已经给出。根据同样的方法,我们也可以得出边界的划分。
,
需要说明的是,决策边界是假设函数的一个属性,它包括模型参数 θ \theta θ,在以上图中 我们画出了一个训练集,但是,即使我们去掉这个数据集,这条决策边界和我们预测 y = 1 与 y = 0 y=1与y=0 y=1与y=0的区域,它们都是假设函数的属性,决定于其参数,而不是数据集。也就是说,我们将使用训练集来确定参数的取值,但是,一旦我们有确定的参数取值,例如有确定的θ0,θ1,θ2 我们就将完全确定决策边界。这时,我们实际上并不需要在绘制决策边界的时候绘制训练集。