分类问题引入
在最开始机器学习的定义中,我们介绍了机器学习的两大学习算法----监督学习和无监督学习。
我们知道了监督学习的工作,就是通过有标签的数据训练,获得一个模型,然后通过构建的模型,给新数据添加上特定的标签,即在监督学习中,对于数据集中的每个样本,我们希望通过算法预测并得到“正确答案”。 并且我们知道监督学习有两种常见的问题:回归问题和分类问题。而且我们知道,回归是指我们的目的是预测一个连续值输出;分类是指我们的目的是预测一个离散值输出。
在前面的学习中,我们都是对回归问题进行讨论,现在我们开始讨论监督学习的另一种常见问题:分类(classification)。
上图所示是一些分类问题的例子,我们在前面说过,分类是指我们的目的是预测一个离散值输出,比如上图例子中的判断肿瘤的良性与恶性,很显然,在进行预测之前,我们就知道输出结果的全部取值可能,即良性或者恶性两种情况,也就是说,这种问题下输出的取值是有限的,即输出是离散的,如下图所示
我们令输出
y
∈
y\in
y∈ {
0
,
1
0,1
0,1} 其中
y
y
y 取
0
0
0 时说明肿瘤为良性,称
0
0
0 为负类;
y
y
y 取
1
1
1 时说明肿瘤为恶性,称
1
1
1 为正类,其中输出的取值以及负类和正类,并没有明确的规定,但是对于这种问题,我们约定俗成这样设置输出更加便于描述分类问题。对于上述结果只有两种取值可能的分类问题,我们称之为二分类问题,很显然,还有多分类问题,但我们先从二分类问题开始讨论。
那么,我们该如何开发一种分类算法呢?
上图所示是肿瘤分类问题的数据集,我们现在能够做的就是将之前介绍的线性回归算法应用到这个数据集当中,即使用直线来拟合数据,那么,我们可能会得到下图所示的假设函数
h
Θ
(
x
)
=
Θ
T
x
h_\varTheta(x)=\varTheta^Tx
hΘ(x)=ΘTx
现在,我们可以做的就是将分类器的输出阈值设置为
0.5
0.5
0.5,当输出大于这个值时,预测结果为
1
1
1, 当输出小于这个值时,预测结果为
0
0
0。
这样看来,线性回归算法在分类问题中的表现还是不错的嘛,但是实际情况真的是这样吗,假如我们再添加一个样本进来,结果还会很不错吗?
如上图所示,我们仅仅添加了一个样本,线性回归算法就拟合出了一个非常差劲的结果,不能说是毫不相干,只能说一塌糊涂。那么,是因为线性回归算法不行吗?当然不是,我们都知道术业有专攻,只能说我们选择将线性回归算法应用于分类问题,这显然不是一个好主意。
当我们将线性回归算法应用于分类问题时,还不止上面一个问题,对于第一个数据集,我们可以说是运气好,但是我们也做了一个额外的操作,就是设置分类器的输出阈值,因为可以看到我们利用线性回归算法拟合出来的直线,其对应的取值已经远远超出了我们说的两种取值可能,所以更说明将这种算法应用于分类问题是不行滴。
在后面,我们会介绍一种名为 L o g i s t i c R e g r e s s i o n Logistic\;Regression LogisticRegression的算法,这是当今最流行、最广泛使用的学习算法之一,它的特定在于算法的预测值或者说取值一直介于 0 0 0 和 1 1 1 之间。
注意:虽然名字中有回归,但它是一种分类算法,至于为什么叫这个,那就需要追溯历史咯