47-模型泛化與嶺迴歸
模型正則化(Regularization)
在上一篇部落格提到了過擬合這樣的問題或者解決我們的模型中含有巨大的方差這樣的問題,其中有一種非常標準的處理手段就是模型正則化(Regularization)。
那什麼是模型正則化呢?看下圖這個例子,這個圖就是我們之前使用多項式迴歸過擬合的一個例子。對於這根曲線來說,該多項式前的有一些係數會非常大,模型正則化做的事情就是希望能夠限制這些係數的大小。
在這裡,我們簡單的驗證一下過擬合的情況下前面係數是否非常大。
那麼模型正則化是怎樣解決這個問題呢?
我們回到線性迴歸問題中,最終求得的是一個最優解。
然後我們最終將目標式子化簡成:
但是這裡如果我們過擬合的話,這裡的
θ
θ
θ 就會非常大,那麼我們怎麼限制
θ
θ
θ 的係數不要太大呢?答案就是改變一下我們的損失函式,我們將我們的損失函式加入模型正則化:
我們在目標函式後面加了一項,那一項就是所有係數的平方和再乘以一個常數
α
/
2
α/2
α/2。所以我們想讓新增的一項儘可能的小,就要使得所有的
θ
θ
θ 儘可能小,這就是模型正則化的基本原理。
但是這個式子有一個值得注意的點,
i
i
i 是從 1 到
n
n
n 的,而不是從 0 開始的,意味著它不包括
θ
0
θ_0
θ0 這一項,
θ
0
θ_0
θ0 是截距,它決定了整個曲線的高低,但是它並不決定整個曲線每一部分的陡峭程度。所以在我們執行模型正則化的時候,不需要加上
θ
0
θ_0
那麼,我們把這一種模型正則化的方式稱為嶺迴歸(Ridge Regression)。
嶺迴歸(Ridge Regression)
下面我們就實際程式設計實現使用嶺迴歸的方式來限制 θ θ θ 的取值,最終得到的結果是怎樣的。
具體程式碼見 47 模型泛化與嶺迴歸.ipynb