正則化即爲對學習算法的修改,旨在減小泛化偏差而不是訓練偏差。web
先來講一下擬合的概念,擬合併非特指某一種方法,而是指一種數據處理的方式。簡單的說就是你有一組數據,覺着這組數據和一個已知的函數很類似,爲了獲得這個最能表示這組數據特徵的函數,經過擬合(具體的方法不少哦)這種方式求得參數。算法
對於擬合的表現,可分爲三種狀況:
微信
欠擬合編輯器
沒法很好的擬合訓練集中的數據,預測值和實際值誤差很大。特徵選少了時易出現這類狀況。(相似上課不學習,下課都不會)
函數
優良的擬合 學習
不管是訓練集數據仍是不在訓練集中的預測數據,都能給出較爲正確的結果。spa
過擬合
.net
能很好的擬合訓練集中的數據,可是對於不在訓練集中的新數據偏差會很大,泛化能力弱。這類狀況出現於特徵選多了。3d
PS:泛化能力指學習模型對新數據的預測能力。orm
線性模型中的擬合狀況:
左圖欠擬合。
右圖過擬合。
邏輯分類模型中的擬合狀況。
左圖欠擬合。
右圖過擬合。
爲了度量擬合表現,有兩個概念須要知道:
誤差(bias)
值模型的預測值和實際值的偏離程度。誤差越大,預測值偏離真實值越厲害。
方差(variance)
指模型預測值的離散程度或變化範圍。方差越大,數據的分佈越分散,函數波動越大,泛化能力越差。方差低意味着擬合曲線的穩定性高,波動小。
據此,咱們有對同一數據的各種擬合狀況以下圖:
由上圖可知:高誤差意味着欠擬合,高方差意味着過擬合。
咱們應儘可能使得擬合模型處於低方差(較好地擬合數據)狀態且同時處於低誤差(較好地預測新值)的狀態。
實際狀況中咱們的學習算法常常會用到不少特徵,當有這麼多特徵的時候,咱們的繪圖也會變得很困難,經過可視化來決定保留哪些特徵變量也更難。好比預測房價,可能有不少不少的特徵跟房價都有關係,可是咱們卻只有不多的訓練數據,就會出現過分擬合的問題。
避免過擬合的方法有:
減小特徵的數量
手動選取需保留的特徵
使用模型選擇算法來選取合適的特徵。
PS:減小特徵的方式易丟失有用的特徵信息。
正則化
可保留全部參數(許多有用的特徵都能輕微影響結果)。
減小懲罰各參數大小(magnitude),以減輕各參數對模型的影響程度。
PS:當有不少參數對於模型只有輕微影響時,正則化方法的表現很好
不少時候因爲特徵數量過多,容易出現過擬合,可是咱們又很難選出不要的特徵或者全部特徵對咱們都相當重要,這時候應用正則化方法就是個很好的選擇啦。
爲了保留各個參數的信息,修改代價函數爲:
上述公式中咱們在代價函數中加入了θ3和θ4的懲罰項。若是要最小化懲罰函數J(θ),那麼勢必要減少θ3和θ4的值,從而使得1000*θ3的平方和1000*θ4的平方這兩項值很小,能夠說這時θ3和θ4的值會變得很是小,能夠說近似沒有,假設函數變得簡單了,從而在保留各個參數的條件下避免了過擬合問題。
經過上面的介紹咱們知道,有時候沒法肯定移除哪一個特徵時,能夠經過更改代價函數J(θ)來避免過擬合,可是決定減小哪一個θ參數也是一個問題,這裏咱們能夠統一懲罰除θ0以外的全部參數。
PS:這是種約定俗成的作法,和懲罰包括θ0在內的全部參數其實沒有任何區別。
改進後的代價函數J(θ):
其中:
λ:正則化參數,相似於學習速率,也須要咱們自行對其選擇一個合適的值,λ>0。
不懲罰參數θ0。
是正則化項。
λ在上述公式中起着學習效率的做用。
過大
致使模型欠擬合。(θ1至θj所有近似於0,假設函數可能變成近似等於θ0的一條直線。)
沒法正常除去過擬問題。
梯度降低可能沒法收斂。
太小
沒法避免過擬合。(等於沒有)
在全部可能選擇的模型中,可以很好地解釋已知數據而且十分簡單纔是最好的模型,也就是應該選擇的模型。
正則化是結構風險最小化策略的實現,是去過擬合問題的典型方法,雖然看起來多了個一參數多了一重麻煩,可是有自動選取正則化參數的方法(後文會介紹)。模型越複雜,正則化參數值就越大。
應用正則化的線性迴歸梯度降低算法:
也能夠移項獲得更新表達式的另外一種表示形式
至關於θj乘以比1小一點的數(好比0.99),咱們每次都把參數縮小一點,而後進行和以前同樣的更新操做。
應用正則化的標準方程法:
這裏簡單介紹一下標準方程法。
對於一些線性迴歸的問題,用標準方程法求解參數θ的最優值會更好。
要使得J(θ)最小,即爲最低點,則使。
最終公式(特徵矩陣X、輸出矩陣Y、特徵參數矩陣θ帶入J(θ)中進行推導便可):
梯度降低缺點:
須要選擇學習效率α。(須要不斷嘗試)
須要迭代不少次。
梯度降低優勢:
在特徵很是多的時候能很好運行。
標準方程法缺點:
若是特徵很是多就會計算很慢。
標準方程法缺點:
不須要學習效率和迭代,更加方便快捷。
吳恩達教授本身的經驗:特徵一萬如下使用標準方程法,一萬左右會考慮使用梯度降低法,一萬以上使用梯度降低法。
使用計算出來的θ,可使得代價函數J(θ)最小化,這時候的J(θ)是沒有通過正則化的。
正則化後的方程:
其中:
λ·L:正則化項。(λ>0)
L:第一行第一列爲0的n+1維單位矩陣。
Python表示:
正則化能夠解決正規方程法中不可逆的問題,即增長了λ·L正則項後,能夠保證XTX+λ·L可逆,即使XTX不可逆。
這裏擴展一下正規方程法中公式中(XTX)可能存在不可逆的狀況,不可逆矩陣稱爲奇異矩陣或退化矩陣。
XTX出現不可逆的狀況其實不多發生。
若是XTX不可逆,一般有兩種最多見的緣由:
因爲某種緣由,學習問題包含了多餘的特徵。
例如:在預測房價時有兩個特徵,一個是x1以平方英尺爲單位的房子的面積,一個是x2以平方米爲單位的房子的面積。由於1米等於3.28英尺,x1=3.28的平方*x2。兩個特徵不能像這樣用線性方程聯繫起來,這樣XTX將是不可逆的。
有太多的特徵(m<=n,即特徵數量大於樣本數量)
若是發現XTX是不可逆的,建議看特徵中是否有一些多餘的特徵,相似x1和x2這樣線性相關的,能夠刪除一個沒必要要二者都保留,直到沒有多餘特徵爲止。若是沒有對於特徵,咱們要檢查一下特徵數量,若是特徵數量實在太多,少一點又不會影響的話,咱們要刪除一些特徵或者考慮正則化。
總之出現不可逆矩陣的狀況極少發生。
爲邏輯迴歸的代價函數添加正則化項:
從而有應用正則化的邏輯迴歸梯度降低算法:
本文分享自微信公衆號 - 小啦的學習筆記(woshiguolala)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。