程序员说模型过拟合的时候,说的是什么?

简介: 机器学习中,模型的拟合效果意味着对新数据的预测能力的强弱(泛化能力)。而程序员评价模型拟合效果时,常说“过拟合”及“欠拟合”,那究竟什么是过/欠拟合呢?什么指标可以判断拟合效果?以及如何优化?

欠拟合&过拟合的概念


注:在机器学习或人工神经网络中,过拟合与欠拟合有时也被称为“过训练”和“欠训练”,本文不做术语差异上的专业区分。


欠拟合是指相较于数据而言,模型参数过少或者模型结构过于简单,以至于无法学习到数据中的规律。


过拟合是指模型只过分地匹配特定数据集,以至于对其他数据无良好地拟合及预测。其本质是模型从训练数据中学习到了统计噪声,由此分析影响因素有:


  1. 训练数据过于局部片面,模型学习到与真实数据不相符的噪音;


  1. 训练数据的噪音数据干扰过大,大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系;


  1. 过于复杂的参数或结构模型(相较于数据而言),在可以“完美地”适应数据的同时,也学习更多的噪声;



如上图以虚线的区分效果来形象表示模型的拟合效果。Underfitting代表欠拟合模型,Overfitting代表过拟合模型,Good代表拟合良好的模型。


拟合效果的评估方式




现实中通常由训练误差及测试误差(泛化误差)评估模型的学习程度及泛化能力。


欠拟合时训练误差和测试误差在均较高,随着训练时间及模型复杂度的增加而下降。在到达一个拟合最优的临界点之后,训练误差下降,测试误差上升,这个时候就进入了过拟合区域。它们的误差情况差异如下表所示:



拟合效果的深入分析


对于拟合效果除了通过训练、测试的误差估计其泛化误差及判断拟合程度之外,我们往往还希望了解它为什么具有这样的泛化性能。统计学常用“偏差-方差分解”(bias-variance decomposition)来分析模型的泛化性能:其泛化误差为偏差、方差与噪声之和。



噪声(ε) 表达了在当前任务上任何学习算法所能达到的泛化误差的下界,即刻画了学习问题本身(客观存在)的难度。


偏差(Bias) 是指用所有可能的训练数据集训练出的所有模型的输出值与真实值之间的差异,刻画了模型的拟合能力。偏差较小即模型预测准确度越高,表示模型拟合程度越高。




方差(Variance) 是指不同的训练数据集训练出的模型对同预测样本输出值之间的差异,刻画了训练数据扰动所造成的影响。方差较大即模型预测值越不稳定,表示模型(过)拟合程度越高,受训练集扰动影响越大。



如下用靶心图形象表示不同方差及偏差下模型预测的差异:


偏差越小,模型预测值与目标值差异越小,预测值越准确;


方差越小,不同的训练数据集训练出的模型对同预测样本预测值差异越小,预测值越集中;




“偏差-方差分解” 说明,模型拟合过程的泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。


当模型欠拟合时:模型准确度不高(高偏差),受训练数据的扰动影响较小(低方差),其泛化误差大主要由高的偏差导致。


当模型过拟合时:模型准确度较高(低偏差),模型容易学习到训练数据扰动的噪音(高方差),其泛化误差大由高的方差导致。



拟合效果的优化方法


可结合交叉验证评估模型的表现,可较准确判断拟合程度。在优化欠/过拟合现象上,主要有如下方法:


模型欠拟合


  • 增加特征维度:如增加新业务层面特征,特征衍生来增大特征假设空间,以增加特征的表达能力;


  • 增加模型复杂度:如增加模型训练时间、结构复杂度,尝试复杂非线性模型等,以增加模型的学习能力;


模型过拟合(数据特征及模型层面)


  • 增加数据: 如寻找更多训练数据样本,数据增强等,以减少对局部数据的依赖;


  • 迁移学习:迁移学习的工作原理是在大型数据集(如ImageNet)上训练网络,然后将这些权重用作新任务中的初始权重。


  • 特征选择:通过筛选掉冗余特征,减少冗余特征产生噪声干扰;


  • 降低模型复杂度


  1. 简化模型结构:如减少神经网络深度,决策树的数目等。


  1. L1/L2正则化:通过在代价函数加入正则项(权重整体的值)作为惩罚项,以限制模型学习的权重。



