机器学习笔记(二)模型评估与选择

本文详细探讨了机器学习中模型评估与选择的关键点,包括经验误差与过拟合的概念,以及如何通过测试误差、交叉验证等方法评估模型。介绍了性能度量如查准率、查全率、F1分数以及ROC曲线和AUC,强调了偏差和方差在理解模型性能中的作用。此外,还讨论了比较检验的重要性,确保模型评估的统计意义。
摘要由CSDN通过智能技术生成

2.模型评估与选择

2.1经验误差和过拟合

不同学习算法及其不同参数产生的不同模型,涉及到模型选择的问题,关系到两个指标性,就是经验误差和过拟合。

1)经验误差

错误率(errorrate):分类错误的样本数占样本总数的比例。如果在m个样本中有a个样本分类错误,则错误率E=a/m,相应的,1-a/m称为精度(accuracy),即精度=1-错误率。

误差(error):学习器的实际预测输出和样本的真实输出之间的差异。训练误差或经验误差:学习器在训练集上的误差;泛化误差:学习器在新样本上的误差。

自然,理想情况下,泛化误差越小的学习器越好,但现实中,新样本是怎样的并不知情,能做的就是针对训练集的经验误差最小化。

那么,在训练集上误差最小、甚至精度可到100%的分类器,是否在新样本预测是最优的吗?

我们可以针对已知训练集设计一个完美的分类器,但新样本却是未知,因此同样的学习器(模型)在训练集上表现很好,但却未必在新样本上同样优秀。

2)过拟合

学习器首先是在训练样本中学出适用于所有潜在样本的普遍规律,用于正确预测新样本的类别。这会出现两种情况,导致训练集上表现很好的学习器未必在新样本上表现很好。

过拟合(overfitting):学习器将训练样本的个体特点上升到所有样本的一般特点,导致泛化性能下降。

欠拟合(underfitting):学习器未能从训练样本中学习到所有样本的一般特点。

通俗地说,过拟合就是把训练样本中的个体一般化,而欠拟合则是没学习到一般特点。一个是过犹不及;一个是差之毫厘。过拟合是学习能力太强,欠拟合是学习能力太弱。

欠拟合通过调整模型参数可以克服,但过拟合确实无法彻底避免。机器学习的问题是NP难,有效的学习算法可在多项式时间内完成,如能彻底避免过拟合,则通过经验误差最小化就能获得最优解,这样构造性证明P=NP,但实际P≠NP,过拟合不可避免。

总结,在模型选择中,理想的是对候选模型的泛化误差进行评估,选择泛化误差最小的模型,但实际上无法直接获得泛化误差,需要通过训练误差来评估,但训练误差存在过拟合现象也不适合作为评估标准,如此,如何进行模型评估和选择呢?

2.2评估方法

评估模型既然不能选择泛化误差,也不能选择训练误差,可以选择测试误差。所谓测试误差,就是建立测试样本集,用来测试学习器对新样本的预测能力,作为泛化误差的近似。

测试集,也是从真实样本分布中独立同分布采样而得,和训练集互斥。通过测试集的测试误差来评估模型,作为泛化误差的近似,是一个合理的方法。对数据集D={(x1,y1), (x2,y2),…, (xm,ym)}进行分隔,产生训练集S和测试集T,通过训练集生成模型,并应用测试集评估模型。文中有个很好的例子,就是训练集相当于测试题、而测试集相当于考试题。

现在我们将问题集中在测试集的测试误差上,用以评估模型。那重要的是,对数据集D如何划分成训练集和测试集从而获得测试误差?

1)留出法

留出法(hold-out)将数据集D划分为两个互斥的集合,其中一个集合用作训练集S,另一个作为测试集T,即D=SUT,S∩T=∅。在S上训练出的模型,用T来评估其测试误差,作为对泛化误差的近似估计。

以二分类任务为例。假定D包含1000个样本,将其划分为700个样本的训练集S和300个样本的测试集T。用S训练后,模型在T上有90个样本分类错误,那么测试误差就是90/300=30%,相应地,精度为1-30%=70%。

留出法就是把数据集一分为不同比例的二,这里面就有两个关键点,一个就是如何分?另一个就是分的比例是多少?

如何分呢?训练集和测试集的划分要保持数据分布的一致性。何意?分层采样,保持样本的类别比例相似,就是说样本中的各类别在S和T上的分布要接近,比如A类别的样本的比例是S:T=7:3,那么B类别也应该接近7:3这个分布。

在分层采样之上,也存在不同的划分策略,导致不同的训练集和测试集。显然,单次使用留出法所得到的估计结果不够稳定可靠,一般情况下采用若干次随机划分、重复进行试验评估后取平均值作为评估结果。

S和T各自分多少呢?若训练集S过多而测试集T过小,S越大越接近D,则训练出的模型更接近于D训练出的模型,但T小,评估结果可能不够稳定准确;若训练集S偏小而测试集T偏多,S和D差距过大,S训练的模型将用于评估,该模型和D训练出的模型可能有较大差别,从而降低评估结果的保证性(fidelity)。S和T各自分多少,没有完美解决方法,通常做法是二八开。

2)交叉验证法

交叉验证法(crossvalidation)将数据集D划分为k个大小相似的互斥子集,即D=D1UD2U…UDk,Di∩Dj=∅(i≠j);每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样所得。训练时,每次用k-1个子集的并集作为训练集,余下的一个子集作为测试集;如此,可获得k组训练集和测试集,从而进行k次训练和测试,最终返回k次测试结果的均值。k值决定了交叉验证法评估结果的稳定性和保真性,因此也称为k折交叉验证或k倍交叉验证,k常取值10、5、20,10折交叉验证示意图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值