バイアスーバリアンス(+ノイズ分解)を導出する。(初歩なんだけど、誤解していたという次第。)
バイアス-バリアンス分解(+ノイズ)とは
バイアスーバリアンス分解は回帰の二乗誤差をバイアス(モデルの表現力不足)とバリアンス(過学習(偶然を必然と勘違いすること)による悪影響)に分解するものです。
これ自身は数学的な帰結ではあるものの、実際に誤差を分解する使い方はしないで、観念的に利用するのがメインの使い方になります。例えば、バイアス-バリアンスのトレードオフを示して、モデル選択や改善時にモデルの表現能力を調整したり、データ数を増やすか否かの判断を行うための(素人向けの)論拠とするために使うといった感じになります。まあ、機械学習や統計学界隈では基本的で知ってて当然といった内容なので、通常の議論ではわざわざ話にするようなものでもないのです。
ってな感じで、この分解の証明を初心者向け勉強会でしようとしたところ、意外と手間取り、色々とwebを探しても納得いく証明がなく苦労しました。(なんというか、分かってるのか?、勉強がてらに写経しているのか?といったブログが検索の上位にくる感じで苦労しました。Googleの技術力向上に期待笑)
結局、下記の東大の教科書の証明を確認したところ、「バイアスーバリアンス分解」ではなく、「バイアスーバリアンスーノイズ分解」になっていて、意外や意外という感じだったので、記事にしようと思った訳です。(実は下記の教科書を丁度2年くらい前に読んだはずなのに、完全に忘れていました。笑)
- 作者: 中川裕志,東京大学工学教程編纂委員会
- 出版社/メーカー: 丸善出版
- 発売日: 2015/11/01
- メディア: 単行本
- この商品を含むブログを見る
バイアス-バリアンス-ノイズ分解
説明変数と対応する目的変数について考えます。(ここで説明変数がであった時の目的変数をと表記するとします。また、説明変数も目的変数も、現実世界からサンプルして取得するため、確率変数であるとします。)
ここで二乗誤差の評価を行う予測モデルを考えます。学習に用いたデータを用いて学習を行い、について予測するとすると予測結果はと表すとします。
ここで、二乗誤差 \begin{align} E_{D}E_{x}E_{t_{x}} \left[ \left( t_{x} - y(x , D) \right)^{2} \right] \end{align} について考えます。
\begin{align} E_{D}E_{x}E_{t_{x}} \left[ \left( t_{x} - y(x , D) \right)^{2} \right] = & E_{x}E_{D}E_{t_{x}} \left[ \left( (t_{x} - E_{t_{x}}[t_{x}]) - (y(x , D) - E_{t_{x}}[t_{x}]) \right)^{2} \right]\\ = & E_{x}E_{D}E_{t_{x}} \left[ (t_{x} - E_{t_{x}}[t_{x}])^{2} - (y(x , D) - E_{t_{x}}[t_{x}])^{2} \right]\\ & + E_{x}E_{D}E_{t_{x}} \left[2(t_{x} - E_{t_{x}}[t_{x}]) \cdot (y(x , D) - E_{t_{x}}[t_{x}]) \right]\\ \end{align} とできますが、第二項は \begin{align} E_{x}E_{D}E_{t_{x}} \left[2(t_{x} - E_{t_{x}}[t_{x}]) \cdot (y(x , D) - E_{t_{x}}[t_{x}]) \right] &= 2E_{t_{x}} \left[(t_{x} - E_{t_{x}}[t_{x}]) \right] \cdot E_{x}E_{D} \left[(y(x , D) - E_{t_{x}}[t_{x}]) \right]\\ &= 2(E_{t_{x}}[t_{x}] - E_{t_{x}}[t_{x}]) \cdot E_{x}E_{D} \left[(y(x , D) - E_{t_{x}}[t_{x}]) \right] \\ &= 2E_{x}E_{D}\left[(0) \right] \cdot E_{x}E_{D} \left[(y(x , D) - E_{t_{x}}[t_{x}]) \right]\\ &= 0 \end{align} となるため、 \begin{align} E_{D}E_{x}E_{t_{x}} \left[ \left( t_{x} - y(x , D) \right)^{2} \right] = & E_{x}E_{D}E_{t_{x}} \left[ (t_{x} - E_{t_{x}}[t_{x}])^{2} + (y(x , D) - E_{t_{x}}[t_{x}])^{2} \right]\\ & - E_{x}E_{D}E_{t_{x}} \left[2(t_{x} - E_{t_{x}}[t_{x}]) \cdot (y(x , D) - E_{t_{x}}[t_{x}]) \right]\\ =& E_{x}E_{D}E_{t_{x}} \left[ (t_{x} - E_{t_{x}}[t_{x}])^{2} + (y(x , D) - E_{t_{x}}[t_{x}])^{2} \right]\\ =& E_{x}E_{t_{x}} \left[ (t_{x} - E_{t_{x}}[t_{x}])^{2}\right] + E_{x}E_{D}\left[ (y(x , D) - E_{t_{x}}[ t_{x} ])^{2} \right]\\ =& E_{x}E_{t_{x}} \left[ (t_{x} - E_{t_{x}}[t_{x}])^{2}\right] + E_{x}E_{D}\left[ \left( \left(y(x , D) - E_{D}[y(x , D)] \right) - \left(E_{t_{x}}[ t_{x} ] - E_{D}[y(x , D)] \right) \right)^{2} \right]\\ =& E_{x}E_{t_{x}} \left[ (t_{x} - E_{t_{x}}[t_{x}])^{2}\right] + E_{x}E_{D}\left[ \left(y(x , D) - E_{D}[y(x , D)] \right)^{2} + \left(E_{t_{x}}[ t_{x} ] - E_{D}[y(x , D)] \right)^{2} \right]\\ & -E_{x}E_{D}\left[2\left(y(x , D) - E_{D}[y(x , D)] \right) \cdot \left(E_{t_{x}}[ t_{x} ] - E_{D}[y(x , D)] \right)\right] \end{align} とできます。上式の第三項は \begin{align} &E_{x}E_{D}\left[2\left(y(x , D) - E_{D}[y(x , D)] \right) \cdot \left(E_{t_{x}}[ t_{x} ] - E_{D}[y(x , D)] \right)\right]\\ & =2E_{x}E_{D}\left[\left(y(x , D) - E_{D}[y(x , D)] \right)\right] \cdot E_{x}\left[\left(E_{t_{x}}[ t_{x} ] - E_{D}[y(x , D)] \right)\right]\\ & =2E_{x}\left[\left(E_{D}\left[y(x , D)\right] - E_{D}[y(x , D)] \right)\right] \cdot E_{x}\left[\left(E_{t_{x}}[ t_{x} ] - E_{D}[y(x , D)] \right)\right]\\ & = 2 \cdot 0 \cdot E_{x}\left[\left(E_{t_{x}}[ t_{x} ] - E_{D}[y(x , D)] \right)\right]\\ & = 0 \end{align} となるので、結局 \begin{align} E_{D}E_{x}E_{t_{x}} \left[ \left( t_{x} - y(x , D) \right)^{2} \right] =& E_{x}E_{t_{x}} \left[ (t_{x} - E_{t_{x}}[t_{x}])^{2}\right] + E_{x}E_{D}\left[ \left(y(x , D) - E_{D}[y(x , D)] \right)^{2} + \left(E_{t_{x}}[ t_{x} ] - E_{D}[y(x , D)] \right)^{2} \right]\\ & -E_{x}E_{D}\left[2\left(y(x , D) - E_{D}[y(x , D)] \right) \cdot \left(E_{t_{x}}[ t_{x} ] - E_{D}[y(x , D)] \right)\right]\\ =& E_{x}E_{t_{x}} \left[ (t_{x} - E_{t_{x}}[t_{x}])^{2}\right] + E_{x}E_{D}\left[ \left(y(x , D) - E_{D}[y(x , D)] \right)^{2} \right]\\ & + E_{x}\left[ \left(E_{t_{x}}[ t_{x} ] - E_{D}[y(x , D)] \right)^{2} \right] \end{align} とできます。
第一項)^{2}] ]は目的変数の平均からの乖離(分散)を表しているため、説明変数上のノイズとして解釈でき、第二項 ] は学習データによるモデルのバラツキを表しているので、モデルのバリアンスと解釈できます。最後の第三項]は、目的変数の平均(ノイズを除いたもの)と予測モデルの平均(過学習を除いたもの)の差の二乗なので、バイアスの二乗と解釈できます。
したがって、 \begin{align} 二乗誤差 = ノイズ + バリアンス + バイアス^{2} \end{align} と二乗誤差を分解できることが分かります。
まとめ
二乗誤差をバイアス-バリアンス(+ノイズ)への分解を導出しました。内容としては簡単な導出ですが、このくらいの基礎的な内容でも意外と誤って認識していることがあるんだなといった良い教訓が得れました。(以後気をつけよう笑)