過擬合產生的原因?
過擬合的表現:模型在訓練集上誤差很小,在測試集上誤差很大。
過擬合主要由兩個方面決定:一是數據集,二是模型。
我認為過擬合問題目前來說只能減少不能避免。
數據集角度:
我們知道無論是機器學習還是深度學習,都是通過在訓練集上做訓練來最小化訓練集上的損失函數來得到想要的模型,也就是說我們希望在訓練集上學習到的規律能夠泛化到真實數據集上,這里其實潛藏了一個假設就是訓練集上的分布和真實數據集的分布是一致的。但是事實上訓練集往往只是真實數據集的一小部分,往往是包含噪聲的,如果很不辛的訓練數據集包含了一個很強的噪聲,這個強噪聲已經足以影響到訓練數據集中的lable分布,那么模型很容易把這個強噪聲當成一個強特征,造成過擬合。所以數據集數量和質量甚至決定了模型的上限。
模型角度:
一般復雜的模型越容易過擬合,因為復雜的模型擬合能力強,他能把每個數據擬合進來,這樣也容易把噪聲數據擬合進來,這樣的模型往往具有高方差低偏差的特點。
如何減少過擬合?
減少過擬合需要具體情況具體分析。
一般由以下幾種方法:
模型角度
1. 限制模型的復雜度(根據訓練集的分布,選擇復雜度合適的模型)
2. L2正則限制特征權重,防止某些特征對結果影響太大。
3. L1正則產生稀疏權重,限制模型的復雜度。
4. 參數共享。
5. bagging
6. 提前終止。
7. dropout
8. BN
數據角度:
得到質量更高,數據量的數據。如數據增強。