最近研究一下機器學習中的過擬合問題,看了很多大牛們的資料,寫的都不錯,我這裡面主要是整理,開始正文。
過擬合(overfitting)是指在模型引數擬合過程中的問題,由於訓練資料報含抽樣誤差,訓練時,複雜的模型將抽樣誤差也考慮在內,將抽樣誤差也進行了很好的擬合。
具體表現就是最終模型在訓練集上效果好;在測試集上效果差。模型泛化能力弱
過擬合主要由以下三點原因產生:
造成原因:
(1)大到模型過分記住了噪音特徵,反而忽略了真實的輸入輸出間的關係
當雜訊數量在訓練集中占有相當大的比例時,就會與正常資料一起影響訓練集的分布,機器學習演算法在學習過程中,把正常資料和雜訊資料同時擬合,學習到了乙個正常資料與雜訊資料共同決定的模型,用此模型去**從正常資料分布上取的未知資料,就很有可能得到不理想的泛化效果。
造成的原因:
(1)主要是因為訓練集的數量級和模型的複雜度不匹配。
訓練集的數量級要小於模型的複雜度,使用的模型太複雜,甚至出現訓練資料跟模型引數個數差不多,這樣模型的引數會把所有情況都記錄下來
(1)使用的模型太複雜,訓練的資料不能滿足模型複雜度(同2中)
(2)overtraining,在有雜訊的訓練資料中,我們要是訓練過度,會讓模型學習到雜訊的特徵,無疑是會造成在沒有雜訊的真實測試集上準確率下降。
(1)資料清洗
資料清洗從名字上也看的出就是把「髒」的「洗掉」,指發現並糾正資料檔案中可識別的錯誤的最後一道程式,包括檢查資料一致性,處理無效值和缺失值等
(1)獲取和使用更多的資料集
可以通過標註或者挖掘更多的資料,使其能夠盡量反應資料的真實分布,訓練集越多,過擬合的概率越小
(2)選擇複雜度適當的訓練模型和引數
這類問題跟下面3中的解決有重複,但是卻是乙個考慮點
訓練模型選取和使用方面,有些方法是通用方法,基本適用於所有場景,比如早停和正則化,而有些方法需要根據事情情況去作出調整,比如簡化模型和使用整合模型
(1)早停(通用方法)
early stopping 是引數微調中的一種,即在每個迴圈結束一次以後(這裡的迴圈可能是 full data batch,也可能是 mini batch size),計算模型的準確率(accuracy),當準確率不再增加時就停止訓練。
這是一種非常簡單和自然的辦法,在訓練過程中觀察訓練結果的情況,早停可以防止過度訓練,準確率不再增加時就停止訓練,也是為了防止模型過度訓練,把噪音資料都擬合的很好(其實早停也是解決有噪音的一種方法)
但是問題在於,準確率在每個迴圈之後的計算是變化的,沒有任何人和任何模型能保證準確率不會變化,可能某次迴圈結束後,準確率很高,但是下一輪結束後準確率又降得很低。這裡筆者建議的乙個辦法是人為地設定乙個範圍。當連續10次準確率在此範圍內波動時就停止迴圈。
(2)正則化 (通用方法)
正則化又稱為權重衰減,具體做法是將權值的大小加入到損失函式中,降低權重值,,在實際使用中分為 l1 正則與 l2 正則。
l1範數稀疏模型,選擇少量重要特徵。l2範數會選擇更多特徵,使這些特徵接近於零。
l1正則會傾向於使得w要麼取1,要麼取0 ,稀疏矩陣 ,可以達到降維的角度,這樣會去除掉一些沒有用的特徵使得泛華能力更好
l2正則會整體的把w變小,從而使得模型更加平滑(求導時候導數的大小很大程度取決於權重,權重小的話模型約平滑),而越平滑的模型泛華能力越好
正則的選取:
預設情況下選用l2正則。
如若認為少數特徵有用,可以用l1正則
參考 和 以及
(3)簡化模型複雜度
如簡化網路結構,如層數,單層神經元個數等,適當的優化網路結構和引數,使得不至於訓練模型的複雜度過高,訓練資料被「完全訓練」,避免噪音都擬合的很好的情況
(4) 整合多種模型
這是一種通過結合幾個模型降低泛化誤差的技術。主要想法是通過對訓練資料有放回的取樣來訓練多個模型,然後讓所有模型表決(採用投票多數表決,取所有模型分類結果最多的分類作為結果)測試樣例的輸出。這種方法雖然在準確率和穩定性都會有提高,但是訓練多個模型的計算成本也是非常高的
通過整合手段解決問題的方法有
1、bagging,類似於分段函式的概念,不同部分的訓練集使用不同模型擬合
2、boosting,綜合多個簡單的模型的結果得到乙個『靠譜的結果
3、dropout,實際效果其實是用不同的訓練集訓練了不同的網路模型,然後這些網路模型形成了乙個整體的模型
參考文獻
機器學習過擬合問題
過擬合的定義 在對已知的資料集合進行學習的時候,我們選擇適應度最好的模型最為最終的結果。雖然我們選擇的模型能夠很好的解釋訓練資料集合,但卻不一定能夠很好的解釋測試資料或者其他資料,也就是說這個模型過於精細的刻畫了訓練資料,對於測試資料或者其他新的資料泛華能力不強。發生過擬合的原因 1 使用過於複雜的...
機器學習 過擬合問題
引數估計角度 訓練集是資料生成分布的取樣,訓練集所估計的經驗分布是資料生成分布的近似,由於訓練集的有限性,近似的分布在細節上與資料生成分布存在著差異。過擬合是指模型錯把訓練集自身的細節,當作資料生成分布的一般性質來學習,從而導致模型泛化效能的降低。訓練集上的經驗誤差在下降 偏差小 驗證集上的誤差 泛...
機器學習之擬合和過擬合問題
過擬合 當某個模型過度的學習訓練資料中的細節和噪音,以至於模型在新的資料上表現很差,我們稱過擬合發生了,通俗點就是 模型在訓練集中測試的準確度遠遠高於在測試集中的準確度。過擬合問題通常發生在變數特徵過多的時候。這種情況下訓練出的方程總是能很好的擬合訓練資料,也就是說,我們的代價函式可能非常接近於0或...