摘要:在现实任务中,我们往往有多种学习算法可供选择,甚至对同一个学习算法,当使用不同的参数配置时,也会产生不同的模型,那么,我们该如何选用哪一个学习算法,使用哪一种参数配置呢?这就是机器学习中的“模型选择”问题,理想的解决方案是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型。

泛化误差意义

以前在机器学习中一直使用经验风险(训练误差)来逼近真实风险,但事实上多数情况经验风险并不能够准确逼近真实风险。后来业界就提出了泛化误差的概念(generalization error),在机器学习中泛化误差是用来衡量一个学习机器推广未知数据的能力,即根据从样本数据中学习到的规则能够应用到新数据的能力。

训练过程中的误差,就是训练误差。训练完毕、调参完毕的模型,在新的测试集上的误差,就是测试误差。假如所有的数据来自一个整体,模型在这个整体上的误差,就是泛化误差。通常说来,测试误差的平均值或者说期望就是泛化误差。泛化误差是衡量一个模型推广能力的标准,指示泛化性能。泛化误差越小,表示模型的推广能力越强,泛化性能越优。

泛化误差分解

对测试样本,令 ​为在数据集上的标记,的真实标记,为训练集上学得模型上的预测输出。以回归任务为例,因此,算法的期望预测(在不同训练集上学得的模型对样本的结果的预测值的均值)为:

使用样本数相同的不同训练集产生的方差(variance)为:

噪声为:

期望输出与真实标记的差别称为偏差(bias),即:

为方便讨论,假定噪声期望为零,即,通过简单的多项式展开合并,可对算法的期望泛化误差进行分解:

其中考虑到噪声不依赖于,第一个加红部分为0;另外噪声期望为0,所以第二个加红部分也为0。于是:

即泛化误差=偏差+方差+噪声。

通常情况下,噪声无法人为控制,准确的说无法通过模型来消除,所以通常我们认为泛化误差受偏差和方差影响。减小泛化误差就要从偏差和方差两方面均衡考虑。

偏差、方差、噪声的含义

