通过 SVD 进行线性回归不会产生与递增多项式次数的最佳拟合

计算科学 线性代数 回归
2021-12-25 22:05:14

我在 FORTRAN 中使用一个基本的奇异值分解(通过 LAPACK)例程来解决一个超定系统,其形式为AX=B在哪里size(A)=[m,n]m>n.

我的样本数据点来自嘈杂的正弦函数,我正在尝试使用线性回归xi作为我的基函数。我发现(使用嘈杂的正弦函数)当我保持多项式较低时,我得到了非常好的近似值。也就是说,当我拟合形式的函数时

a0+a1x+a2x2++aNxN
N10,我得到了很好的结果。当我允许变得更高时(我有 1000 个数据点),比如说,最多 250,我的拟合度会下降,我的平方和是(而不是大约 200)。N5.6×1041N10

为什么会这样?例如,如果 6 次多项式提供最佳拟合,那么次多项式不应该为产生与相同的拟合吗?N0a7aN

2个回答

这里的问题是单项式基础的条件数变得非常大,这意味着单项式的值对系数的值非常敏感。因此,当您尝试在此基础上计算高次多项式时,您的答案非常不准确。有一些表现更好的多项式基,就像任何正交多项式族一样。

Vandermonde 矩阵的部分确实倾向于病态。如果您确实使用奇异值分解进行拟合,那么您应该已经看到了大量微小的奇异值。您是否记得在计算最小二乘解之前将那些微小的奇异值归零?

的连续成员以增加,您会发现对于足够高的成员看起来几乎无法区分。这表现在列变得几乎线性相关。xkkk

或者,就像马特所说,您可以使用正交多项式。(我在这里谈到了它们,但为了方便起见,我想我应该在这里说点什么。)如果你的数据点在横坐标上是等距的,你可以使用 Gram 多项式作为基础。如果它们的间距不规则,则需要做一些工作;有关详细信息,请参阅Forsythe 的论文