【Hazard of Overfitting】林轩田机器学习基石
首先明确了什么是Overfitting
随后,用开车的例子给出了Overfitting的出现原因
出现原因有三个:
(1)dvc太高,模型过于复杂(开车开太快)
(2)data中噪声太大(路面太颠簸)
(3)数据量N太小(知道的路线太少)
这里(1)是前提,模型太复杂:
(1)模型越复杂,就会捕获train data中越多的点(这当中当然包括更多的噪声点)
(2)数据量N太小,根据VC Dimension理论,Eout会增大
这里的noise包括两类:
1. stochoastic noise:
比如train data就是“10次多项式+正态分布的误差”产生的;如果样本量N不是很大的话,noise带来的影响很可能不能被互相抵消(抵消的意思是+noise, -noise在算error的时候有抵消的作用),这样每个noise就会非常影响曲线的形状;结果就是带来overfitting
2. deterministic noise:
比如train data是“50次多项式”产生的;即使没有stochastic noise,无论怎么用10次多项式去拟合也无法拟合出50次多项式;
但是这个时候,由于10次多项式的power比较强,它回去够到尽量多的点,这些点当中难免有些就等于noise了;
反之,如果用2次多项式去拟合,由于它的power比较弱,在它正常范围内能够到的点比较少,因此train data中的数据点起到stochastic noise的机会就大大减少了
最终的造成的结果,就是如下的两张图了。
如上图,总结了overfitting的四种reasons。
最后,引出了对抗overfitting的几种途径:
最关键的是:一开始尽量从simple model开始尝试
其次再是对train data的各种清洗过滤。
另外,regularization和validation是两种比较重要的防止overfitting的途径。后面有可能重点介绍。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?