准确度的陷阱
我们评价算法的好坏,对于回归问题来说,我们提到过 M S E MSE MSE、 R M S E RMSE RMSE 和 M A E MAE MAE,还有一个最好的评价回归算法的指标 R R R S q u a r e Square Square。但是对于分类算法的评价,到现在为止,我们都一直在使用分类准确度这一个指标。是不是有些小伙伴会认为就使用这一个分类指标就算好了呢。其实分类准确度在评价分类算法的时候是有一个很重要的问题的,我们先来看看分类准确度有什么问题,进而衍生出对分类算法的评价问题。
下面就先来看看分类准确度到底有什么问题?这里举出这样一个例子:如果我们要是实现一个癌症预测系统,我们向系统中输入体检信息,该系统就可以判断该体检的人是否患有癌症。
在这个过程中,我们需要先收集很多数据作为训练数据集训练出一个模型,进而完成我们的癌症预测系统。现在如果告诉你我做了这样一个癌症预测系统,它的预测准确率达到了 99.9%,那么你觉得这个系统是好是坏呢?可能很多小伙伴都会觉得正确率这么高,应该是比较好的。其实不然,很有可能这个系统是不够好的。为什么这么说呢?想象一下,假设这种癌症的发病率为 0.1%,意味着我根本不要任何机器学习的算法,对于任何输入的人的体检信息,我都预测是健康的,就可以达到 99.9% 的准确率。这样一来,其实我们这个系统什么事情都没做,但是使用准确度这样的指标来看的话,准确度达到了 99.9%。更极端一些的话,如果癌症产生的概率只有 0.01%,意味着预测所有人都是健康的,此时系统的准确率就可以达到 99.99% 的准确率。这就是使用分类准确度来衡量一个分类系统的问题所在。
这样的问题发生在我们的数据是极度偏斜(Skewed Data)的时候,比如上面举的例子中癌症人数相比于健康人数来说是极度少的。面对这样的数据,我们只使用分类准确度是远远不够的,我们还需要引入其它的算法指标。
混淆矩阵
首先我们介绍一个非常基础的工具:混淆矩阵(Confusion Matrix)。我们先来看看,对于一个分类算法来说,作用在一组数据之上,如何得到混淆矩阵?进一步就会看到我们通过混淆矩阵就能得到各种比分类的准确度还要好的分类指标。
先来看看二分类问题相应的混淆矩阵是怎样创建的?对于二分类问题来说,混淆矩阵是一个 2x2 的矩阵,也就是说它只有 4 个数。在矩阵中,每一行代表的是对于我预测的问题来说,它相应的真实值(0 或 1)。每一列代表分类算法的预测值(0 或 1)。
那么灰色表格中应该填写什么呢?比如(0, 0)这一格,我们预测样本的真值为 0,我们预测的值也为 0(Negative),所以就预测正确(True)了,用 T N TN TN(True Negative) 表示。再看(0,1)这一格,表示这个样本的真值为 0,我们预测的值为 1(Positive),所以就预测错误(False)了,所以用 FP(False Positive)表示。
我们还是举出一个简单的例子,还是之前癌症的例子。假设有 10000 个人,有一个算法对 10000 个人的信息进行检测,然后预测他们患癌症的结果是怎样的?预测为 1 代表患病,为 0 代表不患病。那么我们的混淆矩阵有可能是下面这样子的。
对于这 10000 个人,有 9978 预测为不患病,并且预测准确了(TN),有 12 个人预测患病但是预测错误了(FP),有 2 个人预测不患病预测错误了(FN),有 8 个人预测患病并且预测准确了(TP)。
那么混淆矩阵就介绍到这里,下一篇博客将会介绍通过混淆矩阵我们可以创建怎样的指标?为什么这些指标要比之前的分类准确度要更加的好?