正則化——“偏差(bias)”與“方差(variance)”
正則化後的線性迴歸模型
模型
\[{h_\theta }\left( x \right) = {\theta _0} + {\theta _1}x + {\theta _2}{x^2} + {\theta _3}{x^3} + {\theta _4}{x^4}\]
\[J\left( \theta \right) = \frac{1}{{2m}}\left[ {\sum\limits_{i = 1}^m {{{\left( {{h_\theta }\left( {{x^{\left( i \right)}}} \right) - {y^{\left( i \right)}}} \right)}^2}} + \lambda \sum\limits_{j = 1}^n {\theta _j^2} } \right]\]
當正則化引數λ很大時
\[{h_\theta }\left( x \right) \approx {\theta _0}\]
這時處於“高偏差(High bias)”(underfit)的情況
當正則化引數很小(λ=0)時
\[{h_\theta }\left( x \right) = {\theta _0} + {\theta _1}x + {\theta _2}{x^2} + {\theta _3}{x^3} + {\theta _4}{x^4}\]
這時處於“高方差(High variance)”(overfit)
當正則化引數λ適當時
模型處於“Just right”狀態
如何選擇正確的λ呢?
除了以下兩個公式
\[{h_\theta }\left( x \right) = {\theta _0} + {\theta _1}x + {\theta _2}{x^2} + {\theta _3}{x^3} + {\theta _4}{x^4}\]
\[J\left( \theta \right) = \frac{1}{{2m}}\left[ {\sum\limits_{i = 1}^m {{{\left( {{h_\theta }\left( {{x^{\left( i \right)}}} \right) - {y^{\left( i \right)}}} \right)}^2}} + \lambda \sum\limits_{j = 1}^n {\theta _j^2} } \right]\]
再定義
\[\begin{array}{l}
{J_{train}}\left( \theta \right) = \frac{1}{{2{m_{train}}}}\sum\limits_{i = 1}^{{m_{train}}} {{{\left( {{h_\theta }\left( {{x^{\left( i \right)}}} \right) - {y^{\left( i \right)}}} \right)}^2}} \\
{J_{CV}}\left( \theta \right) = \frac{1}{{2{m_{CV}}}}\sum\limits_{i = 1}^{{m_{CV}}} {{{\left( {{h_\theta }\left( {x_{CV}^{\left( i \right)}} \right) - y_{CV}^{\left( i \right)}} \right)}^2}} \\
{J_{test}}\left( \theta \right) = \frac{1}{{2{m_{test}}}}\sum\limits_{i = 1}^{{m_{test}}} {{{\left( {{h_\theta }\left( {{x^{\left( i \right)}}} \right) - {y^{\left( i \right)}}} \right)}^2}}
\end{array}\]
分別表示“訓練誤差”、‘“交叉驗證誤差”和“測試誤差”
選擇λ
嘗試如下λ
- λ=0----------->minJ(θ)----->Θ(1)------>JCV(Θ(1))
- λ=0.01------->minJ(θ)----->Θ(2)------>JCV(Θ(2))
- λ=0.02------->minJ(θ)----->Θ(3)------>JCV(Θ(3))
- λ=0.04------->minJ(θ)----->Θ(4)------>JCV(Θ(4))
- .
- .
- .
- λ=10--------->minJ(θ)----->Θ(12)------>JCV(Θ(12))
運用不同的λ去最小化“代價函式”得到不同的Θ;
不同的Θ帶入h(x)中得到不同的模型,然後用“交叉驗證集”驗證;
取“交叉驗證誤差”最小的那個模型;
將最終得到的模型運用於測試集,測試模型的表現。
下圖為不同λ下“訓練誤差”和“交叉驗證誤差”的變化
可以得到
- 當λ很小時,模型處於“高方差”狀態,“訓練誤差”很小,“交叉驗證誤差”較大
- 當λ很大時,模型處於“高偏差”狀態,“訓練誤差”和“交叉驗證誤差”都很大