西瓜书笔记(二):模型评估与选择

本文介绍了模型评估的必要性,探讨了留出法、交叉验证法和自助法构建测试集的方法。重点讲解了错误率、精度、查全率、查准率、F1分数、ROC曲线和AUC以及代价敏感错误率等性能度量,并讨论了如何在实际问题中选择合适的评估标准。


前言

去年这个时候考研学习实在是太枯燥了开始重新看的西瓜书,一年都过去了还是没看完嘿嘿,但是考研倒是上岸了。打算最近把看过的内容补一下笔记,就记在这里了,写的什么地方有问题或者路过的好兄弟有什么见解希望不吝赐教。

一、模型评估的需要

在实际应用的机器学习问题上,无论是在训练集上还是新样本上,模型输出的结果和真实值总是有一定的差异存在的。评判模型的一个重要指标便是模型的正确率/错误率(acc/err),但是只通过模型在训练集上的正确程度是没有办法准确的对模型的效果进行评判的,例如在回归问题中同样是1+1这个问题,回答3和回答100的均是一个错误答案,但是他们的错误程度是有很大的区别的,这种评判方式也没有办法让我们更好的对模型进行优化。另一种常见的评判方式是误差评估,在训练集上产生的误差成为训练误差或经验误差,在新样本上的误差称为泛化误差,我们训练一个模型的最终目的就是得到一个泛化误差较小的模型。
对于误差的构建不同模型有着不同的方法,我们对模型的最终评判也通常不以误差为最主要的评判标准

问题出现了,我们说泛化误差是模型在新样本上的表现,但是我们又不是从未来来的,怎么会知道产生泛化误差的新样本是什么样子呢。所以在训练模型的过程中,我们只能通过尽可能地减少训练误差,来达到尽可能减少泛化误差的目的。

这便出现了另一个问题,即过拟合问题。欠拟合问题是过拟合问题的反面,我们在进行机器学习模型的训练时,希望的是它能够学习到问题中的一般规律,当机器没有进行良好的学习时,我们称之为欠拟合问题,举例为我们教模型1+1=2,结果模型输出1+1=3,连训练时的问题都没能够学习到正确的答案时,我们称之为欠拟合。相对的就是过拟合,我们教模型1+1=2,问1+1模型回答2,问1+2模型回答2,问1+3模型回答2,即模型过度的学习了问题中的规律,产生了一些不存在的或者不正确的规律,例如举的例子便可以理解为模型以为加法运算的结果均为2,但这种规律其实是不正确的。因为训练集的局限性,我们在训练一个模型的时候不可能让这个模型得知所有的可能发生的事件,所以模型本身其实是一定会存在过拟合现象的,因为模型只是在给定的训练集中寻找规律,这种规律注定是有局限性的,过拟合也就是必然的,但是我们可以通过一定的方式降低过拟合或者减少过拟合现象对模型的影响,从而达到构建一个良好模型的目的。
过拟合问题我们会在之后的一些问题中再次提到解决方案,在此不做赘述

书归正传,对于减少训练误差这个事情而言,我们便是在训练集上寻找规律,从而必然会产生不同程度的过拟合现象。在一定的范围内训练误差越小,模型的效果越好,但是超过一定的限度后,过拟合的程度便会大大的提高,所以我们通常不以训练误差的大小作为对模型效果的最终评判标准。

以上便是我们需要使用一个测试集来对模型效果进行测试的全部原因啦。回顾一下:1.无法得到准确的泛化误差。2训练集会产生过拟合现象,不适合使用/只使用训练误差作为评判标准。 对大家而言使用测试集不应该是一个陌生的事情,这是每一个模型评估时都需要进行的必要步骤,测试集存在的目的便是用其上的测试误差对泛化误差进行近似的拟合。

二、测试集的构建方法

首先,构建一个测试集要遵循几个要求,首先是和构建训练集一样,样本的分布要尽可能地接近真实样本,这个非常好理解,训练模型的最终目的是为了在真实样本中进行应用,那么我们在训练和测试的时候就要尽可能地去选择接近真实样本分布的数据;第二点是测试集和训练集中的数据最好是互斥的,也就是说测试集的样本不属于训练集,这是为了防止乐观的估计了模型的性能,简单举例来说就是考试做到了很多之前学过的原题,那这次考试的成绩大概率是要比你平时的成绩好的。

留出法

留出法是在划分测试集时最简单的方法,其原理便是将全部的数据划分为两个互斥的数据集,一个作为训练集,另一个作为测试集。

在划分数据集的过程中,最需要注意的点便是要保持数据集的一致性,例如我们有一个正负样本比为7:3的数据集,那我们在划分训练集和测试集时,要尽量的保持训练集和测试集的正负样本比也保持在7:3的比例中,如果训练集和测试集的样本分布有较大的差别,在评估模型时便会因为数据的分布情况不同而产生分布误差,这明显是我们不想见到也可以避免的问题。这个问题的产生很好理解,以最常见的手写字体识别为例,如果我们在划分数据集的过程中,将数字0全部划入测试集中,那么训练结束后的模型通常是无法识别出0这个数字的。

在评估的过程中,单次使用留出法得到的结果往往不够稳定可靠,所以在使用留出法进行评估时,通常要重复多次随机划分,取评估的平均值作为评估的最终结果。

