当我们创建一个机器学习模型,然后通过该模型输出结果,那我们会不会直接使用这个结果呢?
如果你的答案是:会使用,那你对这个结果完全认可吗?
如果你的答案是否定的,那你对这个结果有哪些疑问呢?
本文从模型评估的方法和性能的度量两个方面来解答以上的疑问,本篇文章主要讨论分类学习模型的评估与性能度量。
模型的评估方法
我们创建的机器学习模型都要通过训练数据来训练模型,为了检测学习模型是否符合我们的要求,就需要通过测试数据来测试学习模型对新样本的判别能力,据此来评价学习模型的好坏。我们将训练模型的数据称为训练数据集,测试模型的数据称为测试数据集。
我们应该如何选择选择训练数据集和测试数据集呢?训练数据集合测试数据集都是从样本中得到的,为了保证评估结果的准确性,就需要训练数据集和测试数据集相互独立。即测试样本尽量不在训练集中出现,未在训练过程中使用过。
然而实际应用中,样本的数量都是有限的,训练数据集和测试数据集也只能从样本中得到。这样问题就转化为通过什么样的方法可以保证训练数据集和测试数据集相互独立,比较简单的拆分方法就是按照8:2的比例对样本进行拆分。但是在拆分的时候要注意保证训练数据集和测试数据集中的数据要包含所有类别的数据。对于分类数据我们可以通过分层采样得到训练集和测试集。
当然以上的拆分方法是非常简单的,如果需要更多的拆分方法,可以参考《机器学习》(周志华)第二章中的评估方法一节,其中介绍了留出法、交叉验证法以及自助法等拆分方法。
性能度量
仅仅有可行的模型评估方法还不能确定模型的好坏,在评估方法的基础上还需给出评价模型的标准,这就是模型性能的度量。不同的任务需求,我们需要使用不同的度量标准。分类任务常用的性能度量包括错误率、精度、查准率、查全率等。
首先我们以基本的二分类来说明这些度量标准的含义,然后根据机器学习分类的结果与真实样本类别的组合可以分为四类组合:(预测结果为真,真实类别为真)、(预测结果为假,真实类别为真)、(预测结果为假,真实类别为真)、(预测结果为假,真实类别为假)。这四类组合可以通过矩阵表示为:
表1
预测结果为真 | 预测结果为假 | |
---|---|---|
真实类别为真 | r1,1 | r1,0 |
真实类别为假 | r0,1 | r0,0 |
其中r的第一个角标代表真实类别,第二个角标代表预测结果。
也就是预测结果中包含以上四类数据,假设样本总量为m,则有:
m = r 1 , 1 + r 1 , 0 + r 0 , 1 + r 0 , 0 (1) m=r_{1,1}+r_{1,0}+r_{0,1}+r_{0,0} \tag{1} m=r1,1+r<