天天看點

ML(附錄3)——過拟合與欠拟合

過拟合與欠拟合

  我們希望機器學習得到好的模型,該模型能夠從訓練樣本中找到一個能夠适應潛在樣本的普遍規律。然而,如果機器學習學的“太好”了,以至把樣本的自身特點當作潛在樣本的一般特性,這就使得模型的泛化能力(潛在樣本的預測能力)下降,進而導緻過拟合。反之,欠拟合就是學習的“太差”,連訓練樣本都沒有學好。

  欠拟合容易處理,比如在決策樹中擴充分支,在神經網絡中增加訓練輪數,需要重點關注的是麻煩的過拟合。

  當訓練資料很少時,如果使用了過多的特征,将會導緻過拟合:

ML(附錄3)——過拟合與欠拟合

  圖三是一個明顯的過拟合,它使用了高階多項式增加一些特新特征,得到的複雜曲線将樣本學些的“太好”了,以至失去了泛化性。

正則化

  如果發生了過拟合問題,可以通過作圖來觀察,但是當遇到很多變量時,畫圖将變得困難,此時我們應該如何處理?

  一種常用的辦法是減少變量的選取,比如對于房價的預測,影響房價的特征可能有上百個,但其中的某些特征對結果的影響很小,例如鄰居的收入,此時就可以去掉這些影響較小的變量。這類做法非常有效,但是其缺點是當你舍棄一部分特征變量時,你也舍棄了問題中的一些資訊。也許所有的特征對于預測房價都是有用的,我們實際上并不想舍棄一些特征。

  另一種方法就是正則化,特允許我們保留所有的特征變量。

  當我們有很多特征變量時,其中每一個變量都能對預測産生一點影響,在下圖中,如果用一個二次函數來拟合這些資料,那麼它給了我們一個對資料很好的拟合。然而,如果我們用一個更高次的多項式去拟合,最終将得到一個過拟合的複雜曲線。

  如果學習政策是平方和損失函數,那麼我們的目的就是找到合适的θ使得J(θ)最小化:

ML(附錄3)——過拟合與欠拟合

  應對過拟合的政策就是加上懲罰項,進而使θ3和θ4足夠小:

ML(附錄3)——過拟合與欠拟合

  1000 隻是随便寫的某個較大的數字。現在,因為1000θ32和1000θ42會使J(θ)變得很大,為了最小化J(θ),需要使θ3≈0,θ4≈0,這樣将得到一個近似二次函數的新函數,這會是一個更好的模型函數。最終,我們恰當地拟合了資料,所使用的正是二次函數加上一些貢獻很小的特征項x3和x4 (它們對應權重接近0)。

  上面的方法就是正則化的思路,如果特征值對應一個較小的權重,那麼最終将會得到一個簡單的假設。

  在上面的例子中,由于我們知道x3和x4是重點懲罰對象(對結果影響較小),是以隻懲罰它們,但是如果有很多特征,并且我們不知道如何選擇關聯度更好的參數,如何縮小參數的數目等等,應該如何處理呢?

  因為我們并不知道是哪一個或哪幾個要去縮小,是以在正則化裡,需要減小代價函數中的所有特征值:

ML(附錄3)——過拟合與欠拟合

  上式中n是特征的個數,λ是正則化參數。需要注意的是,懲罰項從θ1開始。按照慣例,我們沒有去懲罰 θ0,是以 θ0 的值是大的,但在實踐中無論是否包括θ0,差異都不大。

   稱為正則化項,其目标有兩個:希望假設能夠很好地适應訓練集,想要保持參數值較小。λ的目的就是控制二者之間的平衡,進而保持假設的形式相對簡單,以避免過度的拟合。

  對J(θ)求偏導:

ML(附錄3)——過拟合與欠拟合

  如果使用梯度下降:

  如果λ很小,則喪失了正則化的意義,相當于所有懲罰項都接近于0,這又将導緻過拟合;如果λ 很大,将會非常大地懲罰參數θ1 θ2 θ3 θ4 …,最終會使所有這些參數都接近于零,導緻欠拟合,如下圖所示:

ML(附錄3)——過拟合與欠拟合

  如果我們這麼做,相當于去掉了θj≈0對應的特征,隻留下了一個簡單的假設,這個假設隻能表明房屋價格等于 θ0 的值,類似于拟合了一條水準直線,對于資料來說這就是一個欠拟合,它不會去趨向大部分訓練樣本的任何值。

其它方法

  上面的正則化方法實際上被稱為L2正則化(L2 regularization),其原型是新損失函數等于原損失函數加上正則化項,其中J0(θ)表示原損失函數:

ML(附錄3)——過拟合與欠拟合

  對θj求導:

ML(附錄3)——過拟合與欠拟合

  此外還有L1正則化(L1 regularization):

ML(附錄3)——過拟合與欠拟合

  L1正則假設特征是拉普拉斯分布,可以保證模型的稀疏性,也就是某些參數等于0;L1正則化導出的稀疏性質已被廣泛用于特征選擇,可以從可用的特征子集中選擇有意義的特征。

  L2正則假設特征是高斯分布,通常傾向讓權值盡可能小,最後構造一個所有參數都比較小的模型。因為一般認為參數值小的模型比較簡單,能适應不同的資料集,也在一定程度上避免了過拟合現象。參數足夠小,資料偏移得多一點也不會對結果造成什麼影響,可以說“抗擾動能力強”。

  此外,還有early stopping、資料集擴增(Data augmentation)、dropout等方法能夠降低過拟合。

  參考:

  Ng視訊《Logistic Regression》

  周志華《機器學習》

  《機器學習導論》

  作者:我是8位的

  出處:http://www.cnblogs.com/bigmonkey

  本文以學習、研究和分享為主,如需轉載,請聯系本人,标明作者和出處,非商業用途! 

  掃描二維碼關注公衆号“我是8位的”

  

ML(附錄3)——過拟合與欠拟合

繼續閱讀