留出法作为最简单的方法自然也有其不足之处,通常来讲,我们使用的全部数据应当是作为训练集对模型进行训练,在使用留出法时,留出作为测试集的部分如果很小,大部分数据都在训练集中,模型的训练结果和使用全部的数据进行训练应当是较为接近的,但是因为测试集的数据量非常小,在测试集上产生的测试结果往往是不准确的;但是增加测试集的数量时,训练集中的数据量相对而言就会减少,和使用全部数据进行训练的结果会产生更大的偏差。 这是一个很难进行平衡的问题,也是留出法最大的缺陷所在,通常的解决方案是使用1/3左右的数据进行测试。

交叉验证法

交叉验证法,通常又称为K折交叉验证法。其划分数据集的过程如下图所示将数据集划分为k个分布相对于原始数据集分布尽量一致的部分,在训练模型的过程中,分别选取其中的一个部分作为验证集,其余k-1个部分作为训练集,将k次实验的结果取平均值得到最终的评判结果。
在这里插入图片描述
特殊情况:留一法

在使用交叉验证法时,对于数据量为M的数据集,若我们将其划分为M份,即每一个数据都作为验证集进行交叉验证,这种验证方法称为留一法。如同上文留出法所提到的,留一法使用的训练集只比总数据集少一个数据,所以说训练出的结果是极度接近最终训练的模型结果的,且进行了交叉验证可以使得模型的训练结果非常接近真实的 泛化误差。 但是因为留一法只使用一个数据作为训练集,所以留一法在m个数据的数据集上要进行m次训练,在大数据集的情况下很难进行实际应用。

自助法

自助法是一种相对有趣但是较为少用的划分数据集的方式,其产生训练集的方式为:从大小为m的总数据集中随机选取数据m次,产生一个大小依旧为m的数据集。虽然看起来有一点奇怪但是考虑到数据被选取的概率是1/m,不被选取的概率为1-1/m,则在m次选取中,一个数据不被选中的概率为(1-1/m)的m次方,取极限为1/e约等于0.368,也就是说,在数据集足够大时,大概有36.8%左右的数据不会被选中。

自助法和上面的方式同样具有一些优点和缺点,优点为:自助法的选取方式产生的数据集大小和原始数据集相当,这就使得因训练规模不同产生的估计偏差被抹除了,此外自助法擅长划分小数据集且能产生多个不同的训练集。 相较于自助法的优点,其缺点也更加明显:自助法的选取数据方式改变了数据集中数据的分布方式,这带来的估计偏差往往要更大于其抹除的估计偏差。 所以在划分数据集的过程中,留出法和交叉验证法要更为有效和常见,在数据集充足时几乎不考虑自助法的划分方式。

小结

测试集的使用归根结底是为了评判模型的效果,最终得到的模型应该是以全部数据作为训练集按照实验出的最优方式训练出的结果。

三、性能度量

上面主要说明了测试集的必要性及构建方法,本章主要讲一下常用的性能度量,需要说明的是我们在使用性能度量时一般只在测试集上进行度量,比较两个算法的性能优劣时需根据实际情况实际问题出发选择合适的性能度量,还要对性能度量进行进一步的处理比较,所以在此处只会对性能度量进行简单的介绍。

错误率和精度

错误率:预测标签和真实标签不同的样本占总样本的比例
精度:即正确率,预测标签和真实标签相同的样本占总样本的比例
错误率和精度之和为1

查全率查准率和F1

在这里插入图片描述
查全率Recall:又称召回率,真正例占全部预测正例(真正例+假正例)的比例,举例说明:挑出的所有好瓜中真的好瓜的比例
查准率Precision:又称准确率,真正例占全部真实正例(真正例+假反例)的比例,举例说明:挑出的真的好瓜占全部好瓜的比例
查重率和查准率是一对矛盾的变量,如果选瓜时把所有瓜都选为好瓜,那么查全率一定是百分之百但是查准率就会很低;如果只挑一个确定是好瓜的瓜作为好瓜,查全率很低但是查准率为百分之百。这就需要权衡两个指标之间的关系。

P-R图:将所有的样本按照预测概率排序,逐个把样本作为正例进行查全率和查准率的计算,以查准率为纵轴,查全率为横轴作图即可得到P-R曲线图,举例如下。
在这里插入图片描述
在这里插入图片描述
F1指标:F1度量是一种权衡查重率和查准率的衡量方式,其公式为 F 1 = 2 ∗ P ∗ R / ( P + R ) F1 =2*P*R/(P+R) F1=2PR/(P+R),根据对查重率和查准率的不同重视程度还可以使用 F β = ( 1 + β 2 ) ∗ P ∗ R / ( β 2 ∗ P + R ) F\beta = (1+\beta^2)*P*R/(\beta^2*P+R) Fβ=(1+β2)PR/(β2P+R)(β小于1时重视查准率,大于1时重视查重率)来进行计算衡量。

ROC和AUC

roc曲线是一种类似于PR曲线的计算方式,其纵轴为TPR真正例率(真正例/真正例+假反例),横轴为FPR假正例率(假正例/假正例+真反例),AUC定义为ROC曲线下的下面积,较为看重模型预测的排序准确性。
在这里插入图片描述
在这里插入图片描述

代价敏感错误率和代价曲线

主要用于错误代价差距较大的情况下,例如将一个健康患者判断为传染病进行下一步检测和将传染病患者判断为健康产生的错误代价是差距较大的,在这种情况下,我们考虑错误率时,需要根据设定乘以一个特定的错误代价值再进行判断。

四、比较检验

本章节笔者也没怎么做深入的阅读和记录,就不记了

总结

简单介绍了一下西瓜书第二章的测试集和性能度量。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值