偏差:度量了学习算法的期望预期与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。把模型比喻成一支猎枪,预测的目标是靶心,假设射手不会手抖且视力正常,那么这支枪(模型)的能力就可以用多次射击后的中心(相当于预测值的期望,即和靶心的距离来衡量(偏离了靶心有多远)。当猎枪(模型)和子弹(样本)质量都很好时,就能得到方差和偏差都比较低的结果。但是如果猎枪是没有校准的或者目标超出有效射程,那么偏差就会更高(击中点离靶心比较远)。子弹(样本)也可能出问题,比如子弹的形状、重量等因素,导致瞄准一个点多次射击在靶上会散开一片,这就是高方差的情况。

方差:度量了同样大小的训练集的变动所导致的学习性能的变化,反映了在不同样本集上模型输出值的变异性,方差的大小反应了样本在总体数据中的代表性,或者说不同样本下模型预测的稳定性。即刻画了数据扰动所造成的的影响。比如现在要通过一些用户属性去预测其消费能力,结果有两个样本,一个样本中大多数都是高等级活跃会员,另一个则是大部分是低质量用户,两个样本预测出来的数据的差异就非常大,也就是模型在两个样本上的方差很大。如果模型在多个样本下的训练误差(经验损失)“抖动”比较厉害,则有可能是样本有问题。

噪声:表达了在当前任务上学习算法所能达到的期望泛化误差的下界(即模型学习的上限),即刻画了学习问题本身的难度。不可控的错误很难避免,这被称为不可约偏差(irreducible error),即噪声无法通过模型来消除。噪声通常是出现在“数据采集”的过程中的,且具有随机性和不可控性,比如采集用户数据的时候仪器产生的随机性偏差、或者在实验中受到其他不可控因素的干扰等。

图中红色的靶心表示测试样本的真实标记,蓝色的点表示模型在不同训练集上选出的函数的输出。第一列的两个图中,蓝色的点都比较集中,说明模型的稳定性好,也就是方差小;第一行的两个图中,蓝色点的中心都比较靠近红色靶心,说明模型的拟合能力强,也就是偏差小。所以总结如下:
low bias and low variance:又准又稳
low bias and high variance: 准但不稳
high bias and low variance:不准但稳
high bias and high variance:不准又不稳

偏差和方差的权衡

泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度共同决定的。对于给定的学习任务,为了取得好的泛化性能,则需要使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动所造成的影响小。

但一般来说,偏差与方差是有冲突的,即方差和偏差会此消彼长的现象,这称为偏差-方差窘境,如下图所示。给定学习任务,假定我们能够控制学习算法的复杂程度,则在训练不足时,学习器的拟合能力不够强,就出现欠拟合(under-fitting),训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率,如果是在分类任务中可能在训练集和测试集上的准确率都非常低(即错误率都很高);随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差逐渐主导了泛化错误率;在训练程度充足时,学习器的拟合能力已经非常强,训练数据发生的轻微扰动都会导致学习器发生显著变化,训练模型时用力过猛时就会发生“过拟合” (over-fitting),在分类任务上可能会出现训练集上准确率高,测试集上准确率低。此时训练数据自身的非全局性的特性(特异性)也被学习器学到了,导致预测值的变异性更大。所以我们需要在模型复杂度之间权衡,使偏差和方差得以均衡(trade-off),这样模型的整体误差才会最小。

如何降低偏差(bias)

  • 增加算法的复杂度,比如神经网络中的神经元个数或者层数,增加决策树中的分支和层数等。不过增加模型复杂度可能会导致方差(variance)的增加,如果有必要,需要添加正则化项来惩罚模型的复杂度(降低方差);

  • 优化输入的特征,检查特征工程中是否遗漏掉具有预测意义的特征。增加更多的特征也许能同时改善方差(variance)和偏差(bias),不过理论上来说,特征越多方差(variance)也就越大(可能又需要正则化);

  • 削弱或者去除已有的正则化约束(L1正则化,L2正则化,dropout等),不过有增加方差的风险;

  • 调整模型结构,比如神经网络的结构;

如何降低方差(variance)

  • 扩大训练样本,样本太小(代表性不够)是方差大的首要原因,增加样本是减少方差最简单有效的方式;

  • 增加正则化约束(比如L1正则化,L2正则化,dropout等),正则化降低方差的同时也可能增大偏差;

  • 筛选输入的特征(feature selection),这样输入的特征变少后,方差也会减小;

  • 降低算法模型复杂度,比如对决策树的剪枝、减少神经网络的层数等;

  • 优化模型的结构有时候也会有用

通常来说。

  • 线性或者参数化的算法一般具有高偏差(bias)低方差(variance)的特点,比如线性回归,线性判别分析(Linear Discriminant Analysis),Logistic回归等线性模型;

  • 非线性或者非参数化的算法则常表现出低偏差(bias)高方差(variance),比如决策树,KNN,SVM;

参考文献:

《机器学习》  周志华

《统计学习方法》  李航

如何理解算法中的偏差、方差和噪声?

机器学习系列(三)——误差(error),偏差(bias),方差(variance)

名词解析之泛化误差

训练误差、测试误差、泛化误差的区别

机器学习:算法中的泛化误差、偏差、方差、噪声的理解(超详细)相关推荐

  1. 机器学习算法中的概率方法

    雷锋网(公众号:雷锋网) AI 科技评论按,本文作者张皓,目前为南京大学计算机系机器学习与数据挖掘所(LAMDA)硕士生,研究方向为计算机视觉和机器学习,特别是视觉识别和深度学习. 个人主页:http ...

  2. 机器学习算法_机器学习算法中分类知识总结!

    ↑↑↑关注后"星标"Datawhale每日干货 & 每月组队学习,不错过Datawhale干货 译者:张峰,Datawhale成员 本文将介绍机器学习算法中非常重要的知识- ...

  3. 【机器学习基础】机器学习算法中分类知识总结!

    译者:张峰,Datawhale成员 本文将介绍机器学习算法中非常重要的知识-分类(classification),即找一个函数判断输入数据所属的类别,可以是二类别问题(是/不是),也可以是多类别问题( ...

  4. 机器学习算法中的准确率、精确率、召回率和F值

    机器学习算法中的准确率.精确率.召回率和F值:https://www.jianshu.com/p/d400a821ef3d

  5. ML:机器学习算法中—因子模型(多变量)、时序模型/时间序列模型(主要以单变量)算法对比的简介、带有时序性的因子模型概述、案例应用之详细攻略

    ML:机器学习算法中-因子模型(多变量).时序模型/时间序列模型(主要以单变量)算法对比的简介.带有时序性的因子模型概述.案例应用之详细攻略 目录 因子模型和时序模型/时间序列模型算法的简介 1.因子 ...

  6. 偏差-方差权衡的理解

    1.概念: Bias:描述的是预测值与真实值之间的差距.用来衡量模型对特定样本实例预测的一致性(或说变化). Variance:描述的是预测值的变化范围,离散程度,也就是离其真实值的距离.用来从总体上 ...

  7. 一文讲解机器学习算法中的共线性问题

    多重共线性是使用线性回归算法时经常要面对的一个问题.在其他算法中,例如决策树和贝叶斯,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能:后者干脆假定变量之间是 ...

  8. python 回归去掉共线性_一文讲解机器学习算法中的共线性问题

    多重共线性是使用线性回归算法时经常要面对的一个问题.在其他算法中,例如决策树和贝叶斯,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能:后者干脆假定变量之间是 ...

  9. 机器学习算法 拟合曲线_制定学习曲线以检测机器学习算法中的错误

    机器学习算法 拟合曲线 机器学习 (Machine Learning) The learning curve is very useful to determine how to improve th ...

最新文章

  1. linux操作普通文件夹,Linux学习--2.文件管理的基本命令
  2. Python自动化之模板继承和cookie
  3. Eclipse安装反编译插件
  4. java中如何创建子包,父包类可以从java中的子包类访问?
  5. [云炬创业学笔记]第二章决定成为创业者测试12
  6. Linux ReviewBoard安装与配置
  7. centos7 mysql还原dmp_Linux平台下RMAN异机恢复总结
  8. Vue 项目 Element-ui CDN引入后体积不变或变大的问题
  9. 查找包含具有指定名称的列的所有表 - MS SQL Server
  10. 详解电脑蓝屏怎么回事
  11. WPF MVVM 网易云音乐
  12. js/jQuery中的宽高
  13. HTML实现W3school导航栏(附带重置样式表reset.css)
  14. 8种Python文本处理工具集
  15. python画布上显示多张图片_python实现在一个画布上画多个子图
  16. 【上海房价预测】代码实现——利用BP神经网络进行上海二手房价预测
  17. uni-app h5打包发版到测试和生产环境具体步骤
  18. dockerfile文件中copy上下文目录
  19. 睿智的目标检测——YoloV7-Tiny-OBB旋转目标检测算法部署
  20. js报错- cannot set property xxx of undefined

热门文章

  1. 获取url地址的方法
  2. linux环境 彻底卸载jenkins方法
  3. python爬取今日头条街拍美图
  4. 怎样知道自己身体缺少哪些维生素?
  5. 命令更新之sum2docx:将描述性统计输出至Word文档 ——转自李春涛老师团队 爬虫俱乐部 微信公众号
  6. 血液与病毒:新冠病毒感染概率与血型有关吗?
  7. 蓝桥杯.跳蚱蜢(BFS)
  8. 什么是Srt字幕,怎么添加srt字幕
  9. 在Modelsim中添加Vivado仿真库
  10. 虚拟机Linux联网