西瓜书学习笔记day2

模型评估与选择

一、经验误差与过拟合

错误率:分类错误的样本数占样本总数的比例。在m个样本中共有a个样本分类错误,则错误率E=a/m。

精度:1-a/m

误差:学习器实际预测输入与样本的真实输出之间的差异定义为误差。在训练集中的误差被称为训练误差,在新样本上的误差被称为泛化误差。

过拟合:当学习器把训练样本学的“太好了”的时候,很可能会把训练样本的特性当作所有潜在样本所拥有的共性,从而模型的泛化性能下降,这种情况就被称为“过拟合”,一般是由于学习能力过于强大造成的。与之相对的,当学习器把训练样本学的“不够好”的时候,就被称作“欠拟合”,主要由于学习能力过弱。

二、评估方法

在训练前,我们需要一个“测试集”来对学习模型的泛化误差进行评估而做出选择。测试集应尽量与训练集互斥,且同样从样本的真实分布中独立同分布采样获得。

常见产生测试集的做法:
①留出法:
直接将数据集划分为两个互斥的集合,其中一个作为训练集,另外一个作为测试集。一般采用多次随机划分来确保采样的随机性。

②交叉验证法
先将数据集划分为k个大小相似的互斥子集,然后每次采用k-1个子集的并集用来训练,剩下的子集作为测试集,可进行k次训练与评估,最终返回k个测试结果的均值。又被称作k折交叉验证。
若数据集有m个样本,在进行交叉验证时使用k=m,则得到交叉验证的一个特例:留一法。这种方法不受随机样本划分的影响,但计算开销难以忍受,且“没有免费的午餐”定理对于评估方法也同样适用。

③自助法
希望评估以完整的数据集D所训练出的模型,但在留出法与交叉验证法中必须要留出一部分样本用于测试,可以用自助法解决这个问题,它以自助采样法为基础,给定包含m个样本的数据集D,对他进行采样生成D‘,每次随机从D中挑选一个样本放入D’,然后再将样本放入D中,使得该样本在下次采样过程中仍然能够被采集到,重复执行m次以后,就得到了包含m个样本的数据集D‘,可见,D中的一部分样本会在D’中出现。由于:

初始数据集中约有36.8%的样本未出现在D‘中,于是我们可以将D’作为训练集,将D\D‘作为测试集,这样实际评估的模型与期望评估的模型都使用m个训练样本,而同时仍然有1/3的样本没在训练集中出现并参与了测试,这样的测试结果又被称作“外包估计”
自助法在训练集较小是使用比较多,除此外,自助法还可以产生多个不同的训练集,对集成学习有很大的好处。但是在进行数据产生时,自助法改变了初始数据集的分布,会产生一定的估计偏差,故留出法与交叉验证法更加常用。

三、参数选择与性能度量

大多数学习算法都需要设定参数,参数的设定与学习模型的性能息息相关,这个过程被称作“调参”
性能度量是指对学习器的泛化能力进行评估,反应了任务的需求,不同的性能度量往往会导致不同的评判结果,在回归任务中,最常用的就是“均方误差”:


在这里插入图片描述

1、错误率与精度

分类任务中常见的两个性能度量,既适用于二分类,又适用于多分类任务。错误率即分类错误的样本数占总样本数的比例,精度则为分类正确的样本占总样本数的比例。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、查准率、查全率与F1

对于一个二分类问题,有时我们并不关心分类错误的比例,而更关心在某个分类中正确的比例(就好像在某个分类中“宁肯错杀不能放过”)
于是我们将结果分为四类:真正例、真反例、假正例、假反例。
在这里插入图片描述
在这里插入图片描述
查准率与查全率必然一高一低,当所有的样本都被判定为正例的时候,查全率就会达到100%,但这样显然意义不大。双方关系如下图所示。

在这里插入图片描述
当一个学习器的PR曲线被另一个完全“包住”,则该学习器的性能要劣于另一个。一般来讲,我们以PR曲线下面积的大小来判断性能。但这个值难以估算,因此人们设计了一些其他的度量:
①平衡点(BEP):
查全率=查准率时双方的取值。
②F1度量
由于平衡点过于简化,F1度量更加常用。

在一些应用中,对于查重率与查准率有着明显的偏好,因此设计出了F1度量的一般形式,用来表现出在具体问题中的偏好:

在这里插入图片描述
其中β表示了查重率对查准率的相对重要性,β=1时就表示没有偏好的F1度量,β>1时表示查全率有更大的影响,<1时表示查准率影响更大。

若对多个混淆矩阵进行评估(多分类问题或多次训练),则可在各个混淆矩阵上分别计算查全率与查准率,就可得到宏查全率、宏查准率、宏F1:
在这里插入图片描述
还可先将各个矩阵的元素进行平均,再基于平均值算出微查全率、微查准率、微F1:
在这里插入图片描述

3、ROC与AUC

很多学习器在训练过程中会为样本产生一个概率预测,然后将预测值与分类阈值进行比较,若大于阈值就分为正类,否则就是反类。这个预测直接决定了,模型的泛化能力。
ROC:受试者工作特征
与PR相似,根据学习器的预测结果对样本进行排序,按此顺序逐个把样本作为正例来进行预测,每次计算出两个重要量的值,分别以他们为横纵坐标,就得到了ROC曲线。
在ROC曲线中,纵轴是“真正例率”,横轴是“假正例率”。
在这里插入图片描述
在这里插入图片描述

ROC曲线示意图:
在这里插入图片描述
AUC为阴影部分面积,可有效表示学习器的泛化能力。
对基于有限样例绘制的ROC曲线来说:
在这里插入图片描述

4、代价敏感错误率与代价曲线

在实际问题的解决中,不同的错误造成的结果也不同,有时需要“能放则放”,有时需要“宁肯错杀也不放过”。基于这样的现实需求,我们可以为错误赋予“非均等代价”

我们可以将costij表示为将第i类样本预测为第j类样本的代价。以二分类为例,代价矩阵如下:
在这里插入图片描述
在引入代价

矩阵后,我们希望获得总体的最小代价若将上图第0类作为正类,1类作为反类,令D+与D-分别代表例集D的正例与反例子集,则“代价敏感”的错误率为:
在这里插入图片描述

基于次操作,可以给出不同性能度量的代价敏感版本。
如:
若对ROC曲线进行代价敏感操作,ROC曲线不能反映出整体期望低价,可以使用“代价曲线”:
横轴是取值为【0,1】的正例代价概率:
在这里插入图片描述
其中FPR为假正例率,FNR=1-FPR为假反例率。

代价曲线的绘制:
在这里插入图片描述
在这里插入图片描述

四、比较检验

1、假设检验

假设检验中的“假设”是对学习器泛化错误率分布的某种猜想或判断,但我们并不知道学习器的泛化错误率,只知道它的测试错误率,两者接近的可能性比较大,但未必相同,我们一般使用测试错误率来推出泛化错误率的分布。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
②t检验
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上两种方法是对单个学习器泛化性能的假设检验。

2、交叉验证t检验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、McNemar检验

对于二分类问题,使用留出法不但可以估计出两种学习器的测试错误率,还可以获得两者分类结果的差别,如“列联表”所示。
在这里插入图片描述
在这里插入图片描述

4、Friedman检验与Nemenyi后续检验

交叉验证t检验和McNemar检验都是在一个数据集上比较两个算法的性能,而我们在使用过程中,常常会对多个算法进行比较,虽然我们可以把他们单列出来进行两两比较,但也可以使用Friedman方法(基于算法排序)。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
若两个算法的平均序值之差超出了临界值域CD,则以相应的置信度拒绝“两个算法性能相同这一假设”。
在这里插入图片描述
在这里插入图片描述

5、偏差与方差

除了要通过实验估计算法的泛化性能外,我们还要了解为什么它具有这样的性能,“偏差-方差分解”就是解释学习算法泛化性能的重要工具。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
偏差定义了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。
方差度量了同样大小的训练集变送所导致的学习性能的变化,即刻画了数据扰动所造成的影响。
噪声则表达了当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。

根据上图的偏差-方差分解说明,泛化性能是由机器学习算法的能力、数据的充分性以及学习任务本身的难度来共同决定的。

一般来说,偏差与方差是有冲突的,这成为“偏差-方差窘境”。
在我们训练不足时,学习器的拟合能力不强,训练数据的扰动不足以使学习器发生显著变化,这时偏差主导了泛化错误率;而当训练充足后,学习器的拟合能力已经很强了,训练数据的轻微扰动都会被学习器学习到,若训练数据自身的特性被学习器学到了,那就会发生过拟合。这时就是方差在主导泛化错误率。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值