# ML学习小笔记—Where does the error come from?
关于本课程的相关资料http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html
错误来自哪里?
error due to "bias" and error due to "variance"
当我们要求无穷多个数的平均值或者方差时,我们选取了N个样本出现计算。很显然我们得到的结果是存在一定误差的。当我们选区的样本的值越多的时候,我们得到的结果也就越准确。类比于训练模型,我们所选择的训练数据是有限的,很多时候我们希望他们效果可靠,数量可观。但是往往并非如此。例如下图:
我们所期望的模型为靶心的f。但是在我们定义的某个模型下,训练数据所推出的效果集中于f非。这两者的距离成为Bias,即偏差。训练集的离散程度为Variance,即方差,这样就导致了错误的出现。
在上图中,左上角的模型为最好的模型。
当我们的模型越简单,所得到的Variance越低,但是他的Bias相对越差。
当模型越复杂的时候,得到的Bias相对较好,但是Variance变高了。
原因在于,较简单的模型表达的范围较少,可无法包过最佳的模型,而较复杂的模型所表达的范围较广,能够包过最佳的模型。
所以会存在过度拟合和欠拟合的情况。当我们训练模型的时候,要根据实际的情况去调整自己的模型。
我们要清楚Bias和variance哪个比较大:
- 如果你的模型不适合训练样例,得出来的模型有较大差异,那么你就有很大的Bias
- 如果您可以拟合训练数据,但测试数据存在较大误差,那么您可能会有很大的Variance
当Bias过大时候:
- 增加更多的feature
- 选择更复杂的模型
当Variance过大时候:
- 增加更多的训练数据
- 使用Regularization(这一点在第一章被我略过,见下图)
如何选择适合的模型?
There is usually a trade-off between bias and variance.
Select a model that balances two kinds of error to minimize total error
我们通过Training Set得出的模型在Testing Set中返回的error最低,但这并不意味着在真实的Testing Set得到的结果最优。
原因在于我们手中的Testing Set并不能很好的代表真实的情况,他的Bias与现实的情况还是存在着距离的。所以得出来的error并不能完美的代表现实
所以我们选择模型应该这样做:
将Training Set分成两组,然后一组用来选择model,选出来最优的model在我们手中Testing Set得到的error较能反映现实的情况:
或者下图中的交叉验证:
写完博客才更好的理解了整个思路。
# ML学习小笔记—Where does the error come from?的更多相关文章
- # ML学习小笔记—Gradien Descent
关于本课程的相关资料http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html 根据前面所为,当我们得到Loss方程的时候,我们希望求得最优的Loss方 ...
- # ML学习小笔记—Classification
关于本课程的相关资料http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html 通过模型可以分类输入,此时根据分类结果的正确与否会有一个Loss函数.找 ...
- # ML学习小笔记—Linear Regression
Regression Output a scalar Model:a set of function 以Linear model为例 y = b+w * $x_cp$ parameters:b,W f ...
- 深度学习课程笔记(六)Error
深度学习课程笔记(六)Error Variance and Bias: 本文主要是讲解方差和偏差: error 主要来自于这两个方面.有可能是: 高方差,低偏差: 高偏差,低方差: 高方差,高偏差: ...
- English - 英语学习小笔记
1.It is...to do sth:做某事是.... 解析:It 是形式主语,后面一半接形容词做表语,to do sth是不定式短语作真正主语. 2.make do和make doing是两种表达 ...
- WEB学习小笔记
环境基于WIN10.IDEA最新版.JDK1.8.TOMCAT9 下面说的有错的地方希望指出,谢谢. STRUT2 1.在maven下的时候系统会系统创建一个叫做log4j的配置文件,但是到了这个版本 ...
- SQL 学习小笔记
1.FOUND_ROWS() 题目: ,; 在上边sql中使用什么选项可以使 SELECT FOUND_ROWS()忽略LIMIT子句,返回总数? *答案* : SQL_CALC_FOUND_ROWS ...
- java学习小笔记(三.socket通信)【转】
三,socket通信1.http://blog.csdn.net/kongxx/article/details/7288896这个人写的关于socket通信不错,循序渐进式的讲解,用代码示例说明,运用 ...
- MongoDB 学习小笔记
1.配置:mongod --dbpath=D:\MongoDB\data mongo2.基本的增删查改 find() update()-- 整体更新,局部更新. 修改器: $inc db.person ...
随机推荐
- 14、SpringBoot------定制错误返回内容json格式
开发工具:STS 前言: 在前后端分离的项目中,当前端向后端请求资源失败时,想知道具体的错误原因,给用户予以提示. 但是,在springboot中返回内容是固定的.并不适合我们前端进行分析. 所以,就 ...
- Java 单词 day seven
Constructor Constructor Constructor Constructor Constructor Constructor Constructor Constructor Cons ...
- Java分享笔记:File类中常用方法的介绍
java.io包下的File类用于描述和创建一个文件或文件夹对象,只能对文件或文件夹做一些简单操作,不能修改文件的内容,功能比较有限.下面是对于File类中常用方法的程序演示. [1] 演示程序一 p ...
- 如果理解&&运算符和各类数值的布尔值
&&(且运算符):表示二者都为true才为true: 短路原则:例如 : a && b; 当a为true时,程序无论如何都会走b,而不管b为true或者false ...
- 生产者消费者-Java代码实现
import java.util.LinkedList; class Storage{ private static final int MAX = 100; LinkedList<Object ...
- php 利用composer引用第三方类库构建项目
经常看到各种开源库推荐使用 composer 安装代码,却总是看不懂怎么用composer, 这几天静下心来学习了composer的使用,发现这可真是一个好东西,先贴上一个讲的很棒的视频教程: PHP ...
- python之doctest的用法
doctest是python自带的一个模块,你可以把它叫做“文档测试”(doctest)模块. doctest的使用有两种方式:一个是嵌入到python源中.另一个是放到一个独立文件. doctest ...
- Zookeeper+Kafka的单节点配置
Zookeeper+Kafka的单节点配置 环境描述:Ubuntu16.04 server系统,在系统上搭建Java环境,jdk的版本为1.8或更高,我的服务器IP地址为192.168.0.106. ...
- pytorch中如何使用预训练词向量
不涉及具体代码,只是记录一下自己的疑惑. 我们知道对于在pytorch中,我们通过构建一个词向量矩阵对象.这个时候对象矩阵是随机初始化的,然后我们的输入是单词的数值表达,也就是一些索引.那么我们会根据 ...
- 笔记-scrapy-cookie
笔记-scrapy-cookie传递 1. scrapy cookie传递 1.1. 开始 与cookie相关的设置参数有两个: COOKIES_ENABLED 决定是否使用cooki ...