技術導讀
以圖形方式把模型擬合到資料
由殘差、Chebyshev 準則與最小二乘法,介紹插值與曲線擬合的分別。
2024年7月28日 · 約 1 分鐘閱讀
延續數值分析系列,本文討論曲線擬合。插值建立一條穿過全部資料點的曲線;曲線擬合則尋找最能代表資料整體趨勢的曲線,不一定通過每一點。
曲線擬合
當資料帶有雜訊或誤差,穿過所有點的插值未必能代表底層趨勢,此時可用曲線擬合尋找較合理的函數。
如何判斷擬合是否良好?一種做法是計算殘差——觀測值與模型預測值的差,再調整模型參數以減少殘差。常見準則包括:
- **Chebyshev 近似準則:**最小化資料與模型之間的最大絕對誤差。
- **最小二乘準則:**最小化殘差平方和。
如果用多項式擬合,可透過最小二乘法求出令殘差平方和最小的係數,問題可轉化成線性代數計算。
最小二乘法
最小二乘法適用於線性、多項式、指數等多類模型。給定資料
(x1,y1),…,(xn,yn),要擬合 m 次多項式
f(x)=a0+a1x+a2x2+⋯+amxm,
目標是找出令殘差平方和最小的 a0,…,am。設計矩陣形式為
Aa=b,
其中:
- A 是 n×(m+1) 矩陣,第 i 列為 (1,xi,xi2,…,xim);
- a=(a0,a1,…,am)T 是係數向量;
- b=(y1,y2,…,yn)T 是觀測向量。
例如資料為:
希望擬合 f(x)=a0+a1x+a2x2。相應方程寫成
a0+a1+a2a0+2a1+22a2a0+3a1+32a2a0+4a1+42a2=1,=3.9,=9.1,=15.8.
實際最小二乘問題有四條方程、三個未知數,通常以 normal equations、QR 分解或 SVD 求近似解,而不是要求每條方程同時完全成立。
我的專案
專案先以圖形介紹資料擬合,再使用 Python、numpy 與 matplotlib 實作。numpy.polyfit 負責多項式擬合,matplotlib.plot 顯示資料與擬合模型。
以下 HTML 互動視覺化展示專案結果: