当前位置: 首页 > news >正文

机器学习(二十):偏差和方差问题

一、判断偏差和方差

以多项式回归为例,红点为训练集数据,绿点为交叉验证数据。

下图的模型,训练集误差大,交叉验证集误差大,这代表偏差很大

下图的模型,训练集误差小,交叉验证集误差小,这代表模型合适

下图的模型,训练集误差小,交叉验证集误差大,这代表方差很大。

下图是随着多项式的次数增加,训练集误差和交叉验证集误差的走势。如果没有正则项,随着多项式的次数增加,训练集误差变小,交叉验证集误差先降低后升高。

二、正则项的偏差和方差

在已经选择了多项式次数的前提下,正则化参数\lambda的选择对训练集和交叉验证集误差的影响如下:

如果正则化参数很大,训练集误差很大,偏差很大

如果正则化参数合适,训练集和交叉验证集误差会很小

如果正则化参数很小,相当于没有使用正则化,容易过拟合,,训练集误差小,交叉验证集误差大,方差会很大

三、建立性能基准

以语音识别为例,如果使用模型进行语音转文字,错误率有10.7%。单看这个数字,似乎错误率很高。但是如果很多语音有嘈音,导致人类也无法听清这些语音的文字,人类进行语音转文字时的错误率有10.3%。以人类水平作为基准,10.7%的错误率并不高,这个模型很合适。

建立性能基准的方法:

  • 根据人类能做到的水平
  • 根据竞争算法能做到的水平
  • 根据以往经验推测

四、学习曲线

学习曲线:随着训练集规模的增大,训练集和交叉验证集的误差曲线

学习曲线的趋势:随着训练集规模越来越大,训练集误差增加,交叉验证集误差减小

例子:给定一个二次回归模型,当有一个、两个、三个数据点,训练集误差为0或者非常非常小,但是当数据点增加,模型很难匹配上所有的训练集数据点,因此训练集误差增加。

4.1 高偏差场景

在高偏差的情况下,随着训练集规模提高,训练集误差增加,交叉验证集误差减小,越到后面,训练集误差和交叉验证集误差曲线趋于平缓。即使继续增加训练集数据,训练集误差和交叉验证集误差变化不大,且高于性能基准线。

以线性回归模型为例,不管训练集数据点有多少,线性回归模型都无法匹配上训练集,因此继续增加训练集数据点,也无法减小交叉验证集误差。

4.2 高方差场景

在高方差的情况下,随着训练集规模提高,训练集误差增加,交叉验证集误差减小,如果继续增加训练集数据,交叉验证集误差继续减小,可以到达性能基准线。

以四次多项式回归模型为例,当训练集的数据点少时,容易发生过拟合,当增加训练集数据点,可以减少过拟合。

五、解决高偏差和高方差问题

以下手段,分别可以解决高偏差和高方差问题

  • 获取更多的训练数据——解决高方差问题
  • 尝试减少特征——解决高方差问题
  • 尝试其他的特征——解决高偏差问题
  • 尝试增加多项式——解决高偏差问题
  • 尝试减小正则化参数\lambda——解决高偏差问题
  • 尝试增大正则化参数\lambda——解决高方差问题

六、神经网络的偏差和方差

在神经网络中,如何处理高偏差和高方差问题:

1、当训练集误差大,说明偏差大,需要建立更庞大的神经网络(建立更多的隐藏层、神经元),来减小偏差

2、当训练到训练集误差小,但交叉验证集误差大,说明方差大,需要获取更多的数据,然后重新训练模型,直至满足偏差和方差很小。

建立庞大的神经网络消耗性能,需要更强的计算机能力。

与此同时,庞大的神经网络需要引入正则项,避免过拟合。

TensorFlow的代码实现:

蓝框中的0.01指的是\lambda

                                                   

学习来源:吴恩达机器学习,12.1-12.6节 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Docker Desktop安装
  • 汽车免拆诊断案例 | 2014 款上汽名爵 GT 车发动机无法起动
  • PACS-医学影像信息管理系统,全影像科室PACS源码,内置包括MPR、CMPR、VR等三维处理功能
  • vue2获取视频时长
  • Docker-Compose实现MySQL之主从复制
  • 理想化相机模型的相机内参
  • 医学图像分类
  • 金融数据的pandas模块应用
  • iview中Checkbox组件设置不勾选是0,勾选是1
  • Mac安装Hoomebrew与升级Python版本
  • 高可用高并发常见问题以及答案
  • easyExcel
  • Java | Leetcode Java题解之第260题只出现一次的数字III
  • ELK日志收集之多文件提取文件名和日志时间
  • vue侦听器(Watch)精彩案例剖析二
  • 2018一半小结一波
  • avalon2.2的VM生成过程
  • extjs4学习之配置
  • Java反射-动态类加载和重新加载
  • js正则,这点儿就够用了
  • PAT A1050
  • RxJS: 简单入门
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 从0到1:PostCSS 插件开发最佳实践
  • 动态魔术使用DBMS_SQL
  • 关于 Cirru Editor 存储格式
  • 技术胖1-4季视频复习— (看视频笔记)
  • 使用 QuickBI 搭建酷炫可视化分析
  • 使用putty远程连接linux
  • 微信公众号开发小记——5.python微信红包
  • 一道面试题引发的“血案”
  • 与 ConTeXt MkIV 官方文档的接驳
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #{} 和 ${}区别
  • #微信小程序:微信小程序常见的配置传值
  • (152)时序收敛--->(02)时序收敛二
  • (2015)JS ES6 必知的十个 特性
  • (C语言)fgets与fputs函数详解
  • (附源码)php新闻发布平台 毕业设计 141646
  • (小白学Java)Java简介和基本配置
  • (一)UDP基本编程步骤
  • (转)四层和七层负载均衡的区别
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • (自用)gtest单元测试
  • .gitignore文件设置了忽略但不生效
  • .NET 4.0中的泛型协变和反变
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NetCore 如何动态路由
  • [15] 使用Opencv_CUDA 模块实现基本计算机视觉程序
  • [240903] Qwen2-VL: 更清晰地看世界 | Elasticsearch 再次拥抱开源!