Dobre pytanie. Najpierw przypomnij sobie, skąd pochodzi to przybliżenie . Niech będą twoimi punktami danych, będzie twoim modelem, a parametrami twojego modelu. Zatem funkcją celu nieliniowego problemu najmniejszych kwadratów jest gdzie jest wektorem reszt, . Dokładny Hesjan funkcji celu to . Zatem błąd w tym przybliżeniu to( x i , y i ) f ( ⋅ ) β 1H≈JTJ( xja, yja)fa( ⋅ )βrri=yi-f12)rT.rrH = J T J + ∑ r i ∇ 2 r i H - J T J = ∑ r i ∇ 2 r iri=yi−f(xi,β)H=JTJ+∑ri∇2riH−JTJ=∑ri∇2ri. To dobre przybliżenie, gdy reszty same w sobie są małe; lub gdy druga pochodna reszt jest mała. Liniowe najmniejsze kwadraty można uznać za szczególny przypadek, w którym 2. pochodna reszty wynosi zero.
Jeśli chodzi o przybliżenie różnic skończonych, jest ono stosunkowo tanie. Aby obliczyć różnicę centralną, musisz ocenić Jacobian dodatkowe razy (różnica w przód będzie cię kosztować n dodatkowych ocen, więc nie zawracałbym sobie głowy). Błąd przybliżenia centralnej różnicy jest proporcjonalny do ∇ 4 r i h 2 , gdzie h jest wielkością kroku. Optymalny rozmiar kroku to h ∼ ϵ 12nn∇4rh2h , gdzieϵoznacza precyzję maszyny. Więc jeśli pochodne reszt nie wybuchną, jest całkiem jasne, że przybliżenie różnic skończonych powinno być O wiele lepsze. Powinienem zaznaczyć, że chociaż obliczenia są minimalne, księgowość nie jest łatwa. Każda skończona różnica na Jakubie da ci jeden rząd Hesji na każdą resztę. Będziesz musiał ponownie złożyć Heski, korzystając z powyższej formuły.h∼ϵ13ϵ
Istnieje jednak trzecia opcja. Jeśli Twój solver korzysta z metody Quasi-Newtona (DFP, BFGS, Bryoden itp.), Jest już zbliżony do Hesji przy każdej iteracji. Przybliżenie może być całkiem dobre, ponieważ wykorzystuje funkcję celu i wartości gradientu z każdej iteracji. Większość solverów daje ci dostęp do ostatecznej prognozy Hesji (lub jej odwrotności). Jeśli jest to opcja dla ciebie, użyłbym tego jako szacunku Hesji. Jest już obliczony i prawdopodobnie będzie to całkiem niezły szacunek.
h_actual = (x + h_desired) - x