多项式拟合的阶数怎么选

阶数和拟合效果的关系

多项式拟合的阶数决定了曲线的灵活程度。一阶就是直线,二阶是抛物线,三阶能有一个拐点,阶数越高曲线越弯绕。

直观上想,阶数越高拟合得越好,因为曲线更灵活嘛,能更贴合数据点。但是这有个问题,就是过拟合。阶数太高的话,曲线会把数据的噪声也拟合进去,看起来R²很高,但实际上对新数据的预测能力反而变差了。

怎么选阶数

方法一:看R²的变化

从低阶开始试,1阶、2阶、3阶这样往上加。每次记录R²值,你会发现R²会随着阶数增加而增大,但是增大的速度会越来越慢。当R²的增长变得很缓慢的时候,就说明再加阶数意义不大了。

比如1阶R²=0.85,2阶R²=0.95,3阶R²=0.96,那2阶就够了,3阶提升的那0.01不值得多一个参数。

方法二:看调整R²

调整R²考虑了参数个数的影响,公式比普通R²多了一个惩罚项。当增加阶数不能显著提升拟合效果时,调整R²反而会下降。所以选调整R²最大的那个阶数就行了。

曲线拟合App会同时显示R²和调整R²,你可以对比着看。

方法三:交叉验证

把数据分成训练集和验证集,用训练集拟合,用验证集看效果。如果在验证集上效果开始变差,就说明过拟合了。不过数据量少的时候这个方法不太好用。

一些经验值

1. 数据点少于10个,建议不超过2阶。

2. 数据点10-20个,2-3阶通常够了。

3. 数据点20个以上,可以试到4-5阶。

4. 阶数一般不要超过数据点数的1/3。

5. 如果物理问题有明确的函数形式(比如已知是二次关系),直接用对应的阶数,不用试。

过拟合的表现

过拟合的曲线在数据点之间会出现剧烈的波动,特别是在数据范围的边缘。如果你看到拟合曲线在两个相邻数据点之间出现很大的起伏,那基本就是过拟合了。

另外,如果高阶项的系数非常小(比如三阶项系数是0.001),那这个高阶项可能没什么实际意义,可以去掉。