Week 3: Assessing performance 笔记
得到一个模型之后如何评价其性能?
- training error & generalization error & test error
- 如何理解generalization error(泛化误差)分为 noise 噪声、Variance 方差、 bias偏差
- 误差 和 模型复杂度 的关系
- 实际训练模型过程中该如何做
training error & generalization error & test error
(1)training error
模型在训练数据集上的误差。
(2)generalization error
Generalization, 一般化,泛化。
我们用训练数据集(training data)训练一个模型,而我们希望这个模型能实际应用于训练数据集之外的总体
数据,所以这个模型真实误差应该是所有可能的数据的集合上的误差,但这是无法实际计算的,我们能够用来学
习的训练数据集只是全部数据中的一个子集。
课程中的例子是房价估计,我们用已有的数据集训练一个模型用于房价预测,而除了已有的房屋出售数据之
外,还有许多没没统计进这个数据集的数据。我们希望能评估这个模型的真实预测效果,即求得用这个模型对所
有可能的房屋出售的数据集进行房价预测产生的误差,这个误差就是generalization error(泛化误差)。
(3)test error
因为generalization error无法真正计算(得不到所有可能的数据集合),所以可以用training dataset
之外的一个数据子集来近似估计generalization error,这就是test error。
test error是generalization error的近似,故而在算法中应注意Training /test split (训练/测试数据集分割比例),
训练数据太少,则模型预测效果差;测试数据太少,则测试数据集不具有普适性,test error不能较好的近似
generalization error。
Noise & Variance & Bias
(1)Noise
Irreducible: 不可减少的
周志华《机器学习》中是这么解释的:
泛化误差可分解为偏差、方差与噪声之和。
偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同
样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了在当前任务上
任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
(2) bias & variance
一张图理解bias 和variance .
所以一个好的模型应该具有low bias & low variance。现在问题来了,鱼与熊掌可兼得吗?
复杂度较小的情况下:
Low complexity –> high bias 、 low variance
利用training set训练模型的过程,就是不断逼近一个理想的”真实模型”的过程,复杂度较小时,模型对训练数
据集的拟合程度较低,模型预测值与真实值偏差较大,bias较大,同时由于拟合程度较低,模型普适性较好,应
用于不同的数据集预测结果之间差异不大,variance较小。
复杂度较大的情况下:
high complexity –> low bias 、 high variance
复杂度较大,模型对训练集拟合程度很高,bias很小,但模型拟合是针对训练集这个特定的数据集进行的,
而训练集只是真实数据的一个子集,得到的模型过于specific,包含了许多具体的,针对于训练集的特征。利用
这个模型对其他不同的数据集进行预测,预测结果会“飘忽不定(erratic)”,variance很大,模型对training set
拟合的很好,而用于预测时效果不佳误差很大,这种现象称为“过拟合”。
训练数据集对于模型拟合十分重要,考虑一个理想的情况,复杂度一定的条件下,假如我们拥有全部
可能的数据,即训练数据集无限大,此时variance就趋近于0(noise噪声为不为0;training error 和 bias要
考虑复杂度对拟合效果的影响),这种情况下就不需要bias-variance tradeoff(但显然这是不现实的)。
errors & complexity
test error 图同generalization error。
Complexity 不是越大越好,要考虑到 bias-variance tradeoff,当complexity过小,欠拟合,complexity
过大,过拟合。
如何选择合适的复杂度
(1)根据 使test error最小 的原则确定复杂度,有什么问题?
如果根据test error最小确定复杂度,则之后评价模型的预测结果会过于乐观。复杂度根据测试数据决定,
这样测试数据就不能很好的代表总体数据了,test error不能较好的近似generalization error, 真实误差会大于
测试误差。
(2)常见可行方法?
再添加一个“test”数据集。
根据使validation error最小,确定复杂度。
Training set 用于拟合模型,validation set 用于确定复杂度,test set 用于评价模型误差。
Week 3: Assessing performance 笔记的更多相关文章
- 《Systems Performance》阅读笔记及收获
本文共三部分: 笔记之前的废话是和书结缘的过程: Systems Performance笔记是正文,记录了读书笔记以及一些实践: 一些优化记录将之前做的一些优化归纳起来,同时也能反思做的如何,加入跟G ...
- 《Machine Learning Yearing》读书笔记
——深度学习的建模.调参思路整合. 写在前面 最近偶尔从师兄那里获取到了吴恩达教授的新书<Machine Learning Yearing>(手稿),该书主要分享了神经网络建模.训练.调节 ...
- 老李分享:《Java Performance》笔记1——性能分析基础 1
老李分享:<Java Performance>笔记1——性能分析基础 1.性能分析两种方法: (1).自顶向下: 应用开发人员通过着眼于软件栈顶层的应用,从上往下寻找性能优化的机会. ...
- ASP.NET Core 2 High Performance 目录和读书笔记
ASP.NET Core 2 High Performance 大概的翻看了一下这本书,这本C# 7 and .NET Core 2.0 High Performance内容要好很多,这里先放出对应目 ...
- 学习笔记:Analyze MySQL Performance及慢日志的开启
Table of Contents Analyze MySQL PerformanceTuningSlow queries and Slowlog Brought to you by Rick Jam ...
- 笔记 - DBSherlock: A Performance Diagnostic Tool for Transactional Databases
OLTP系统的问题很难排查和定位,这就是为什么要花那么多钱去请DBA 因为TP系统的请求很多都是毫秒级别,而且同时有大量的并发,所以由于资源,或随机的原因导致的问题,很难去定位根因 哪怕数据库系统尤其 ...
- Microsoft.SQL.Server2012.Performance.Tuning.Cookbook学习笔记(一)
一.Creating a trace or workload 注意点: In the Trace Properties dialog box, there is a checkbox option i ...
- 《Java Performance》笔记1——性能分析基础 2
4.内存使用率: 内存使用率的相关属性包括页面调度或页面交换.加锁.线程迁移中的让步式和抢占式上下文切换. 当应用运行所需的内存超过可用物理内存时,就会发生内存页面交换,系统在进行页面交换或使用虚拟内 ...
- High Performance MySQL笔记:count
在SQL中使用count()好像是非常自然的事情: SELECT COUNT(*) FROM TABLE_NAME; 有时候确实会想过,count(*)和单独的count(column_name)有什 ...
随机推荐
- solr6.6 配置自带中文分词
1.配置solrconfig.xml solr的自带中文分词包在solr-6.6.0\contrib\analysis-extras\lucene-libs下 修改solrconfig.xml增加 & ...
- [Python爬虫] 之二十四:Selenium +phantomjs 利用 pyquery抓取中广互联网数据
一.介绍 本例子用Selenium +phantomjs爬取中广互联网(http://www.tvoao.com/select.html)的资讯信息,输入给定关键字抓取资讯信息. 给定关键字:数字:融 ...
- phpunit与xdebug的使用
基本说明: 1.xdebug是程序猿在调试程序过程中使用的bug调试暴露工具 windows下安装: 1)下载php对应的dll文件,下载地址:https://xdebug.org/download. ...
- mac 777权限设置
1. cd 你的文件夹路径的上一级目录. 2. sudo chmod -R 777 你的文件夹名. 3. 输入密码. 4.成功
- C语言经典算法五个人问岁数!——————【Badboy】
有5 个人坐在一起,问第五个人多少岁?他说比第4 个人大2 岁.问第4 个人岁数.他说比第3 个人大2 岁.问第三个人,又说比第2 人大两岁.问第2 个人.说比第一个人大两岁.最后问第一个人.他说是1 ...
- Node.js abaike图片批量下载Node.js爬虫1.00版
这个与前作的差别在于地址的不规律性,需要找到下一页的地址再爬过去找. //====================================================== // abaik ...
- docker入门——简介
从这里起航 本系列有感于<第一本Docker书>,当我拿到这本书时感觉如获至宝. 为了培养自己对docker的兴趣,不断鞭策自己,我决定开始写这个系列的博客——<站在蓝鲸的背上思考& ...
- 从webstorm转vscode,来一个vscode的教程和心得总结
背景 在公司跑代码,每天卡的吐血,感觉生命都被浪费了. 再在摧残了一段时间,天天想摔电脑以后,被同事安利vscode, 那就开始搞起来 安装 这个我真的不用说了吧 插件 快捷键 shift + alt ...
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-报错0X4650,18000错误怎么办
驱动器未就绪错误,请重启驱动器 注意,即便是报这个错,仍然有可能上电成功,这样的话可以直接在TwinCAT中清除错误即可 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http: ...
- Struts2数据类型转换之批量数据转换
前面我们实现了从字符串到User对象的转换.如果表单中有多个User数据,我们可以批量转换. 我们把input.jsp修改为: <h1>使用分号隔开username password< ...