首页 理论教育 机器学习模型的验证与评估方法

机器学习模型的验证与评估方法

时间:2023-07-02 理论教育 版权反馈
【摘要】:图4.8自助法验证2.机器学习模型的评估确定了验证方法之后,接下来就是如何对性能进行评估了。针对机器学习中的两种基本任务——回归与分类,评估方法是不一样的。

机器学习模型的验证与评估方法

机器学习算法有很多,各种算法又有许多的参数需要设置和确定,不同的算法、不同的参数就会产生不同的机器学习模型,那么该选用哪个算法,使用什么样的参数配置呢?这时就必须对机器学习模型的性能进行评价,不但希望它对训练数据表现很好,还希望它对新的数据有很好的表现,也就是希望它有较好的泛化性能。

1.机器学习模型的验证

模型训练好以后,当然可以找一批新的数据来测试,但是在机器学习里,通常的做法是不将全部数据都用于模型的训练,而是拿出一部分数据用于测试,从而来评估模型的效果。为了解决验证的问题,常用以下方法。

(1)留出法。

留出(hold out)法直接将数据集分成两个部分,一部分作为训练数据集,另一部分作为测试数据集。比如,假设数据集包含1000个数据,用0.7来划分,也就是以700个作为训练数据,将其余300个用于测试,如果测试过程中,出现了30个分类错误,则说明正确率为270/300=90%。

需要注意的是,在划分数据集时,要尽可能保持数据分布的一致性,尽可能和实际会遇到的数据保持相同的分布。比如在例4.3中,因为数据的类别是排列好了的,所以在划分训练数据和测试数据时,需要先用shuffle()函数来打乱次序,再来划分。

留出法存在的问题有两个:一个是划分数据的方法有可能会影响到验证的结果;另一个是只用了部分数据进行训练,尤其是当训练的数据不够多时,获得的模型效果会受到影响。基于这些原因,有人提出了交叉验证法。

(2)交叉验证法。

交叉验证(cross validation)法,从名字上就可以知道,数据会被交换着作为测试数据或者训练数据。这种方法会重复进行训练和验证,在不同批次中,数据可能作为训练数据使用,也可能作为测试数据使用。

比如留一交叉验证(LOOCV,leave one out cross validation)法:将数据集分为训练数据集和测试数据集时,只留1个数据用于测试,将其余的数据都用于训练。完成训练和测试以后,下一次再留另一个数据用于测试集,其余的用于训练,如此重复。如果数据集总共有N个数据,则将重复N次。最终,模型的性能就取这N次测试结果的平均。

这种方法的问题也很明显,就是计算量太大,它比留出法耗时多了N-1倍,尤其是当数据量较大时,计算开销可能令人难以忍受。

交叉验证法中有一种方法更常用,称为K折交叉验证法,它和留一交叉验证法的不同之处在于每次选取的测试数据集将不再只包含1个数据,而是将数据集分成K份,然后不重复地每次取其中一份作为测试数据集,将其余K-1份作为训练数据集。最后,模型的性能就取这K次的平均值。如果数据有N个,当取K=N时,就变成了留一交叉验证法。常见的是K=5或10,称为5折交叉验证或10折交叉验证。图4.7所示即为5折交叉验证说明。

图4.7 5折交叉验证说明

(3)自助法。

自助(bootstrapping)法也称为有放回采样法,主要用于数据不太多的场合。它从给定的训练数据集D中以均匀抽样的方式挑选样本,抽取样本后,样本依然放回原数据集D,所以下次再采样时,该样本有概率会被再次采到。假设数据集的样本数为n,进行n次自助采样后,就能得到大小和D一样也为n的数据集D'用于训练。虽然D'中可能会有被重复采到的样本,但是如果需要评估模型在训练数据集大小为n时的性能就有必要了。

理论上,采用这种采样方式时某个样本不被采到的概率为

取极限,有

这说明采用这种采样方式时该样本有36.8%的概率不被采到。这样,每轮采样了n次用作训练数据之后,没被采样到的数据就作为测试数据,如图4.8所示,最后模型的性能取K轮实验的平均值。

图4.8 自助法验证

2.机器学习模型的评估

确定了验证方法之后,接下来就是如何对性能进行评估了。针对机器学习中的两种基本任务——回归与分类,评估方法是不一样的。

在回归任务中,最常用的性能度量方法为计算均方误差(MSE,mean squared error),即直接统计所有测试数据集数据的预测值和标签值(可以看作是真实值)的均方误差即可。假设测试数据集有n个数据,对xi预测的结果是p(xi),其标签值为yi,那么均方误差的公式为

对于分类任务,首先我们会关注分类正确与否,只需要统计n个测试数据中,错误分类的数据是占比为多少即可。错误分类的数据占比称为错误率(error rate),计算公式为:

对应地,正确分类的数据的占比称为正确率(accuracy),计算公式为:

这两个指标其实可以看作是同一种,虽然很直观,但是如果仅用它们来衡量模型的好坏有时是不够的,尤其是在数据分布不平衡的场合。比如预测图片中是猫还是狗,如果测试数据中有95张狗的图片、5张猫的图片,那么就算模型根本没有识别出猫和狗的特征,直接将所有图片都识别为是狗的图片,正确率也不会太低。

对于分类问题,更多的是根据真实类别以及模型识别出的类别进行组合,形成混淆矩阵(confusion matrix)进行分析,如表4.4所示。以二分为例,假设样本有正(P)、负(N)两种类型,预测结果有对(T)、错(F)两种,那么就会出现以下四种组合:

表4.4 分类结果混淆矩阵

(1)样本为正,预测结果也为正,用TP(true positive)表示,也称为真阳性;(www.xing528.com)

(2)样本为正,预测结果为负,预测错了,用FP(false positive)表示,也称假阳性,属于误报;

(3)样本为负,预测结果为负,用TN(true negative)表示,也称真阴性;

(4)样本为负,预测结果为正,也属于预测错误,用FN(false negative)表示,也称假阴性,属于漏报。

根据混淆矩阵,有以下一些定义:

如果关注检测出来的阳性是不是真的都是阳性,有多少是真的阳性,也就是检测得是否精准的问题,定义为精准率或查准率,用预测正确的阳性比上所有检测出的阳性:

如果关注真正的阳性是否都被检测出来了,有多少漏掉了,定义为真阳性率(true positive rate),用预测正确的阳性比上所有的真实的阳性,也称为查全率、召回率(recall)或灵敏度(sensitivity),它反映了模型对正例的识别能力:

如果关注负样本,也就是阴性情况,衡量模型对于负样本的识别能力,用特异度(specificity)表示,用预测错误的负例,也就是假阳性,比上所有的负例,也称为假阳性率:

预测的正确率也可以表示成:

例4.4 假设有一组猫和狗的50张图片,用来测试某机器学习模型,识别结果用混淆矩阵表示,如表4.5所示,请计算该模型识别的正确率以及识别狗图片的查准率、查全率。

表4.5 猫和狗图片识别结果

解 该模型的识别正确率为:

识别狗的查准率,将狗作为正样本P,则有

识别狗的查全率为:

该模型用来识别猫和狗图片的正确率为70%,在识别出是狗的30张图片中,只有66.7%识别正确,数据集中有25只狗,它能将其中的80%都识别出来。

通常,查准率(用P表示)和查全率(用R表示)是一对矛盾的量,比如,希望查出来的阳性一定是阳性,也就是希望查准率高,可以提高判断标准,对把握大的才判断为阳性。这样精确度就提高了,而全面性降低了。反过来,我们希望所有阳性都被检测到,那么就要宁可查错也不放过,精确度就会下降。所以,在很多情况下,需要综合考虑,这时,常用的方法为绘制P-R曲线,即以查准率P作为纵轴,以查全率R作为横轴,绘制模型在两者之间的权衡曲线。这对确定模型的参数也是很有用的。比如,在识别猫和狗的模型中确定判断门限时,可以先提高判断门限,比如99%可能是狗时才识别为狗,计算此时的P值和R值;然后将判断门限降低,如98%可能是狗就识别为狗,再计算P值和R值;继续降低门限,依此类推,就可以得到如图4.9所示P-R曲线,比如曲线A。

图4.9 P-R曲线与平衡点示意图

从曲线A就能直观地看到这个机器模型的表现情况了。如果希望查准率和查全率都尽可能大,可以选择P=R的点,即图4.9中和虚线的交点。这些交点称为平衡点(BEP,break event point)。而如果某一个猫狗识别的模型P-R曲线为B,它完全包住了曲线A,就可以说明这个模型的性能要比曲线为A的模型的性能好,因为在相同的情况下,B的查准率和查全率都比A大。而对于曲线C和B来说,就不好判断谁更优秀了,因为在不同的应用中可能会有不同的要求,有的系统可能希望查准率高,比如指纹识别系统;而有的系统则可能希望查全率高,比如入侵检测系统。如果P、R都重要的话,一般就选曲线下面积大的。

类似BEP,为了能综合评价查准率P和查全率R的影响,引入了F1分数(F1-score),它又称为F1综合评价指标(F1-measure),是P和R的调和平均(harmonic mean),比单独采用正确率描述模型更合格:

可以看到,只有当P和R都为1时,F1才为1。对于例4.4,可以算出F1=0.72。

F1衡量的是当P和R同等重要时模型的分数,但有时候,有些应用会更关注查准率,有些应用又会更关注查全率,这时,使用F1的一般形式,即加权的调和平均Fβ,也即式(4.20),通过设置不同的β值来设置对P和R的偏好。

当β2=1时,即为F1;当β2<1时,P权重大,表示查准率更重要;当β2>1时,R权重大,表示查全率更重要。

如果关注机器学习模型的泛化性能,关注机器学习模型对正、负例的识别能力,选用另外两个指标——真阳性率TPR和假阳性率FPR。以真阳性率TPR作为纵轴,以假阳性率FPR作为横轴,类似绘制P-R曲线,选择不同的门限值,会得到不同的TPR、FPR值,于是就得到了另外一条曲线——ROC(receiver operating characteristic curve)曲线,如图4.10所示。显然,TPR越大,FPR越小,模型的性能就越好。

ROC曲线越靠近左上角,真阳性率越大,假阳性率越小,最靠近左上角的点就对应着当前模型最好的分类门限值,此时假阳性和假阴性的总数量最少。图4.10中,曲线C被曲线A和B包住了,说明曲线C对应的机器学习模型的性能比曲线A和B对应的机器学习模型的性能要差,而对于曲线A和B对应的机器学习模型的性能,因为有交叉,可以参考ROC曲线下的面积AUC(area under ROC curve)来判断。一般认为面积越大的机器学习模型性能越好。

图4.10 ROC曲线与AUC示意图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