1. 程式人生 > >正則化——“偏差(bias)”與“方差(variance)”

正則化——“偏差(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)中得到不同的模型,然後用“交叉驗證集”驗證;

取“交叉驗證誤差”最小的那個模型;

將最終得到的模型運用於測試集,測試模型的表現。


下圖為不同λ下“訓練誤差”和“交叉驗證誤差”的變化

可以得到

  • 當λ很小時,模型處於“高方差”狀態,“訓練誤差”很小,“交叉驗證誤差”較大
  • 當λ很大時,模型處於“高偏差”狀態,“訓練誤差”和“交叉驗證誤差”都很大