主题
Search

非线性最小二乘拟合


给定一个变量 x 的函数 f(x),在 m 个值 y_1=f(x_1), ..., y_m=f(x_m) 处列表,假设该函数具有已知的解析形式,取决于 n 个参数 f(x;lambda_1,...,lambda_n),并考虑 m 个方程的超定集

y_1=f(x_1;lambda_1,lambda_2,...,lambda_n)
(1)
y_m=f(x_m;lambda_1,lambda_2,...,lambda_n).
(2)

我们希望求解这些方程,以获得最佳满足此方程组的值 lambda_1, ..., lambda_n。 为 lambda_i 选择一个初始猜测,然后定义

 dbeta_i=y_i-f(x_i;lambda_1,...,lambda_n).
(3)

现在获得线性化估计,用于减少 dbeta_i 至 0 所需的变化量 dlambda_i

 dbeta_i=sum_(j=1)^n(partialf)/(partiallambda_j)dlambda_j|_(x_i,lambda)
(4)

对于 i=1, ..., m,其中 lambda=(lambda_1,...,lambda_n)。 这可以写成组件形式:

 dbeta_i=A_(ij)dlambda_j,
(5)

其中 Am×n 矩阵

 A_(ij)=[(partialf)/(partiallambda_1)|_(x_1,lambda) ... (partialf)/(partiallambda_n)|_(x_1,lambda); (partialf)/(partiallambda_1)|_(x_2,lambda) ... (partialf)/(partiallambda_n)|_(x_2,lambda); | ... |; (partialf)/(partiallambda_1)|_(x_m,lambda) ... (partialf)/(partiallambda_n)|_(x_m,lambda)].
(6)

更简洁的矩阵形式:

 dbeta=Adlambda,
(7)

其中 dbeta 是一个 m 向量,dlambda 是一个 n 向量。

A转置应用于两边,得到

 A^(T)dbeta=(A^(T)A)dlambda.
(8)

定义

a=A^(T)A
(9)
b=A^(T)dbeta
(10)

根据已知量 Adbeta,然后得到矩阵方程

 adlambda=b,
(11)

可以使用标准矩阵技术(如高斯消元法)求解 dlambda。 然后将此偏移量应用于 lambda 并计算新的 dbeta。 通过迭代应用此过程,直到 dlambda 的元素变得小于某个规定的极限,即可获得解。 请注意,对于某些函数,该过程可能无法很好地收敛,并且通过选择接近最佳拟合值的初始值,通常可以大大改善收敛性。 平方残差和由 R^2=dbeta·dbeta 给出(在最后一次迭代之后)。

NonlinearLeastSquares

上面显示了一个非线性最小二乘法拟合噪声高斯函数的例子

 f(x;A,x_0,sigma)=Ae^(-(x-x_0)^2/(2sigma^2))
(12)

其中,细实线是初始猜测,虚线是中间迭代,粗实线是解收敛到的拟合。 实际参数为 (A,x_0,sigma)=(1,20,5),初始猜测为 (0.8, 15, 4),收敛值为 (1.03105, 20.1369, 4.86022),R^2=0.148461。 用于构造矩阵 A偏导数

(partialf)/(partialA)=e^(-(x-x_0)^2/(2sigma^2))
(13)
(partialf)/(partialx_0)=(A(x-x_0))/(sigma^2)e^(-(x-x_0)^2/(2sigma^2))
(14)
(partialf)/(partialsigma)=(A(x-x_0)^2)/(sigma^3)e^(-(x-x_0)^2/(2sigma^2)).
(15)

该技术显然可以推广到多个高斯函数,以包括斜率等,尽管随着自由参数数量的增加,收敛特性通常会变差。

类似的技术可用于求解超定方程组。 例如,当求解对应于噪声旋转矩阵的最佳拟合欧拉角时,可能会出现此问题,在这种情况下,有三个未知角度,但有九个相关的矩阵元素。 在这种情况下,将 n不同的函数写为 f_i(lambda_1,...,lambda_n),对于 i=1, ..., n,称它们的实际值为 y_i,并定义

 A=[(partialf_1)/(partiallambda_1)|_(lambda_i) (partialf_1)/(partiallambda_2)|_(lambda_i) ... (partialf_1)/(partiallambda_n)|_(lambda_i); | | ... |; (partialf_m)/(partiallambda_1)|_(lambda_i) (partialf_m)/(partiallambda_2)|_(lambda_i) ... (partialf_m)/(partiallambda_n)|_(lambda_i)],
(16)

 dbeta=y-f_i(lambda_1,...,lambda_n),
(17)

其中 lambda_i 是在第 i 次迭代后获得的数值。 再次,将方程设置为

 Adlambda=dbeta,
(18)

并完全按照之前的步骤进行。


另请参阅

最小二乘拟合, 线性回归, 摩尔-彭罗斯矩阵逆

使用 Wolfram|Alpha 探索

参考文献

Bates, D. M. 和 Watts, D. G. 非线性回归及其应用。 纽约:Wiley,1988 年。

在 Wolfram|Alpha 上被引用

非线性最小二乘拟合

请引用本文为

Weisstein, Eric W. “非线性最小二乘拟合。” 来源:MathWorld--Wolfram Web 资源。 https://mathworld.net.cn/NonlinearLeastSquaresFitting.html

主题分类