机器学习之模型的评估与选择基本概念

根据训练数据有无标记信息,机器学习可以分为监督学习和非监督学习,分类和回归是监督学习的代表,聚类是非监督学习的代表;
机器学习的目标是使学的的模型具有很好的泛化能力,所谓泛化能力,即学的模型适用于新样本甚至整个样本空间的能力。在实际学习中,我们希望得到能在新样本上表现很好的学习器,然而,学习器普遍存在“过拟合”的问题,这是不可避免的,只能缓解。过拟合即是学习器把训练样本学得太好了,将训练样本的一些特性当作整个样本空间的普遍规律,导致泛化性能下降,与之相对的则称为“欠拟合”。
关于模型的评估与选择,将样本分成样本集与测试集,测试集用来测试学习器对新样本的学习能力,然后以测试集上的测试误差作为泛化误差的近似。如何选择测试集,常用的有三种方法:
1)留出法:
直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个集合作为测试集合T,在S上训练出模型后,在T上评估误差,近似为泛化误差;需要注意的是,测试集和训练集的划分要保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,比如在分类任务中,至少要保持样本的类别比例相似。如果从采样的角度看待数据集的划分过程,则保留类别比例的采样方式通常称为分层采样(stratified sampling).而且,即便给定训练集和测试集的样本比例后,也因划分方式不同导致训练结果不同,因此,单次使用留出法得到的估计结果往往不够稳定可靠,在实际操作中,一般需要采用若干次随机划分,多次重复进行实验评估后去平均值作为留出法的评估结果,常见的做法是将大约2/3--4/5的样本作为训练集,另一部分作为测试集;
2)交叉验证法:
将数据集D划分为k个大小相似的互斥子集,每个子集尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后,k-1个子集作为训练集,第k个子集作为测试集,常用的有10次交叉验证,与留出法相似,数据集D划分为K个子集也存在多种划分方式,为减少因样本划分不同而产生的误差,常用的做法是随机使用不同的划分方式重复P次,将这p次k折交叉验证的均值作为最终的评价结果。
比较特殊的是,若数据集D包含m个样本,令k=m,则得到交叉验证的一个特例:“留一法”。因为m个样本只有唯一的方式划分为m个子集,使得训练集只比初始数据集少了一个样本,在绝大多数情况下,留一法被实际评估的模型与期望评估的用D训练出的模型一致,评价结果往往比较准确,然而,当数据量过大时,训练m个样本的计算开销是难以忍受的。
3)自助法:
直接以自助采样为基础,给定包含m个样本的数据集D,对其进行采样产生数据集D',由于每次从D中随机采样放入D’,然后再将该样本放入数据集D中,这使得该样本在下次采样时仍可能采到,这个过程重复m次后,虽然得到一个包含m个样本的数据集D‘,但在D’中,可能有多次被采样得到的重复数据,而原始样本集D中有一部分样本从未被采样过,其概率大概为1/e=36.8。当数据集较小,难以有效划分训练/测试集是比较有用,但当数据量过大,自助法产生的数据集改变了初始数据集的分布,引入了估计偏差,因此,当初始数据足够时,留出法和交叉验证法就显出优势。
事实上,当模型算法获得时,模型的评价结果如何,算法参数也发挥着一定作用,因此,在确定最终模型前,参数选择调整也是很重要的一步。
常见的评价方法即性能度量有:
1)错误率与精度:错误率是分类错误的样本数占样本总数的比例,精度=1-错误率;
2)查全率与查准率:常用在信息检索,web搜索等应用中,即“检索出的信息中有多少比例是用户感兴趣的”“用户感兴趣的信息中有多少被检索出来了”。
以二分类问题为例,分为正例和反例,真正例TP, 假正例FP,假反例FN,真反例TN,查准率P=TP/(FP+TP),查全率R=TP/(TP+FN),查全率与查准率往往是一对矛盾的度量。P-R图直观地显示出学习其在样本总体上的查全率,查准率,再进行比较时,若一个学习器的P-R曲线被另一个学习器的P-R曲线完全“包住”,则可断言后者的性能优于前者。
3)ROC与AUC
4)代价敏感错误率与代价曲线
有了实验的评估方法和性能度量,看起来就能对学习器的性能进行评估比较了:先使用某种实验评估方法测得学习器的某个性能度量方法,然后对这些结果进行比较,常见的比较方法有:
1)假设检验:
假设检验中的假设是对学习器泛化错误率分布的某种判断或者猜想,现实任务中我们并不知道泛化错误率,只能获知其测试错误率,二者未必相同,但直观上,二者接近的可能性较大,相差很远的可能性较小,因此,可根据测试错误率估推出泛化错误率的近似分布。
2)交叉验证t检验
针对交叉验证法评估结果的检验,基本思想是若两个学习器的性能形同,则它们使用相同的训练/测试集得到的测试错误率应相同。通常情况下,由于样本有限,在使用交叉验证等实验估计方法时,不同轮次的训练及会有一定程度的重叠,这使得测试错误率实际上并不独立,会导致过高估计假设成立的概率,为缓解这一问题,采用5*2交叉验证法,做5次两折交叉,在没刺2折交叉验证之前随机将数据打乱,是得5次交叉验证中的数据划分不重复,对两个学习器A和B,第i次2折交叉验证将产生两队测试错误率。
3)McNemar检验:
针对二分类问题
交叉验证t检验和McNemar都只是在一个数据集上比较两个算法的性能,在一组数据上进行多个算法性能比较,引入
4)Friedmani和Nemenyi检验
对学习算法除了通过实验估计其泛化性能外,我们还关心为什么具有这样的性能,引入偏差和方差的概念
偏差-方差分解是解释学习算法泛化性能的一种重要工具,偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了当前学习任务上任何学习算法所能达到的期望繁华误差的下届,刻画了学习问题本身的难度;偏差-方差分解说明,泛化能力有学习算法的能力,数据的充分性以及学习任务本身的难度所共同决定,给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。

猜你喜欢

转载自blog.csdn.net/u013363120/article/details/80344956