主題
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)

並完全按照之前的步驟進行。


另請參閱

最小二乘擬合, 線性迴歸, 摩爾-彭羅斯矩陣逆

使用 探索

參考文獻

Bates, D. M. 和 Watts, D. G. 非線性迴歸及其應用。 紐約:Wiley,1988 年。

在 上被引用

非線性最小二乘擬合

請引用本文為

Weisstein, Eric W. “非線性最小二乘擬合。” 來源: Web 資源。 https://mathworld.tw/NonlinearLeastSquaresFitting.html

主題分類