深度学习的实用层面 —— 1.2 偏差/方差
假设有一个数据集,如果给这个数据集拟合一条直线,可能得到一份逻辑回归拟合,但它并不能很好地拟合该数据集,这就是偏差高的情况,我们称为欠拟合。
相反地,如果我们拟合一个非常复杂的分类器,比如深度神经网络或含有隐藏单元的神经网络,可能就非常适用于这个数据集,但是这看起来也不是一种很好的拟合方式,分类器方差较高,数据过度拟合。
在两者之间,可能还有一些像图中这样的,复杂度适中,数据拟合适度的分类器,这个数据拟合看起来更加合理,我们称之为适度拟合,是介于过拟合和欠拟合中间的一类。
在这样一个只有x1x1x1和x2x2x2两个特征的二维数据集中,我们可以绘制数据,将偏差和方差可视化,在多维空间数据中,绘制数据和可视化分隔边界无法实现,但我们可以通过几个指标来研究偏差和方差。
我们沿用猫咪图片分类这个例子,理解偏差和方差的两个关键数据是训练集误差和验证集误差。为方便论证,假设我们可以辨别图片中的小猫,我们用肉眼识别几乎是不会出错的,假定训练集错误率是1%。为方便论证,假设验证集错误率是11%,可以看出训练集设置得非常好,而验证集设置相对较差,我们可能过度拟合了训练集。某种程度上,验证集并没有充分利用交叉验证集的作用。像这种情况,我们称之为高方差。通过查看训练集误差和验证集误差,我们便可以诊断算法是否具有高方差,也就是说衡量训练集和验证集误差得出不同结论。
假设训练集错误率为15%,验证集错误率是16%,假设该案例中人的错误率几乎为0%,人们浏览这些图片,分辨出是不是猫,算法并没有在训练集中得到很好训练,如果训练数据的拟合度不高,就是数据欠拟合,就可以说这种算法偏差比较高。相反,它对于验证集产生的结果却是合理的,验证集中的错误率只比训练集的多了1%,所以这种算法偏差高,因为它甚至不能拟合训练集。
再举一个例子,训练集的错误率是15%,偏差相当高,但是验证集的评估结果更糟糕,错误率达到30%,这种情况下,会认为这种算法偏差高,因为它在训练集上结果不理想,方差也很高,这是方差和偏差都很糟糕的情况。
最后再看一个例子,训练集的错误率是5%,验证集的错误率是1%,猫咪分类器只有1%的错误率,偏差和方差都很低。
有一点先简单提一下,这些分析都是基于假设预测的,假设人眼辨别的错误率接近0%,一般来说,最优误差也被称为贝叶斯误差,所以最优误差接近0%。如果最优误差或贝叶斯误差非常高,比如15%,看看这个分类器,15%的错误率对于训练集来说也是非常合理的,偏差不高,方差也非常低。
当所有分类器都不适用时,如何分析偏差和方差呢?比如,图片很模糊,即使是人眼或者没有系统可以准确无误地识别图片,这种情况下,最优误差会更高,那么分析过程就要做些改变了。
以上分析的前提都是假设基本误差很小,训练集和验证集数据来自相同分布,如果没有这些假设作为前提,分析过程会更加复杂。
我们讲了高偏差和高方差的情况,应该对优质分类器有了一定的认识,偏差和方差都高是什么样子呢?这种情况对于两种衡量标准来说都是非常糟糕的。
我们之前讲过,这样的分类器会产生高偏差,因为它的数据拟合低,像这种接近线性的分类器,数据拟合度低。但如果我们稍微改变一下分类器,它会过度拟合部分数据,如图所示画出的分类器具有高偏差和高方差。偏差高是因为它几乎是一条线性分类器,并未拟合数据。
这种二次曲线能够很好地拟合数据,这种曲线中间灵活性非常高,却过度拟合了两个样本。这类分类器偏差很高,因为它几乎是线性的,而采用曲线函数或二次元函数会产生高方差,因为它曲线灵活性太高,以致拟合了这两个错误样本和中间这些活跃数据,这看起来有点不自然,从两个维度上看都不太自然。但对于高维数据,有些数据区域偏差高,有些数据区域方差高,所以在高维数据中采用这种分类器看起来就不会这么牵强了。
深度学习的实用层面 —— 1.2 偏差/方差相关推荐
- 吴恩达深度学习笔记5-Course2-Week1【深度学习的实用层面】
改善深层神经网络:超参数调试.正则化以及优化 深度学习的实用层面 一.训练.验证.测试集 样本数据分成以下三个部分: 训练集(train set): 用于对模型进行训练. 验证集(hold-out c ...
- 3.深度学习的实用层面
第一周:深度学习的实用层面 项目进展得一个关键性得因素就是划分高质量得训练集,验证集,测试集.这有助于提高循环迭代得效率.验证集也称为development set 也称为dev set. 验证集主要 ...
- 吴恩达【优化深度神经网络】笔记01——深度学习的实用层面
文章目录 引言 一.训练集/验证集/测试集(Train/Dev/Test sets) 1. 数据集选择 2. 补充:交叉验证(cross validation) 二.偏差和方差(Bias/Varian ...
- 吴恩达《优化深度神经网络》精炼笔记(1)-- 深度学习的实用层面
AI有道 不可错过的AI技术公众号 关注 吴恩达的深度学习专项课程的第一门课<神经网络与深度学习>的所有精炼笔记我已经整理完毕.迷路的小伙伴请见文章末尾的推荐阅读: 在接下来的几次笔记中, ...
- Coursera吴恩达《优化深度神经网络》课程笔记(1)-- 深度学习的实用层面
红色石头的个人网站:redstonewill.com Andrew Ng的深度学习专项课程的第一门课<Neural Networks and Deep Learning>的5份笔记我已经整 ...
- 深度学习的实用层面 —— 1.3 机器学习基础
初始化模型之后,首先要知道算法的偏差高不高,如果偏差较高,试着评估训练集或者训练数据的性能,如果偏差的确很高,甚至无法拟合训练集,那么你要做的就是选择一个新网络,比如含有更多隐层或者隐藏单元的网络,或 ...
- 深度学习的实用层面 —— 1.1 训练/开发/测试集
在配置训练.验证和测试数据集的过程中做出正确决策会在很大程度上帮助大家创建高效的神经网络. 在训练神经网络时,我们需要做出很多决策,例如神经网络分多少层,每层含有多少个隐藏单元,学习速率是多少,各层采 ...
- 吴恩达深度学习笔记 course 2 1.1~1.14 深度学习的实用层面
1.1 Train/dev/test sets 在构建一个神经网络的时候我们往往需要设计很多参数,如:layers,learning rates ,acivation functions,hidden ...
- 吴恩达老师深度学习视频课笔记:深度学习的实用层面
训练.验证和测试数据集(training.development and test sets):训练神经网络时,我们需要作出很多决策,如神经网络分多少层(layers).每层含有多少个 ...
最新文章
- “cannot resolve symbol R” in Android Studio
- Android移动开发之【Android实战项目】DAY10-App端耗流量场景问题及减少消耗办法
- iOS 11和xcode9
- JCheckBox用法
- PHP fgets按行读取字符串和explode分割字符串为数组
- 关于ApplicationContextAware使用深入理解
- php 瓶颈,追踪php代码性能瓶颈
- 物化视图(materialized view) 实现数据迁移、数据定时同步
- 计算方法 matlab,计算方法及其MATLAB实现
- 美团Robust热修复工具使用记录
- 在火狐浏览器上安装Tampermonkey和Greasy Fork和使用iciba划词翻译
- 【Java常见面试题】JVM篇
- 数据库设计需要注意什么?
- php 输入出生年月日计算年纪,PHP实现根据出生年月日计算年龄的功能(代码示例)...
- 流程设计建模方法:流程的需求梳理之流程级别梳理
- Python3输出格式化时间yyyy-mm-dd HH:MM:SS
- 计算机硬件未来发展前景,计算机硬件发展现状
- BAT面试经验分享(机器学习算法岗)
- 【Gateway】服务网关--Gateway
- 骑士旅行问题的试探性算法研究