如何防止過擬合?與如何特徵選擇?

之前學習的時候記得比較雜亂,現在特來整理一下,初期先把方法的大綱羅列出來,具體的內容後期持續補充更新。


什麼是過擬合?

       是這樣一種現象:一個假設在訓練數據上能夠獲得比其他假設更好的擬合,但是在除訓練數據集之外的數據上卻不能很好的擬合數據,這時就出現了過擬合。就好像比如我們在想要擬合一個數據,本來我們可以用一條直線擬合數據,但是我們非要用個很複雜的多項式來擬合數據(如下圖中的紅線),雖然得到的效果不錯,但是如果對於未知的數據,那個很複雜的多項式不能很好的預測其結果,其泛化能力很差。(引用的一段話:

http://blog.sina.com.cn/s/blog_6622f5c30101bt7n.html

過度擬合(overfitting)是指數據模型在訓練集裏表現非常滿意,但是一旦應用到真實業務實踐時,效果大打折扣;換成學術化語言描述,就是模型對樣本數據擬合非常好,但是對於樣本數據外的應用數據,擬合效果非常差。在我們數據分析挖掘業務實踐中,就是“模型搭建時表現看上去非常好,但是應用到具體業務實踐時,模型效果顯著下降,包括準確率、精度、效果等等顯著下降”。)



0.爲什麼會過擬合?

1)建模樣本抽取錯誤:包括但不僅限於樣本數量太少,抽樣方法錯誤,抽樣時沒有足夠考慮業務場景或業務特點

2)樣本里的噪聲數據干擾過大,大到模型過分記住了噪聲的特徵

3)由訓練集得到的模型太複雜,會過擬合,其在測試集上的泛化能力會很次


1.如何防止過擬合?

     1)early stopping

     對模型進行訓練的過程即是對模型的參數進行學習更新的過程,這個參數學習的過程往往會用到一些迭代的方法,如梯度下降學習算法。early stopping便是一種迭代次數截斷的方法來防止過擬合的方法,即在模型對訓練數據集迭代收斂之前停止迭代來防止過擬合。

    具體做法是,在每一步結束時都會計算一個Accuracy,當Accuracy不再提高時,就停止訓練。這種做法很符合直觀感受,因爲accuracy都再提高了,再繼續訓練也是無益的,只會提高訓練的時間。那麼該做法的一個重點便是怎樣才認爲validation accurary不再提高了呢?並不是說validation accuracy一降下來便認爲不再提高了,因爲可能經過
這個Epoch後,accuracy降低了,但是隨後的Epoch又讓accuracy又上去了,所以不能根據一兩次的連續降低
就判斷不再提高。一般的做法是,在訓練的過程中,記錄到目前爲止最好的validation accuracy,當連續10次
Epoch(或者更多次)沒達到最佳accuracy時,則可以認爲accuracy不再提高了
。此時便可以停止迭代了。

     2) 數據集擴增

            可以解決0中1)的問題

           數據集擴增需要得到更多的符合要求的數據,即和已有的數據是獨立同分布的,或者近似獨立同分布的。

          從源頭採集更多的數據

         複製原有數據並加上隨機噪聲

         重採樣

         根據當前數據集估計數據分佈參數,使用該分佈產生更多的數據等


     3) 正則化(L1,L2)

           正則化方法是指在進行目標函數或代價函數優化時,在目標函數或代價函數後面加上一項正則項,一般有L1正則和L2正則等。

           這裏以線性迴歸爲基礎,瞭解正則化如何防止過擬合的。

           L1的定義:

          原來的線性迴歸模型優化目標是最小化損失函數,即:

                         

         現在我們給它加上一個L1範數的正則項,有

           

        L2範數的正則項,有

          




     

     4)dropout

     5)驗證數據:K-折交叉驗證

     6)減少特徵

     7)權值衰減。主要用於神經網絡模型中

      它在每次迭代過程中以某個小因子降低每個權值,這等效於修改E的定義,加入一個與網絡權值的總量相應的
懲罰項,此方法的動機是保持權值較小,避免weight decay,從而使學習過程向着複雜決策面的反方向偏。

2.爲什麼要特徵選擇?

    有兩個很重要的原因:首先,我們在顯示任務中經常會遇到維數災難問題,這是由於屬性過多而造成的,若能從中選擇出重要的特徵,使得後序學習過程僅需在一部分特徵上構建模型,則維數災難就會大爲減輕。從這個意義上來說,特徵選擇和降維有相似的動機。事實上,它們是處理高維數據的兩大主流技術。第二個原因是,去除不相關特徵往往會降低學習任務的難度,這就像偵探破案一樣,若將紛繁複雜的因素抽絲剝繭,只留下關鍵因素,則真相往往看的更清楚。[摘自周志華-機器學習-11章]

3.如何特徵選擇?

     1)計算每一個特徵與向量變量的相關性(有label)

     皮爾森係數

    互信息係數

   

     2)L1正則項

     L1正則項具有稀疏解的特性,但是要注意的是L1沒有選到的特徵並不代表不重要,原因是兩個具有高相關性的特徵可能只保留一個。如果要確定哪個特徵重要,再通過L2交叉驗證

    3)訓練能夠對特徵打分的預選模型,如Rondom Forest,Logistic Regression;打分獲得相關性後再訓練最終模型

    4) 通過特徵組合後再來選擇特徵

    5)深度學習(自動選擇特徵)

    6)(PCA/SVD,LDA等特徵降維)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章