決定木で学ぶ過学習とBias-Variance Tradeoff

今回は機械学習における重要概念の1つである「過学習(Overfitting)」について、決定木モデルを用いて深さ(max_depth)を変化させながら学習を行った。

これまでTitanicデータセットを用いてロジスティック回帰を中心に学習してきたが、今回はモデルの複雑さと汎化性能の関係をより深く理解することが目的である。

決定木モデルの実装と評価

まず決定木モデルを用いて、max_depthを変更しながらtrain/testの精度を確認した。

from sklearn.tree import DecisionTreeClassifier

tree = DecisionTreeClassifier(max_depth=5, random_state=42)

tree.fit(X_train, y_train)

print("train")
print(tree.score(X_train, y_train))

print("test")
print(tree.score(X_test, y_test))

実行結果は以下の通りである。

train
0.9789325842696629

test
0.7597765363128491

この結果から、学習データに対しては非常に高い精度を示している一方で、テストデータでは精度が低下していることが分かる。

max_depthによる性能変化

決定木の深さを変更し、train/test精度の変化を確認した。

1   0.7879  0.7821
2   0.8033  0.7653
3   0.8342  0.7988
4   0.8384  0.7988
5   0.8623  0.8044
10  0.9185  0.7932
None 0.9789 0.7597

気づき

  • depthが増えるほどtrain精度は上昇する
  • test精度は途中でピークを迎え、その後低下する
  • max_depth=5付近が最もバランスが良い

これは典型的なBias-Variance Tradeoffの挙動である。

Cross Validationによる評価

単一のtrain/test splitでは評価が不安定になる可能性があるため、5-fold Cross Validationを実施した。

[0.81564246 0.81460674 0.82022472 0.78651685 0.85393258]
mean = 0.8181846713953927

この結果から、データ分割によるスコアのばらつきが存在することが分かる。

補足

  • 1回のtrain/test splitは偶然の影響を受ける
  • Cross Validationは複数回評価することで安定した指標を得る手法である

ロジスティック回帰との比較

同様にロジスティック回帰でもCross Validationを実施した。

[0.7877095  0.78089888 0.78089888 0.78651685 0.82022472]
mean = 0.7912497646098802

決定木(max_depth=5)と比較すると以下の結果となる。

Decision Tree : 0.8182
Logistic Reg   : 0.7912

考察

  • 決定木は非線形な関係を表現できるため精度が高い
  • ロジスティック回帰は線形モデルであり表現力が制限される
  • その代わり、ロジスティック回帰は安定性(低Variance)が高い

過学習の観察

決定木のmax_depthを制限しない場合、以下の結果となった。

train : 0.9789
test  : 0.7597

これは典型的な過学習である。

  • 学習データをほぼ完全に暗記している
  • 未知データへの汎化性能が低い

Bias-Varianceの整理

今回の結果は以下のように整理できる。

  • max_depth=1 → High Bias(未学習)
  • max_depth=5 → バランスが良い状態
  • max_depth=None → High Variance(過学習)

このバランスを調整することが機械学習における重要なタスクである。

今回の学び

  • train accuracyが高いことは必ずしも良いことではない
  • test accuracyやCross Validationが重要である
  • モデルの複雑さには最適点が存在する
  • Bias-Variance Tradeoffの理解が性能改善の鍵となる
  • Cross Validationにより評価の信頼性を高められる

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA