1. 程式人生 > >機器學習筆記:正則化

機器學習筆記:正則化

有這麼幾個問題:1、什麼是正則化?2、為什麼要用正則化?3、正則化分為哪幾類?

      在機器學習中我們經常看到在損失函式後會有一個正則化項,正則化項一般分為兩種L1正則化L2正則化,可以看做是損失函式的懲罰項懲罰項的作用我認為就是對模型中的引數限制,從而防止過擬合。

  •  L1正則化就是引數向量的1範數:對引數向量各個分量去絕對值求和
  •  L2正則化就是引數向量的2範數:對引數向量各個分量求平方和

線上性迴歸模型中使用L1正則化的模型叫做Lasso迴歸,使用L2正則化的模型叫做Ridge迴歸(嶺迴歸)。

那麼正則化是怎麼得來的呢?

最初始的問題還是如何防止過擬合。在這裡我們用一個多項式模型(h(θ) = θ0*x0 + θ1*x1 + .....+θn*xn)來代表我們的模型,為什麼能代表我們的模型呢?根據高數中的泰勒展開式,我們可以知道任何函式都可以用多項式去逼近(如lnx,e^x,logx等),不同的函式就是這些基礎函式的組合。我們假設模型的損失函式為J(θ)。我們的目標就是最小化J(θ)。

在我們訓練模型擬合引數的時,如何選擇合適的N(引數的個數)就很重要。N過大(每個特徵都對模型產生作用)就會對訓練集擬合的非常好(過擬合),N過小(對模型重要的特徵沒有包含在模型中)就會產生欠擬合。很顯然這兩種現象都是我們不想看到的。欠擬合可以通過增加模型中包含的特徵數量從而改善(這句話待定)。而過擬合就很難解決,我們也不知道哪些特徵是無用或用處不大的。所以一群聰明的人就想到了如何控制N的數量,而控制N的數量就是控制引數向量(θ

)中非零項的個數。所以聰明的人就想到了用0範數(向量中的非零項個數),那麼控制N的數量問題就變成了最小化引數向量(θ)的0範數(min||θ||o)。但是0範數求起來又很困難(NP難問題),所以就退而求其次去求1範數。為了保證求1範數和0範數效果是等價的,**的人總結出了下面的式子:


一定條件:包含了許多的演算法,例如主成分分析(PCA)等

綜上,我們希望最小化J(θ)的同時,還有一個限制條件就是引數向量(θ)的0範數,為了同時滿足這兩個條件,有點類似於拉格朗日乘子法,我們讓這兩項求和同時取最小值,從而得到了我們常見的帶L1正則化項的損失函式模型。

L2正則化就是一個道理,但是與L1有所取別:L2正則化會令每一個引數都儘可能的小但是都不會為0,L1會令引數等於0,所以更常用的還是L2正則化(每一個特徵對模型都有作用。)

參考資料:https://www.zhihu.com/question/20924039

                    https://blog.csdn.net/jinping_shi/article/details/52433975