應用與數學建模

模型擬合與驗證(model fitting and validation)

寫下一個微分方程模型只是工作的一半;模型含有未知的數字——一個增長率、一個傳播率、一個藥物清除常數——而它聲稱要描述一個真實系統。擬合就是選取這些數字,使模型符合你實際觀測到的數據之舉。驗證則是更難、更誠實之舉:追問擬合後的模型是否真正捕捉了現實,還是只不過回響了它被調校所依據的那同一批數據。兩者合起來,就是一個模型如何掙得被信任的資格。

擬合靠著最小化分歧而運作。你選取使模型預測曲線盡可能接近量測點的參數——最常見的是最小二乘法,選取使「預測與數據之差的平方和」最小的參數。對一個微分方程,你以試探的參數值解它(往往用數值方法),與數據比較,再調整直到擬合盡可能緊密。結果是一個校準後的模型,以具體數字取代了符號。

驗證才是學術誠實所棲身之處,因為一個模型可以擬合得漂亮卻仍一文不值。最大的罪過,是只憑模型與「用來擬合它的數據」吻合得多好來評判它——只要有足夠多的自由參數,你幾乎能擬合任何東西,包括雜訊。對策是以它從未見過的「新鮮」數據來檢驗模型:保留一些觀測,以其餘擬合,再拿預測對照保留的那一組。能預測它未經訓練之數據的模型,才真正捕捉到了什麼;只擬合其訓練數據的模型,可能只是把它背了下來(過擬合)。

把兩個真理擺在心頭最前。其一,好的擬合是必要而非充分的:吻合過去的數據並不保證預測未來,而較複雜的模型幾乎總是擬合得更好、卻往往泛化得更差。其二,由擬合萃取的參數帶有不確定性——數據可能與一整段數值範圍相容——所以誠實的模型報告的不只是一個最佳數字,還有它被釘得多牢。擬合回答「哪些參數?」;驗證回答真正要緊的問題,「我究竟該不該相信這個模型?」。

把一個邏輯斯諦增長模型擬合到某國早期疫情病例數,它完美貼合曲線。但要驗證它,保留最後兩週的數據,只以較早的幾週擬合,看它是否能預測那兩週。若能,你便有了一個真實的模型;若那個「全部擬合」的版本預測得離譜,它就是在過擬合雜訊。

以部分數據擬合,再用保留的部分檢驗預測——這就是驗證。

完美擬合自身訓練數據的模型可能一文不值:只要有足夠多的自由參數,你連雜訊都能擬合。真正的考驗是對模型從未見過之數據的預測——好的擬合是必要而絕非充分的,而增添的複雜度通常擬合更好、泛化卻更差。

又稱
parameter estimation and testingcalibration and validation參數估計與檢驗校準與驗證