← 機械学習に戻る

🌳 決定木

分類問題を木構造で理解しよう

🤔 決定木とは?

木構造で分類

決定木は、フローチャートのような木構造でデータを分類します

  • 質問を繰り返して分類
  • 「X < 300?」のように分岐
  • 最終的に葉で判定

分割基準の選び方

どの質問が最も効果的かを測る指標

  • ジニ不純度: データの混ざり具合
  • 情報利得: エントロピーを使った別の方法
  • 不純度が小さくなる質問を選ぶ

過学習に注意

最大深さで木の複雑さを制御

  • 深すぎる → 訓練データに過適合
  • 浅すぎる → 学習不足
  • 適切な深さを見つける

ステップ 1: データ入力

📝 やること

キャンバスをクリックして、2つのクラスのデータポイントを追加します。

  • クラス 0(赤): 例えば「不合格」「病気でない」など
  • クラス 1(緑): 例えば「合格」「病気」など

💡 ヒント: 決定木は直線的な境界を作ります(階段状の分割)

クラス 0(赤)
クラス 1(緑)

ステップ 2: 決定木の学習

🌲 やること

分割基準(ジニ不純度または情報利得)を使って決定木を構築します。

💡 どうやって分割を決める?

ジニ不純度(または情報利得)が最も改善する分割を選びます。 これは「どの質問が最もデータを綺麗に分けられるか」を表す指標です。 不純度が減少するほど、良い分割です。

最大深さの調整:

  • 深さ 1-2: シンプルな境界(学習不足の可能性)
  • 深さ 3-5: バランスが良い(推奨)
  • 深さ 6以上: 複雑な境界(過学習の可能性)

ステップ 3: 予測と評価

🎯 やること

学習した決定木で新しいデータポイントがどちらのクラスに分類されるか予測します。

予測の流れ:

  1. 木のルート(根)から開始
  2. 各ノードで条件を確認
  3. 左右の枝を選択
  4. 葉ノードで最終判定

💡 ヒント: 右側の木構造を見ると、どのように判定されたかが分かります

データと決定境界

決定木の構造

📊 分割基準の選び方

ジニ不純度(最もよく使われる指標):

データの混ざり具合を測る指標です。scikit-learnではデフォルトで使われます。

\[ Gini = 1 - \sum p_i^2 \]

  • Gini = 0: 全て同じクラス(純粋)
  • Gini = 0.5: 半々に混ざっている(2クラスの場合)

💡 ジニ不純度の利点: 計算が簡単で高速です。平方の計算だけで済むため、大規模なデータでも効率的に分割基準を決定できます。


エントロピーと情報利得(もう一つの方法):

情報理論に基づく指標です。エントロピーでデータの混ざり具合を測ります。

  • エントロピー = 0: 全て同じクラス(綺麗に分かれている)
  • エントロピー = 1: 半々に混ざっている(最も混雑)

\[ H = -\sum p_i \log_2(p_i) \]

情報利得(どれだけ整理されるか):

分割前のエントロピーから、分割後のエントロピーを引いた値

\[ IG = H(親) - \sum \frac{|子_i|}{|親|} H(子_i) \]

💡 どちらを使う? 実用上、ジニ不純度とエントロピーの結果はほぼ同じです。 ジニ不純度の方が計算が速いため、scikit-learnなど多くのライブラリでデフォルトになっています。 エントロピーは情報理論的に明確な意味がありますが、対数計算が必要で少し遅くなります。

💡 どちらの指標も、減少が大きいほど良い分割を意味します

📋 データ統計

データを追加してください

🌲 木の情報

決定木を構築してください

📈 モデル性能

決定木を構築してください