二乗誤差の分解#
式の変形の仕方によって
MSEをBiasの二乗とVarianceに分解できること
二乗誤差に対する最適解(ベイズ規則 Bayes rule)が条件付き期待値であること
という異なる2つの説明ができる
二乗誤差のBias-Variance分解#
予測値
もっと丁寧に書くと…
目的変数
あるデータ点
これについて期待値をとった
と消失するので、
参考:はじパタ 第1章、PRML上3.2
実際に等式が成り立つのか実証的に確認#
Show code cell source
# 二乗誤差の期待値とBias^2 + Varianceが一致するか
import pandas as pd
import numpy as np
# データを取り直して予測値を出し直したと仮定
n = 1000
y_true = 3
# 正規分布に従ってばらついたと仮定(実際も中心極限定理により正規分布に従うはず)
np.random.seed(0)
df = pd.DataFrame({"y_hat": np.random.normal(loc=y_true, scale=1, size=n)})
df["y"] = y_true # ある一点の実測値
# display(df.tail(3))
bias = df["y"].mean() - df["y_hat"].mean()
variance = df["y_hat"].var()
epe = ((df["y"] - df["y_hat"])**2).mean()
print(f"""
- bias: {bias:.3f}
- variance: {variance:.3f}
二乗誤差の期待値とBias^2 + Varianceが一致するか
- 二乗誤差の期待値 EPE: {epe:.3f}
- Bias^2 + variance: {bias**2 + variance:.3f}
- 差分(EPE - bias^2 + variance): {epe - (bias**2 + variance):.3f}
""")
- bias: 0.045
- variance: 0.975
二乗誤差の期待値とBias^2 + Varianceが一致するか
- 二乗誤差の期待値 EPE: 0.976
- Bias^2 + variance: 0.977
- 差分(EPE - bias^2 + variance): -0.001
二乗誤差のベイズ規則#
実測値
損失関数として二乗損失
となる。よって
この期待値を条件付き期待値に置き換えて考えると、ベイズ規則
によって与えられる。