首页 > 其他分享 >泛化误差的理解

泛化误差的理解

时间:2022-10-14 18:01:01浏览次数:39  
标签:误差 偏差 泛化 方差 模型 理解 拟合 数据

最终目的是学习一个模型使其更加接近这个真实模型。

 

方差的含义:方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。

偏差的含义:偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。

噪声的含义:噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。

 

*偏差度量的是单个模型的学习能力,而方差度量的是同一个模型在不同数据集上的稳定性。

泛化误差为偏差、方差与噪声之和。

一般来说,偏差与方差是有冲突的,这称为偏差-方差窘境(bias-variance dilemma):

1、训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率

2、随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差逐渐主导了泛化错误率

3、在训练程度充足后,学习器的拟合能力已经非常强,训练数据发生的轻微扰动都会导致学习器发生显著变化,若训练数据自身的、非全局的特性被学习器学到了,则将发生过拟合

 

欠拟合:模型不能适配训练样本,有一个很大的偏差。

举个例子:我们可能有本质上是多项式的连续非线性数据,但模型只能表示线性关系。在此情况下,我们向模型提供多少数据不重要,因为模型根本无法表示数据的基本关系,模型不能适配训练样本,有一个很大的偏差,因此我们需要更复杂的模型。那么,是不是模型越复杂拟合程度越高越好呢?也不是,因为还有方差。

过拟合:模型很好的适配训练样本,但在测试集上表现很糟,有一个很大的方差。

方差就是指模型过于拟合训练数据,以至于没办法把模型的结果泛化。而泛化正是机器学习要解决的问题,如果一个模型只能对一组特定的数据有效,换了数据就无效,我们就说这个模型过拟合。这就是模型很好的适配训练样本,但在测试集上表现很糟,有一个很大的方差。

 

偏差、方差与bagging、boosting的关系

Bagging算法是对训练样本进行采样,产生出若干不同的子集,再从每个数据子集中训练出一个分类器,取这些分类器的平均,所以是降低模型的方差(variance)。Bagging算法和Random Forest这种并行算法都有这个效果。

Boosting则是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行权重调整,所以随着迭代不断进行,误差会越来越小,所以模型的偏差(bias)会不断降低。

 

如何解决偏差、方差问题?

整体思路:首先,要知道偏差和方差是无法完全避免的,只能尽量减少其影响。
(1)在避免偏差时,需尽量选择正确的模型,一个非线性问题而我们一直用线性模型去解决,那无论如何,高偏差是无法避免的。
(2)有了正确的模型,我们还要慎重选择数据集的大小,通常数据集越大越好,但大到数据集已经对整体所有数据有了一定的代表性后,再多的数据已经不能提升模型了,反而会带来计算量的增加。而训练数据太小一定是不好的,这会带来过拟合,模型复杂度太高,方差很大,不同数据集训练出来的模型变化非常大。
(3)最后,要选择合适的模型复杂度,复杂度高的模型通常对训练数据有很好的拟合能力。

 

针对偏差和方差的思路:
偏差:实际上也可以称为避免欠拟合。
1、寻找更好的特征 -- 具有代表性。
2、用更多的特征 -- 增大输入向量的维度。(增加模型复杂度)
方差:避免过拟合
1、增大数据集合 -- 使用更多的数据,减少数据扰动所造成的影响
2、减少数据特征 -- 减少数据维度,减少模型复杂度
3、正则化方法
4、交叉验证法

 

摘自知乎:https://www.zhihu.com/search?type=content&q=%E5%81%8F%E5%B7%AE

 

标签:误差,偏差,泛化,方差,模型,理解,拟合,数据
From: https://www.cnblogs.com/AKsnoopy/p/16792482.html

相关文章

  • 看一遍就理解:IO模型详解
    前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll......
  • 看一遍就理解:动态规划详解
    前言我们刷leetcode的时候,经常会遇到动态规划类型题目。动态规划问题非常非常经典,也很有技巧性,一般大厂都非常喜欢问。今天跟大家一起来学习动态规划的套路,文章如果有不正确......
  • 看一遍就理解:MVCC原理详解
    前言MVCC实现原理是一道非常高频的面试题,最近技术讨论群的小伙伴一直在讨论,趁着国庆节有空,我们一起来聊聊。1.相关数据库知识点回顾1.1什么是数据库事务,为什么要有事务......
  • 继承与多态4 在实践中理解把握复杂的知识
    总结(1):子类父类拥有同名的方法时……当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是......
  • 深入理解css 笔记(4)
    处理元素高度的方式跟处理宽度不一样。之前对border-box的修改依然适用于高度。而且很有用,但是通常最好避免给元素指定明确的高度。当明确设置一个元素的高度时,内容可能......
  • SpringBoot深入理解
    当使用打包时,会下载org-springframework-boot-loader的jar,并且不会放在lib存放的第三方jar包文件中,该jar包中有个JarLauncher.class文件中设置了jar包运行时的入口和打包后......
  • 认识理解并运用FPGA中的存储器
       需要用一个存储器将这些数据先存储起来,使用的时候读取存储器就可以了。这个存储器只需要支持读功能就可以了。ROM(readonlymemory)对应CMOS摄像头初始化的应用D......
  • <二>理解inline内联函数
    如下代码usingnamespacestd;intsum(inta,intb){returna+b; }intmain(){ inta=1;intb=2;intret=sum(a,b);return0;}上面sum函数调用,会涉及到参......
  • 行人重识别的简单理解
    对于行人重识别而言,可以设计的任务是:Multi-tasklearning1.Identification+VerificationLossVerificationLoss:Aretheythesameperson?给网络2个输入,问网络说......
  • 【ES】199-深入理解es6块级作用域的使用
    这篇文章主要介绍了深入理解es6块级作用域的使用,文中通过示例代码介绍的非常详细,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎......