大家好,欢迎来到IT知识分享网。
欠拟合(Underfitting),过拟合(Overfitting)
欠拟合是指特征数选取过少,没法很好的描述数据。
过拟合是指特征数选取过多,同样也没法很好的描述数据。
我们以猜明星为例子:
- 他有2个耳朵。这就是欠拟合,你猜不出他是谁!
- 他长得像牛头梗。这个就是刚好拟合,你大概已经能猜出他是谁了。
- 他长得像王宝强。这个就是过拟合,特征太具体也就太泛了,你仍然猜不出他是谁。
回归到数学,我们来举一个数学的例子,假设我们要拟合的是-x²,用左边60%的数据来训练。
如下是欠拟合的例子,使用1次多项式(线性)来拟合训练数据。

如下是刚好拟合的例子,使用的是2次多项式来拟合训练数据。

如下是过拟合的例子,使用的是11次多项式来拟合数据。

那么,我们如何来防止过拟合呢?
最朴素的思路,我们要让模型在所有数据上都效果不错。
机器学习中我们常用的方式是给代价函数增加正则项,或者叫惩罚因子,常用的是L2范数(后面再说说范式),简单理解就是参数的平方和,参数越多,惩罚也就越厉害,这个相当于增加了一个先验项。
最优化 = 代价函数(误差项) + 正则项(惩罚因子)
彩蛋:是不是跟贝叶斯一个原理!!!
下图是最简单的增加了平方和的惩罚项对应的表达式拟合误差,可以看到最佳拟合的是二次多项式。

当然,也有另外一种比较实在的方法,比较训练组和测试组的误差项的值,选择最小的那一个就行。

本文中使用到的技术
- 多项式拟合:numpy.ployfit,numpy.ploy1d
- 绘图:matplotlib.pyplot
- 均方差:sklearn.metrics.mean_squared_error
- 范数:numpy.linalg.norm
(如果对你有启发,请【在看】支持,谢谢!)
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/172367.html