機械学習でバイアス−バリアンストレードオフ(Bias-Variance Tradeoff(Decomposition))の話をよく目にするので自分なりに整理をしました。
参考文献
参考文献は以下の通りです。
- Bias–variance tradeoff - Wikipedia
- 計量経済学 計量経済学 ミクロデータ分析へのいざない
- 作者: 末石直也
- 出版社/メーカー: 日本評論社
- 発売日: 2015/07/23
- メディア: 単行本
- この商品を含むブログを見る
- はじめてのパターン認識
- 作者: 平井有三
- 出版社/メーカー: 森北出版
- 発売日: 2012/07/31
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 7回
- この商品を含むブログ (5件) を見る
Bias-Variance Tradeoffとは
Bias-Variance Tradeoffは $$ \begin{align} σ ^2 + \mathrm{Var} \big[ \hat{f}(x) \big] + ( f(x) - \mathrm{E} \big[ \hat{f}(x) \big])^2 \tag{1} \\ \end{align}$$
という様な式から判ることで、端的にいうと「単純なモデルは学習に用いるサンプルが変化しても関数の形は大きく変わらないが(低分散, Low Variance)、誤差(真の値とのズレ)が大きい(高バイアス, High Variance)。複雑なモデルは逆に、学習に用いるサンプルが変化すると関数の形が大きく変わる(高分散, High Variance)が、表現力が高いために誤差は小さくなる(低バイアス, Low Variance)。」ということです。
導出
先ずBias-Variance Tradeoffの式を導出してみましょう。次の様な回帰問題を考えます。
今、手元に母集団からサンプリングされた目的変数と説明変数のベクトルがあり、真のモデルがであるとします。は平均0で分散の確率変数です。私たちの目的は真のモデルをなるべく良く近似するモデルを見つけることです。
そこで構築したモデルの良さを図る指標として二乗誤差(MSE)を使い、手元のサンプルを用いて構築したモデルと真のモデルとのMSE]を見てましょう(が付いた文字は推定された変数・モデルであることを意味しています)。MSEの式を展開していくと、
$$ \begin{align} \mathrm{E} \big[ (y-\hat{y} )^2 \big] &= \mathrm{E}\big[( y^2 + \hat{f}(x)^2 - 2y \hat{f}(x) ) \big] \\ &= \mathrm{E}\big[ y^2 \big] + \mathrm{E}\big[( \hat{f}(x)^2 \big] - 2y\mathrm{E}\big[( \hat{f}(x) \big] \\ \end{align} $$
ここで $$\begin{align} \mathrm{Var} \big[ x \big] = \mathrm{E} \big[ x^2 \big] - \mathrm{E} \big[ x \big]^2 \\ \Leftrightarrow \mathrm{Var} \big[ x \big] +\mathrm{E} \big[ x \big]^2 = \mathrm{E} \big[ x^2 \big] \end{align}$$ より、
$$ \begin{align} &= \mathrm{Var} \big[ y \big] +\mathrm{E} \big[ y \big]^2 + \mathrm{Var} \big[ \hat{f}(x) \big] +\mathrm{E} \big[ \hat{f}(x) \big]^2 - 2y\mathrm{E}\big[( \hat{f}(x) \big] \\ &= \mathrm{Var} \big[ y \big] + \mathrm{Var} \big[ \hat{f}(x) \big] + ( \mathrm{E} \big[ y \big]^2+\mathrm{E} \big[ \hat{f}(x) \big]^2 - 2y\mathrm{E}\big[( \hat{f}(x) \big] ) \\ &= \mathrm{Var} \big[ y \big] + \mathrm{Var} \big[ \hat{f}(x) \big] + ( y ^2+\mathrm{E} \big[ \hat{f}(x) \big]^2 - 2y\mathrm{E}\big[( \hat{f}(x) \big] ) \\ &= \mathrm{Var} \big[ y \big] + \mathrm{Var} \big[ \hat{f}(x) \big] + ( y - \mathrm{E} \big[ \hat{f}(x) \big])^2 \\ &= σ ^2 + \mathrm{Var} \big[ \hat{f}(x) \big] + ( f(x) - \mathrm{E} \big[ \hat{f}(x) \big])^2 \\ \end{align} $$*1 となり先に掲載した(1)式が導出されました。
但し1行目→2行目の式変形は、 $$ \begin{align} \mathrm{E} \big[ y \big] = \mathrm{E} \big[ f(x)\big] + \mathrm{E} \big[\epsilon \big] = \mathrm{E} \big[ f(x)\big] = f(x) \end{align} $$ 最後から2行目→最終行の式変形は、 $$ \begin{align} \mathrm{Var} \big[ y \big] &= \mathrm{E} \big[ (f(x)- \mathrm{E} \big[f(x) \big] )^2 \big] \\ &= \mathrm{E} \big[ (f(x) +\epsilon - f(x) )^2 \big] \\ &= \mathrm{E} \big[ \epsilon ^2 \big] \\ &= \mathrm{Var} \big[ \epsilon \big] + \mathrm{E} \big[ \epsilon \big] ^2\\ &= σ^2\\ \end{align} $$ によります。
次頁ではこの式の意味するところを見てみます。
スポンサーリンク
解釈
得られた式を見てみましょう。 $$ \begin{align} σ ^2 + \mathrm{Var} \big[ \hat{f}(x) \big] + ( f(x) - \mathrm{E} \big[ \hat{f}(x) \big])^2 \\ \end{align}$$
この式はMSEを表すので、当然0に近いほどいいわけです。
各項を個別に見てみると、
第1項のは真のモデルに内在する撹乱項によるもので我々にコントロールは不可能です。
第2項の は予測値の分散を表します。ここでの期待値はサンプルに対する期待値なので、 予測値の分散が大きいということは学習データが変わると予測値も大きく変わることを意味します。これはモデルが学習データを過学習してしまうことで予測精度が悪化するということです。
第3項のはバイアス(真の値と予測値の期待値の差)の2乗を表します。予測値のバイアスが0に近づけばその2乗誤差も0に近づくことがわかると思います。
例
例を考えてみましょう。
をスカラー、をh次の多項式とし、これで真の関数を近似したいとします。hは次数を表すハイパーパラメータです。
(E.g. で、で(定数関数)。)
、つまり定数関数の時予測値はに依存しないので、予測値の分散はになります。しかしこのと真の値との誤差が大きい(予測が全然当たらない)ことは明らかでしょう。
一方での様にhが大きいモデルは表現力が高いので複雑なデータにもキレイに当てはまるようにパラメータを学習できます(Low Variance)が、学習データにオーバーフィットしてしまいデータが少し変わるとその関数の見た目が大きく変わってしまいます(High Variance)。
具体的な図は、はじめてのパターン認識のp.18の図や参考文献のwikipedia
の右側の図を御覧ください。
まとめ
以上の様に真のと予測されたの誤差をMSEで測ると、バイアスと、バリアンスと、誤差の分散に分解できることがわかりました。モデルでは改善できない誤差の分散を除くと、モデルが単純であればバイアスは小さくなるがバリアンスは大きくなり、モデルが複雑であればバリアンスは小さくなるがバイアスは大きくなります。つまり我々はMSEを最小にするような適度に複雑なモデルを見つければ良い予測を行うことが出来るわけです。 実際には例で上げたようなモデルの複雑さを決めるハイパーパラメータをCV等で探します。
*1:何故かσが\sigmaで表示されないのははてなの環境の問題……?