机器学习模型评估与选择

机器学习模型评估与选择


一下内容纯属个人理解,欢迎指正!

一、误差与过拟合/欠拟合
“误差”:学习器(模型)的实际预测输出与样本的真实输出之间的差异;
分类问题:离散,0/1,他们的差异为预测输出与真实输出不同时为0或者1;用 错误率=输出不一致样本数/总输入样本数  衡量,反过来,也可以用  准确率= 一致样本数/总样本数 = 1-错误率
回归问题:连续,[a, b], 他们的差异即为预测输出与真实输出之间的均方误差(每个误差平方之和取均值)

学习器(模型)在训练集上的误差称为 训练误差或者经验误差(用训练集训练出来的模型并不能完全和训练集的所有样本匹配);在新样本(测试集)上的误差称为 泛化误差

学习器的最终目的: 在新样本上能表现得很好,那么,必须从训练样本中尽可能学出适用于所有潜在样本的“ 普遍规律”

过拟合:学的“太好了”,把 训练样本自身才有的一些特点当作了所有潜在样本都会具有的一般性质
什么会导致过拟合:学习器的学习能力过去强大,以至于把训练样本中所包含的不太一般的特性都学到了。学习能力是由 学习算法和数据内涵共同决定的。所以应从算法和数据入手防止过拟合。
欠拟合:没有学到所有样本的共有的 全部普遍特征,只从训练样本中学到一 部分特征便认为学的很好了。
(实际项目,我提取一大堆特征出来,扔到学习器里让它学习,过拟合是算法把特征学的过多了,怪算法喽,可以调节算法参数啊,也可以人为地把影响算法产生过拟合的特征去除掉。欠拟合可能是学习器学习能力不行,怪算法喽,也可能是我提取的特征没有包含全部普遍特征,那赶紧再提一些特征扔进去啊)


在现实任务中,有那么多算法,什么向量机啊,逻辑回归啊,决策树啊,随机森林啊.......我们应该选用哪个算法呀?对于同一个算法,还有那么多参数,参数要设为多少合适呢? 这些都会产生不同的模型的,到底哪个模型更好呢?这就是模型选择问题。

二、模型选择
还记得学习器的最终目的吗,就是在新样本上表现的好,就是泛化误差小。(我们忽略时间开销,存储开销等)
那么,模型选择就简单了,选择泛化误差最小的那个不就行啦。
事实上却是,测试集上的实际输出我们不知道,泛化误差无法衡量啊!(在算法比赛中可以通过在线提交结果获得泛化误差,但是这次数受到限制,而且现实问题中确实不知道测试集的输出。我们往往是选择好了最好的模型再去预测的,再去看看模型的实际预测效果如何的,因为这往往需要比较大的代价)《 为什么线下和线上比赛的测试误差比较大?可能是线下的样本没有经过清洗,样本本身就已经偏离了

那么用训练误差呢?上一节说过,训练误差存在过拟合现象,不适合作为标准。

那么,现实中怎样对模型进行 评估然后选择最好的模型呢???(用什么标准来衡量模型的好坏)
假设所有样本都是独立同分布的,那么最直接的想法就是从训练集中分出一部分作为测试集(他们之间必须 互斥,即没有重复样本),为了区分真正的测试集,我们称之为 验证集,它的功能跟测试集一样。

注意:从原始训练集划分出新训练集和验证集的过程中,这三者分数据分布必须保持一致!采样角度看的话就是要分层采样得到验证集(提个问题:回归问题中怎么分层采样)

1.留出法(hold-out)
原训练集D = 新训练集S + 验证集T (互斥,同分布)
D中有0.6~0.8的比例为S,其余为T
这中间有个balance:保真性(S越多越好)和稳定性(T 也不能够太少,否则每次评估的结果方差就大了)
单次使用留出法结果不够稳定可靠,因此应进行若干次 随机划分,重复试验评估后取均值!

2.k折交叉验证法(cross validation)
原训练集D = D1+D1+D3...+Dk  ( 互斥,同分布
k决定了评估结果的保真性和稳定性!常取10(0.9用于训练,0.1用于验证)、5、20
单次使用k折交叉验证结果不够稳定可靠,因为将数据集D划分为k个子集存在多种划分方式。为减少因样本划分不同而引人的差别,需要 随机使用不同的划分进行重复(p次)! 最终的评估结果是这p次k折交叉验证结果的均值。常见:10次10折交叉验证

特例:假设D中有m个样本,令k=m,此时划分方式只有一种(p=1),每个子集(D1,D2,...,Dk)只包含一个样本,称为留一法(leave-one-out, LOO);保真性很强,但是需要训练m次(m=100万个样本的话)开销巨大啊!

3.自助法( Booststrapping)(Booststrap原意为解靴带,英文中的典故中译为自助法)
自助采样亦称可重复采样,有放回采样
原训练集D(m个样本)经又放回采样m次,得到新训练集S(S中也有m个样本,与 原训练集保持相同的样本数!)
理论说明,经以上自助采样后,原训练集D中有约 1/3的样本没在新训练集中,刚好作为验证集!这样的测试结果称为“包外估计”(out-of-bag estimate).
优点:适用于 数据集较小,难以有效划分新训练集/验证集时。能从 原训练数据集中产生多个不同的新训练集,可用于 集成学习
缺点:新训练集 改变了原训练集的分布,引人估计误差。因此,原训练集足够时,留出法和交叉验证法更常用


 此外,大多数学习算法都有参数需要设定,参数设定不同,学得模型的性能往往也有显著区别。因此需要调节算法参数,即所谓“调参”。
调参和上面讨论的算法选择的方法一模一样,即对 每种参数配置都训练出模型,然后把对应最好模型的参数作为结果仍用以上三种方法!区别在于参数取值为连续的,需要给定范围和步长。


最后一步:在我们选择了最好的学习算法和参数配置后,我们就完成了模型选择!但是,此时应用 原数据集D重新 训练选择出来的模型(用选定的算法和选定的参数配置),这才是我们最终提交给用户做预测的模型!(超参数由前者确定,模型的参数后后者确定)

总结:对比不同算法(包含参数)《 包括选择的算法和设定的算法参数两发面》的泛化性能,用测试集上的判别效果来估计模型的实际使用时的泛化能力(唯一标准,各大算法竞赛的评分排名就是依靠这);
而进行 算法选择算法参数设定必须依赖于将 原训练集D划分为新训练集和验证集(验证集就是来模拟测试集)利用k折交叉验证等来实现。

附录:
性能度量
在测试集上对学习器的泛化能力进行评估,需要一个评价标准。我们一开始说的“误差”就是其中最常见的。实际问题中,标准往往不一样。如果是算法竞赛,那就看其中的评分标准。
(在不同的测试集上测得的学习器的泛化能力不一样,假设检验可以从统计上解决这个问题)





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值