机器学习高方差和高偏差问题

标签: 机器学习
9人阅读 评论(0) 收藏 举报
分类:

在讲模型高方差和高偏差问题前,先聊聊数据集分配和模型选择。为了使得模型具有更好的泛化能力,我们在数据集分配问题上采用了6:2:2的分配原则,60%作为训练集,20%作为交叉验证集,20%作为测试集。当选择模型时用训练集训练得到模型的一组权重,将这组权重带入到模型中,并用交叉验证集求出损失值,选取损失值最小的那一个模型,最后就可用从未和模型拟合过的测试集计算学习算法误差。

接下来我们一起探讨一下模型的高偏差和高方差问题。

如上图是吴恩达课程中的一组图片,第一幅图是模型出现了高偏差(欠拟合),第二幅图是最佳的模型,第三幅图模型出现了高方差(过拟合),机器学中的欠拟合和过拟合对模型的精度都没有帮助,因此归纳一下可以从一下几个方面解决过拟合和欠拟合问题:

当模型出现高偏差时:

  • 增加特征种类

  • 增加多项式的次数

  • 降低lamda值(正则化项的系数)

当模型出现高方差时:

  • 增加数据集

  • 剔除一部分特征(dropout)

  • 增加lamda值(正则化项的系数)


当了解了高偏差和高方差的含义以及解决方式,接下来如何判断模型处于高方差还是处于高偏差,以及这两种情况能有效的指导更好的改善模型,这就需要学习曲线的帮助。
这里写图片描述

从上述这幅图中可以看到,横坐标是多项式的次数,纵坐标是误差,可以看出粉红色线为训练误差随着多项式次数的增加越来越小,大红色线为交叉验证集误差曲线,类似于二次函数曲线,在曲线图左边,训练集误差和验证集误差均很大,说明训练集和验证集均拟合的不是很佳,因此处于欠拟合状态即(高偏差),在最右边,训练集拟合的很好,但是验证集误差很大,说明模型的泛化能力很差,只认识看到过的数据集,不认识没看到的数据集说明处于模型处于高方差问题。因此通过该条曲线可以大概选择出最佳的多项式次数。


在上述解决办法中提到了修改lamda值可以解决高偏差高方差问题,下图即是lamda值和两者之间的关系,

这里写图片描述

在实际的cost function函数中是没有正则化项,但是为了防止过拟合而加入了正则化项,目的是降低多项式中的权重(见以下两个公式),以使得模型变得简单,
这里写图片描述
这里写图片描述

因此对于lamda越大针对训练集拟合的越差因此训练集误差会上升,而验证集一开始下降后来上升,lamda越大会使得模型变得简单容易出现欠拟合,lamda越小会使得模型出现过拟合,因此对于高偏差可以降低lamda值使模型变得复杂,对于高方差可以增加lamda值使模型每一项权重降低从而变得简单。


最后一组曲线是数据集的大小对高偏差和高方差的影响:
这里写图片描述

随着数据集的增加,模型的拟合越来越困难,因此训练集误差会有所上升,而对于验证集,随着数据的增加,模型的泛化能力越来越强,验证集误差会有所下降。但是验证集误差值不会低于训练集,因为训练集是模型能见到的数据,而验证集对模型来说是新数据。

这里写图片描述

对于高偏差问题,说明模型存在欠拟合,当数据集增加的时候训练集误差一定会上升,因为模型欠拟合,数据集增多,模型还是拟合很困难,但是在改善,因此验证集会有所下降,但是最后的误差都会很大,而且训练集误差和验证集误差会很相近并且数值很大,因此对于高偏差增加数据集会徒劳无用。

这里写图片描述

针对高方差问题,模型对于训练集拟合的很好,但是泛化能力太差,因此验证集和训练集的误差值会增加,但是随着数据集的增加,模型越来越困难拟合每一个点,提高一定的泛化能力,最后会使得验证集和训练集误差慢慢接近,因此针对高方差问题可以增加数据集提高模型泛化能力。


因此通过学习曲线可以有效指导我们正确改善模型性能的方向,大大节约时间。

查看评论

Python 数据挖掘与机器学习基础

Python 数据挖掘与机器学习基础
  • 2017年12月04日 22:35

高方差与高偏差学习笔记

Error = Bias + Variance。这里的Error大概可以理解为模型的预测错误率,是有两部分组成的,一部分是由于模型太简单而带来的估计不准确的部分(Bias),另一部分是由于模型太复杂而...
  • philosophyatmath
  • philosophyatmath
  • 2016-03-26 22:02:07
  • 3928

高方差与高偏差

1.数据欠拟合会出现高偏差问题,比如数据的趋势是二次函数,用一次函数取拟合会出现高的偏差。 2.数据过度的拟合会出现高方差问题,比如用10个数据特征去拟合9个数据会出现高的方差。 3.怎么处理高偏差和...
  • zhf1234abc
  • zhf1234abc
  • 2015-06-28 15:16:13
  • 2344

斯坦福机器学习第六周(模型选择、高偏差、高方差、学习曲线)

这篇文章主要讲解的是如何来对训练出来的代价函数进行评估,一起怎么处理 所遇到的各种问题。0.引例假如你已经训练好了一个代价函数来预测房价,然而你却发现用来预测新数据集时,其效果异常的糟糕。那我们接下...
  • The_lastest
  • The_lastest
  • 2017-10-26 19:31:42
  • 399

高偏差、高方差、低精确率与低召回率、混淆矩阵

本文是个人理解 1.高偏差(high bias)与方差(high variance)     偏差,可以理解为样本与模型预测结果的差距,可以使用平方差计算     方差是样本y值与模型期望的差的平方和...
  • leiting_imecas
  • leiting_imecas
  • 2017-01-05 17:27:36
  • 581

什么是高/低方差、高/低偏差、(推荐阅读)

概念偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据集。 (Ps:假设靶心是最适合给定数据的模型,离靶心越远,我们的预测就越糟糕)方差:描述的是预测值的变化范围,...
  • u010626937
  • u010626937
  • 2017-07-05 14:26:12
  • 1151

吴恩达机器学习笔记(五)

吴恩达机器学习笔记(五)标签: 机器学习吴恩达机器学习笔记五 评估假设Evaluating a Hypothesis 1测试集误差计算方法 2训练集交叉验证集与测试集TrainValidationTe...
  • allen_li123
  • allen_li123
  • 2018-01-22 00:18:19
  • 80

朴素贝叶斯是高偏差低方差

转自http://weibo.com/p/1001603846376151733715 为什么说朴素贝叶斯是高偏差低方差? 2015年5月25日 13:16 阅读 200 ...
  • wangweiboss
  • wangweiboss
  • 2015-05-28 10:00:04
  • 659

方差和偏差 与 过拟合和欠拟合

Variance and Bias
  • guotong1988
  • guotong1988
  • 2016-01-08 18:02:30
  • 3246

【deeplearning.ai】第二门课:提升深层神经网络——偏差和方差

吴恩达deeplearning.ai课程第二门:提升深层神经网络的笔记。水平有限,欢迎提出错误、交流讨论~ 一、偏差和方差 通过训练集和验证集来看偏差和方差。 偏差可以理解为训练集的表现,方差可以理解...
  • u014157632
  • u014157632
  • 2017-09-23 16:42:32
  • 216
    个人资料
    持之以恒
    等级:
    访问量: 3237
    积分: 405
    排名: 18万+
    最新评论