机器学习:模型评估与选择

1.1 经验误差和过拟合

错误率 = 分类错误样本数占全部样本总数的比例

  • 例如:在m个样本中有a个样本分类错误,则错误率 E = a/m

精度 = 1 - 错误率 即为 1 - a/m

学习器的实际预测输出与样本的真实输出之间的差异称为误差(error)

学习器在训练集上的误差称为训练误差 (training error)或经验误差(empirical error),

学习器在新样本的误差称为泛化误差(generalization error).

我们希望得到泛化误差更小的学习器,但是我们事先不知道新样本是什么样的,实际能做的就是努力使经验误差最小化.但是如果分类精度达到100%也不是我们想要的,当学习器把训练样本学得太好时,很可能把已经训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质.这种现象称为过拟(overfitting)与其相对应的是欠拟合(underfitting)这是指训练样本的一般性质尚未学好.

造成过拟合的主要原因是,学习器学习能力过于强大,以至于学习到了训练样本所包含的不太一般的特征,如下图,欠拟合则通常是学习能力低下而造成的,但是较为容易克服,例如增加神经网络隐藏层数.但是过拟合就很麻烦,在后面的学习中我们将看到,过拟合是机器学习的关键障碍,并且过拟合无法彻底避免,我们所能做的就是缓解.

在这里插入图片描述

在现实任务中,我们有多种学习算法可供选择,选择适当模型理想情况是,对候选模型的泛化误差进行评估,然后选择泛化误差最小的模型.但是我们无法直接获得泛化误差,而训练误差又由于过拟合情况存在而不合适作为标准.所以接下来我们将讨论模型评估与选择的方法.

1.2 评估方法

设置一个测试集来测试学习器对新样本判断能力,然后以测试集上的测试误差(testing error)作为泛化误差的近似值,需注意测试样本尽量与训练集互斥.下面将根据这样的核心思想介绍几种常见做法.

1.2.1 留出法 (hold - out)

  • 留出法:直接将数据集D化为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T,在S上训练出模型后,用T来做测试误差,作为泛化误差的评估.

  • 需注意,第一个问题: 训练/测试集的划分要尽可 保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响.

  • 第二个问题:即使给定了训练/测试集的样本比例后,仍存在多种划分方式对初始数据集D进行分割.而且不同的划分往往得到不同的结果,因此单次使用留出法得到的估计结果往往不够可靠稳定,在使用留出法时,一般要采用若干次随机划分,重复进行试验结果评估后取平均值作为留出法的评估结果.

  • 例如进行100次随机划分,每次产生一个训练/测试集用于试验评估,100次后就得到100个结果,而留出法返回这个100个结果的平均值.
  • 此外:若令训练集S包含绝大多数样本,则训练出的模型可能更接近于用D训练出的模型,但由于T比较小,评估结果可能不够稳定准确;若令测试集T包含一些样本,则训练集S和D的差别更大了,被评估模型与用D训练出的模型相比很可能有较大差别,从而降低了评估结果的保真性(fidelity),这个问题没有完美解决方案,常见做法是选用2/3~4/5的样本用于训练,剩余样本用于测试.

1.2.2 交叉验证法(cross-validation)

  • 交叉验证法:先将数据集D划分为k个大小相似的互斥子集,每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到.然后每次通过k-1个子集的并集作为训练集,雨下的那个子集作为测试集,这样就可获得k组训练/测试集,从而可进行k次训练和测试.最终返回的是这k个测试结果的均值.显然,交叉验证法的评估结果的稳定性和保真性很大程度上取决于k的取值,所以通常称为“k折交叉验证”.

在这里插入图片描述

  • 当交叉验证法中的k = m则,则得到了特例:留一法(Leave-One-Out简称LOO).留一法使用的训练集与初始数据集相比只少了一个样本,这就使得句大多数情况下,留一法的评估结果往往被认为比较准确.然而,留一法也存在一些缺陷:当数据集比较大时,训练m个模型的计算开销可能是难以承受的(例如,数据集包含100w个样本则需训练100w个模型).

1.2.3 自助法

  • 自助法(bootstrapping)是一个比较好的解决方案,它直接以自主采样法(bootstrap sampling)为基础.给定包含m个样本的数据集D,我们对它进行采样产生数据集D’: 每次随机从D中挑选一个样本,将其拷贝放入D‘中,然后再将该样本放回初始数据集D中,使得该样本在下次采集的过程中仍可能被采集到;这个过程重复执行m次之后,我们就得到了包含m个样本的数据集D’.
    上述过程中,样本始终不会被采集到的概率是(1 - 1/m)m 取m -> ∞ 极限得到 1/e = 0.368…
    于是我们可以用D‘作为训练集,而D\D’作为测试集.这样的测试结果被称为“包外估计”(out-of-bag estimate)

  • 自助法在数据集较小的时候,难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习的方法有很大帮助.但是,自助法产生的数据改变了初始数据集分布,会引起估计误差.

综上,在初始数据量充足的情况下,留出法和交叉验证法更实用.在数据量较小时,使用自助法.

1.2.4 调参与最终模型

大多数学习算法都有些参数需要设定,参数配置不同,学得模型的性能往往有显著差别.因此,在进行模型评估与选择时,除了要对适用学习算法进行选择,还需要对算法参数进行设定,这就是所谓的“调参”(parameter turning)

其本质思想就是:对每种参数配置都训练出模型,然后把对应最好的模型参数作为结果,但是得注意一点:学习算法很多参数是在实数范围内取值,因此上述想法不太可行.现实中常用做法是,对每个参数选定一个范围和步变化长.

  • 例如 在[0,0.2]间采用0.05为步长.

给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试,事实上我们只是用了一部分数据训练模型.因此,在模型选择完成后,学习算法和参数配置已选定,此时应用数据集D重新训练模型.这个模型在训练过程中使用了所有m个样本,这才是我们最终提交给用户的模型.

需注意:我们把学得模型在实际使用中遇到的数据称作测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为"经验集"(validation set).

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值