1. 程式人生 > >如何防止過擬合和欠擬合

如何防止過擬合和欠擬合

過擬合和欠擬合是模型訓練過程中經常出現的問題,兩種情況正好相反,現將兩者的定義及如何防止進行簡要總結。

1 過擬合

1.1 定義

是指模型對於訓練資料擬合呈現過當的情況,反映到評估指標上就是模型在訓練集上的表現很好,但是在測試集上的表現較差。結果就是訓練出的模型泛化能力差。

1.2 如何防止過擬合

防止過擬合的方法有4種:

1)增加訓練集資料;

該方式是從資料入手,將更多的資料參與到模型的訓練中,這是最有效的方法,這樣可以讓模型學習到更多更有效的特徵,降低噪聲對模型的影響。

但是往往直接增加資料是困難的,因此可以通過一定的規則來擴充訓練資料。列舉兩種方式:

①如影象分類問題中可以通過對影象的平移,縮放,旋轉等方式來擴充;

②也可以使用生成式對抗網路類合成大量資料。

2)降低模型複雜度;

在資料量較少的情況下,模型過於複雜將會導致過擬合,因此可以通過降低模型的複雜度來防止過擬合,這樣就可以一定程度上避免模型擬合過多的取樣噪聲。

比如:

①神經網路中減少網路成熟,神經元個數等;

②決策樹中降低樹的深度和進行剪枝。

3)增加正則化約束項;

比如將權值的大小加入到損失函式中,避免權值過大帶來的過擬合風險。

4)通過整合學習的方式訓練模型。

整合學習是把多個模型整合到一起來作為共同的模型,可以降低單一模型的過擬合風險。如bagging方法。

2 欠擬合

2.1 定義

是指模型在訓練集合測試集資料上的表現均不好的情況。結果就是訓練出的模型表達能力不夠,精度不夠。

2.2 如何防止

防止欠擬合的方法有3種:

1)增加特徵數;

當特徵不足或者現有特徵與樣本標籤的相關性不強時,模型易出現欠擬合。

可以通過挖掘上下文特徵,ID類特徵,組合特徵等新的特徵,可以取得較好的效果。這屬於特徵工程相關的內容,如因子分解機,梯度提升決策樹,deep_crossing都可以豐富特徵。

2)增加模型複雜度;

模型簡單時其表達能力較差,容易導致欠擬合,因此可以適當地增加模型複雜度,使模型擁有更強的擬合能力。

如線性模型中新增高次項,神經網路中增加網路層數或神經元個數。

3)減小正則化係數。

正則化是用於防止過擬合的,但是當出現欠擬合時,就有必要針對性地減小正則化係數。