(拓展:通过在神经网络的网络层引入随机的噪声,也有类似L2正则化的效果)


  1. 提前停止(Early stopping):通过迭代次数截断的方法,以限制模型学习的权重。



  • 结合多个模型


  1. 集成学习:如随机森林(bagging法)通过训练样本有放回抽样和随机特征选择训练多个模型,综合决策,可以减少对部分数据/模型的依赖,减少方差及误差;


  1. Dropout: 神经网络的前向传播过程中每次按一定的概率(比如50%)随机地“暂停”一部分神经元的作用。这类似于多种网络结构模型bagging取平均决策,且模型不会依赖某些局部的特征,从而有更好泛化性能。


相关文章
|
网络协议 安全 Android开发
软件丨李跳跳们现在该如何跳呢?
前段时间,李跳跳等软件被某大厂发了律师函,之后,好些个跳广告软件都相继发布公众号说明,停止维护软件,并且下架了相关软件,那我们还能跳吗?该怎么跳呢?
1023 0
软件丨李跳跳们现在该如何跳呢?
|
数据采集 安全 Go
Go并发优化的9大技巧,效果立竿见影
Go并发优化的9大技巧,效果立竿见影
817 0
|
11月前
|
Python
【收藏备用】Python正则表达式的7个实用技巧
【收藏备用】Python正则表达式的7个实用技巧
113 1
|
存储 Kubernetes 数据库
​分分钟教你在阿里云 K8s 上部署流数据库 RisingWave
本文主要介绍如何在阿里云【容器服务 Kubernetes 版 ACK】上部署 RisingWave 集群。RisingWave当前提供单机试玩模式,以及基于 K8s 的分布式部署模式,生产中我们只推荐后者。K8s 虽然上手门槛高,但只需按照本篇文章的步骤依次操作,你依然能轻松驾驭一个生产集群。
|
运维 容灾 Cloud Native
我们如何实现“业务 100% 云原生化,让阿里中间件全面升级到公共云架构”?
在今年的天猫双 11 中,中间件支撑了 5403 亿的交易量,并全面升级到了公共云架构。 此次的架构升级,是以开源为内核、以公共云为基础、以 OpenAPI 进行解偶扩展,在架构上,对开源、自研、商业化进行统一。通过采用和反哺开源、推动社区建设,通过阿里巴巴丰富的业务场景、打磨技术的性能和可用性,通过云上商业化服务更多企业、打造更好的用户体验,全方位锤炼云上产品的竞争力。
1079 77
我们如何实现“业务 100% 云原生化,让阿里中间件全面升级到公共云架构”?
|
机器学习/深度学习 人工智能 物联网
快速玩转 Llama2!阿里云机器学习 PAI 推出最佳实践
近期,Meta 宣布大语言模型 Llama2 开源,阿里云机器学习平台PAI针对 Llama2 系列模型进行适配,推出全量微调、Lora微调、分布式训练、推理服务等场景最佳实践,助力AI开发者快速开箱。
12055 15
|
SQL 弹性计算 Ubuntu
阿里云服务器操作系统怎么选择?哪个版本合适?
阿里云服务器操作系统的选择主要取决于用户的实际使用场景,阿里云百科以Web网站应用为例,程序语言如果是ASP、.NET、HTML、数据库ACCESS、SQL Server建议选择Windows;PHP、PERL、CGI、数据库MySQL、SQLite建议选择Linux。像阿里云百科主要用来搭建网站,安装的是CentOS操作系统,搭配宝塔Linux面板
3432 0
阿里云服务器操作系统怎么选择?哪个版本合适?
|
SQL 存储 容灾
关于主从延迟,一篇文章给你讲明白了!
在实际的生产环境中,由单台MySQL作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面 因此,一般来说都是通过集群主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力进行部署与实施总结MySQL主从集群带来的作用是:提高数据库负载能力,主库执行读写任务(增删改),备库仅做查询。提高系统读写性能、可扩展性和高可用性。数据备份与容灾,备库在异地,主库不存在了,备库可以立即接管,无须恢复时间。用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。可以简单理解为记录的就是sq
2057 0
|
数据采集 Prometheus 监控
【夜莺监控】海王——Categraf
【夜莺监控】海王——Categraf
|
Java
震惊!【Eureka】发生Cannot execute request on any known server异常这样解决
震惊!【Eureka】发生Cannot execute request on any known server异常这样解决
691 0
震惊!【Eureka】发生Cannot execute request on any known server异常这样解决

热门文章

最新文章