机器学习 40 讲
王天一
工学博士,副教授
34688 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
机器学习 40 讲
15
15
1.0x
00:00/00:00
登录|注册

07 | 模型的验证方法

模型本身及其背后学习方法的泛化性能(generalization performance),也就是模型对未知数据的预测能力,是机器学习的核心问题。可在一个问题的学习中,往往会出现不同的模型在训练集上具有类似的性能,这时就需要利用模型验证来从这些备选中做出选择。
由于模型的泛化性能和它的复杂度是直接挂钩的,所以模型验证的任务就是确定模型的复杂度以避免过拟合的发生。原则上说,模型验证应该使用专门的验证数据集。可是当数据集的容量较小,不足以划分成三个部分时,验证集和测试集就可以合二为一,共同来完成对模型的选择和评价。
估计泛化性能时,最重要的依据就是模型在训练数据集上的精度(accuracy)。定性而论,模型在训练集上的精度不能太低。由于模型的拟合和评价都是在相同的训练集上完成的,因此用训练误差去估计测试误差,得到的必然是过于乐观的结果。如果在训练集上都达不到较高的精度的话,模型本身的假设就很可能存在问题(比如用线性模型来建模平方关系的数据),从而导致较大的偏差,这样的模型很难指望它在真实数据上具有良好的表现。
可另一方面,训练数据集上的正确率也不是“低低益善”,因为过低的正确率往往是欠拟合的征兆。训练数据集中的数据量一定是有限的,这些数据共同构成了高维空间上一个点集。只要模型的参数足够多,形式足够复杂,就必定可以构造出经过所有数据点的曲线或者曲面,在训练集上得到 100% 的正确率。显然,这样的模型对训练数据的拟合能力过强,不可能具备良好的泛化特性。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《机器学习 40 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • Haley_Hu
    参数是模型训练出来得到的结果,超参数需要手动去设置。比如神经网络里面的层数等

    作者回复: 没错👍

    2
    8
  • 林彦
    超参数无法靠模型的数据训练直接获取。经常根据经验或系统的推荐在模型训练前手动设置,比如文中提到多项式的次数N,各种KXX模型中的K,学习速率,训练次数等。超参数会决定模型的属性(如复杂度)和训练的过程。在参数取值的数量无限时,超参数还无法用最优化算法找到最优解。可以用随机搜索,贝叶斯优化等方法尝试寻找更优的超参数,计算开销一般都比较大。 参数是模型中可以通过数据训练得到的参数,不需要人为事先指定。

    作者回复: 总而言之,超参数得人为设置,再用验证集去测。

    2
    4
  • zc
    老师,什么时候上python实例代码?

    作者回复: 介绍具体模型是就有代码了,主要是对第三方库的使用。

    4
  • dreamintime
    老师,为啥k折交叉验证,k越大,验证集方差就会越大?

    作者回复: 因为k越大,使用的训练数据越多,出现过拟合的可能性也越高。这样的模型可能学到训练数据中的干扰和噪声特性,在单独划分出的验证集上未必有好的表现。当然这也不是一定之规,每个具体问题都会有一个方差最优的k值,方差也就会先下降再上升。

    2
  • 韶华
    有没有根据数据量大小设置训练集,验证集和测试集的比例建议?另外没有验证集的话,会有哪些潜在问题?

    作者回复: 一般的比例是2:1:1或者1:1:1。 没有验证集就不能调超参数,不能做模型选择。只是在训练集上最优化出来的模型可能有过拟合的风险。

    2
  • 杨家荣
    极客时间 21天打卡行动 45/21 <<机器学习40讲/07>>模型的验证方法 回答老师问题: 参数和超参数之间的关系? 在机器学习的 上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。 在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数。 相反,其他参数的值通过训练得出。 超参数: • 定义关于模型的更高层次的概念,如复杂性或学习能力。 • 不能直接从标准模型培训过程中的数据中学习,需要预先定义。 • 可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定 超参数的一些示例: • 树的数量或树的深度 • 矩阵分解中潜在因素的数量 • 学习率(多种模式) • 深层神经网络隐藏层数 • k均值聚类中的簇数 [来源:百度百科https://baike.baidu.com/item/%E8%B6%85%E5%8F%82%E6%95%B0/3101858?fr=aladdin] 今日所学: 1,泛化性能是机器学习的核心问题; 2,由于模型的泛化性能和它的复杂度是直接挂钩的,所以模型验证的任务就是确定模型的复杂度以避免过拟合的发生; 3,估计泛化性能时,最重要的依据就是模型在训练数据集上的精度(accuracy)。 4,泛化误差也被称为样本外误差(extra-sample error)。 5,样本内误差:核心在于刻画噪声的影响。 6,利用样本训练出的模型 \hat f 在样本上的表现和在总体上的表现之间的差值,就是所谓的样本内误差。 7,对样本内误差的估计又可以转化成对它和训练误差之间的差值的估计,这个差值在《统计学习基础》中被称为乐观度(optimism)。 8,赤池信息量准则(Akaike Information Criterion, AIC)或者贝叶斯信息量准则(Bayesian Information Criterion, BIC)是计算有效参数的数目; 9,原则就是确保训练集、验证集和测试集三者两两互不相交。 10,留出法的思想稍做推广: k 折交叉验证法; 11,模型验证是模型原型设计的最后完善。一旦完成了模型验证,模型就不能再做调整了; 重点: 模型验证的作用是选择最佳模型并确定其性能; 对数据的重采样可以直接实现对样本外误差,也就是泛化误差的估计; k 折交叉验证是无放回的重采样方法; 自助采样是有放回的重采样方法。
    2
  • ifelse
    学习打卡
    归属地:浙江
    1
  • 张金磊
    “对测试误差的估计可以转化成对样本内误差的估计”,请问老师,这里的测试误差是指什么?根据上下文我没搞懂
    1
  • 张金磊
    “但好在经过一番处理之后,对测试误差的估计可以转化成对样本内误差的估计” 老师,这里的“测试误差”不是指在测试集上的误差吧?
  • 建强
    通过网上查资料,模型的参数和超参数有以下特征: 一、模型参数特征: (1)进行模型预测时需要模型参数 (2)模型参数值可以定义模型功能 (3)模型参数用数据估计或数据学习得到 (4)模型参数一般不由实践者手动设置 (5)模型参数通常作为学习模型的一部分保存 二、模型超参数特征: (1)模型超参数常应用于估计模型参数的过程中 (2)模型超参数通常由实践者直接指定 (3)模型超参数通常可以使用启发式方法来设置 (4)模型超参数通常根据给定的预测建模问题而调整 个人的一点肤浅理解,请老师指正: 模型参数是模型的一个内在特征,用来刻画模型本身的固有特性,它可以通过对符合模型特征的数据的统计量进行估计或计算来得到,比如正态分布模型中的均值和方差,可以通过样本均值和样本方差来得到一个估计值;而模型超参数不是模型本身固有的,它主要用来控制模型的复杂度和规模, 是外界施加给模型的一个特征,需要进行人为控制。 在机器学习中通过学习模型参数可以得到更加精准的模型,通过控制超参数可以控制模型复杂度,使之能更好地拟合数据。
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部