AIインフォグラフィックス集

AI Infographics Collection

バイアスとバリアンスのトレードオフ

バイアスとバリアンスのトレードオフ

やさしく深掘りする機械学習の核心
📅 2025-04-28
📊 機械学習解説シリーズ

📌 1. 用語をざっくり定義

用語 ざっくり意味 イメージ
バイアス (Bias) モデルの"かたより"
真値からどれだけズレているか
ダーツが的の外周にまとまって外れている
バリアンス (Variance) 予測の"ばらつき"
データが変わると結果がどれだけ動くか
ダーツがあちこちに散らばる
直感
高バイアス = 頭が固い → 学習不足(Underfitting)
高バリアンス = 神経質 → 学習しすぎ(Overfitting)
🎯 🎯 🎯 🎯
高バイアス
🎯 🎯 🎯 🎯
高バリアンス

🧮 2. 数式で見る関係 — MSE の分解

MSE 平均二乗誤差 = (Bias)² かたより + Variance ばらつき + σ² 観測ノイズ
Bias²
モデルの構造的ズレ
Variance
学習データが変わるたびの不安定さ
σ²
どうにもできないノイズ
📍 ゴール:
Bias² と Variance を同時に最小化。
ただし片方を下げるともう片方が上がりやすい
トレードオフ

🔄 3. モデル複雑度との関係

シンプル
(線形回帰)
最適領域
複雑
(高次数多項式)
高バイアス
低バリアンス
ベストバランス
低バイアス
高バリアンス
バイアス
バリアンス
モデル複雑度の影響:
左端: 直線で全部表そうとして外しまくる → 高バイアス
右端: 全点を通る多項式で"記憶"→新データに弱い → 高バリアンス
真ん中あたりに 最適解 がある

🧪 4. 実験で体感してみる(Python)

# 疑似データ: sin波 + ノイズ X = np.linspace(0, 2*np.pi, 100)[:, None] y = np.sin(X).ravel() + rng.normal(scale=0.3, size=X.shape[0]) # データ分割 Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.5) # 多項式次数を変えて誤差を計測 degrees = range(1, 16) train_err, test_err = [], [] for d in degrees: model = make_pipeline(PolynomialFeatures(d), LinearRegression()) model.fit(Xtr, ytr) train_err.append(mean_squared_error(ytr, model.predict(Xtr))) test_err.append(mean_squared_error(yte, model.predict(Xte)))
モデル次数 MSE Train Test 高バイアス領域 高バリアンス領域 最適領域
実験から得られる知見:
低次数(1–2): Train/Test とも誤差大 → 高バイアス
高次数(11–15): Train 誤差ほぼ 0、Test は急上昇 → 高バリアンス
中間(4–6) が最適領域

🛠 5. バイアスとバリアンスを調整する5つの手段

手段 バイアス バリアンス コアアイデア
モデルを複雑に 非線形層を追加、深い NN
正則化 (L1/L2, Dropout) 重みを縛り過学習抑制
データを増やす バリアンスが統計的に安定
アンサンブル (Bagging) 複数モデルの平均でばらつきを打ち消す
クロスバリデーション 観測 観測 汎化性能を見積もり最適複雑度を選択
💡 モデル調整のコツ
過学習に悩む時は「データ増量」と「正則化」の両方を試してみよう!

📋 6. 実務でのチェックリスト

学習曲線を描く
データ量 vs 精度で"バリアンス優勢"か"バイアス優勢"か判断
正則化パラメータ λ をグリッドサーチ
λ 大 → バイアス↑/バリアンス↓、λ 小 → 逆
特徴量の質を高める
重要変数を増やすとバイアス↓; ただし過剰だとバリアンス↑
可視化で直感を補強
残差グラフ、部分依存プロットで偏りを目視
データを見る EDA・可視化 現状を把握 バイアス/バリアンス 施策を選定 手法の明確化 効果を測定 改善の定量化
💡 覚えておこう
実務では「手を動かしながら考える」のが最短ルート!
実験→考察→再実験のサイクルを回そう

📝 7. まとめ

モデル誤差は Bias² + Variance + ノイズ に分解できる
高バイアス=学習不足、高バリアンス=学習しすぎ
最適複雑度 は実験・可視化・正則化で探る
「データを増やす」はバリアンス低減に効く"万能薬"
迷ったら クロスバリデーション + 学習曲線 で状況を定量化しよう
📢 キーフレーズ
「シンプルすぎは鈍感、複雑すぎは神経質。
ちょうどよい"気の利いたモデル"を目指そう。」