機器學習中,模型的擬合效果意味着對新數據的預測能力的強弱(泛化能力)。而程序員評價模型擬合效果時,常說「過擬合」及「欠擬合」,那究竟什麼是過/欠擬合呢?什麼指標能夠判斷擬合效果?以及如何優化?程序員
注:在機器學習或人工神經網絡中,過擬合與欠擬合有時也被稱爲「過訓練」和「欠訓練」,本文不作術語差別上的專業區分。
算法
欠擬合是指相較於數據而言,模型參數過少或者模型結構過於簡單,以致於沒法學習到數據中的規律。網絡
過擬合是指模型只過度地匹配特定數據集,以致於對其餘數據無良好地擬合及預測。其本質是模型從訓練數據中學習到了統計噪聲,由此分析影響因素有:機器學習
如上圖以虛線的區分效果來形象表示模型的擬合效果。Underfitting表明欠擬合模型,Overfitting表明過擬合模型,Good表明擬合良好的模型。函數
現實中一般由訓練偏差及測試偏差(泛化偏差)評估模型的學習程度及泛化能力。性能
欠擬合時訓練偏差和測試偏差在均較高,隨着訓練時間及模型複雜度的增長而降低。在到達一個擬合最優的臨界點以後,訓練偏差降低,測試偏差上升,這個時候就進入了過擬合區域。它們的偏差狀況差別以下表所示:
學習
對於擬合效果除了經過訓練、測試的偏差估計其泛化偏差及判斷擬合程度以外,咱們每每還但願瞭解它爲何具備這樣的泛化性能。統計學經常使用「誤差-方差分解」(bias-variance decomposition)來分析模型的泛化性能:其泛化偏差爲誤差、方差與噪聲之和。測試
噪聲(ε) 表達了在當前任務上任何學習算法所能達到的泛化偏差的下界,即刻畫了學習問題自己(客觀存在)的難度。優化
誤差(Bias) 是指用全部可能的訓練數據集訓練出的全部模型的輸出值與真實值之間的差別,刻畫了模型的擬合能力。誤差較小即模型預測準確度越高,表示模型擬合程度越高。
spa
方差(Variance) 是指不一樣的訓練數據集訓練出的模型對同預測樣本輸出值之間的差別,刻畫了訓練數據擾動所形成的影響。方差較大即模型預測值越不穩定,表示模型(過)擬合程度越高,受訓練集擾動影響越大。
以下用靶心圖形象表示不一樣方差及誤差下模型預測的差別:
誤差越小,模型預測值與目標值差別越小,預測值越準確;
方差越小,不一樣的訓練數據集訓練出的模型對同預測樣本預測值差別越小,預測值越集中;
「誤差-方差分解」 說明,模型擬合過程的泛化性能是由學習算法的能力、數據的充分性以及學習任務自己的難度所共同決定的。
當模型欠擬合時:模型準確度不高(高誤差),受訓練數據的擾動影響較小(低方差),其泛化偏差大主要由高的誤差致使。
當模型過擬合時:模型準確度較高(低誤差),模型容易學習到訓練數據擾動的噪音(高方差),其泛化偏差大由高的方差致使。
可結合交叉驗證評估模型的表現,可較準確判斷擬合程度。在優化欠/過擬合現象上,主要有以下方法:
下降模型複雜度:
(拓展:經過在神經網絡的網絡層引入隨機的噪聲,也有相似L2正則化的效果)
結合多個模型:
歡迎關注「算法進階」公衆號,這裏按期推送機器學習、深度學習等技術好文。歡迎一塊兒學習交流進步!