Decision Tree
機械学習における決定木の基礎を解説します。この教師あり学習アルゴリズムが分類、回帰、説明可能なAIを実現する仕組みを学びます。
決定木は、分類タスクと回帰タスクの両方に使用される基本的な教師あり学習アルゴリズムです。フローチャートのような構造として機能し、内部ノードは属性に対する「テスト」(コインを投げたときに表か裏かなど)を表し、各ブランチはテストの結果を表し、各リーフノードはクラスラベルまたは連続値の判定を表します。透明性が高いため、決定木は説明可能なAI (XAI)で高く評価されており、関係者は予測に至るまでに使用されたロジックの正確な経路を追跡できます。決定木は、より複雑な機械学習 (ML)の概念を理解するための基盤となり、構造化データの分析において現在も広く利用されています。
基本構造と機能#
決定木のアーキテクチャは、上下を逆さにした本物の木に似ています。決定木は、データセット全体を含むルートノードから始まります。次にアルゴリズムは、データを可能な限り同質なサブセットに分割するための最適な特徴量を探します。このプロセスには、次の処理が含まれます:
- 分割: 最も重要な属性に基づいて、データセットをサブセットに分割します。
- 剪定: 過学習(モデルがトレーニングデータ内のノイズを記憶してしまう状態)を防ぐため、重要度の低いブランチを削除します。
- リーフノード: 予測または分類を提供する最終的な終端です。
このフローを理解することは、予測モデリングに取り組むデータサイエンティストにとって重要です。モデルの複雑さと汎化性能のトレードオフが明確になるためです。理論的基盤については、Scikit-learnのドキュメントで詳しく学習できます。
関連アルゴリズムとの比較#
単一の決定木は強力ですが、より高度なアルゴリズムによって対処されることの多い制限もあります。
- 決定木とランダムフォレストの比較: 単一の木は不安定になる場合があり、データが少し変わるだけで構造が大きく変化する可能性があります。ランダムフォレストは、多数の木からなるアンサンブルを構築し、それらの予測を平均する(バギング)ことでこの問題に対処し、安定性と精度を大幅に向上させます。
- 決定木とXGBoostの比較: 単独で使用する木とは異なり、XGBoostのような勾配ブースティングフレームワークは、木を順番に構築します。新しい木はそれぞれ、前の木の誤りを修正しようとします。このブースティング手法は、表形式のデータ分析コンペティションで現在の業界標準となっています。
- 決定木とディープラーニングの比較: 決定木は、構造化された表形式データに優れています。一方、画像や動画のような非構造化データでは、ディープラーニング (DL)モデルのほうが優れています。YOLO26のようなアーキテクチャは、畳み込みニューラルネットワーク (CNNs)を使用して生のピクセルから特徴量を自動的に抽出しますが、これは決定木では効果的に実行できません。
実世界での利用例#
決定木は、自動化された意思決定について明確な監査証跡が必要な業界で広く使用されています。
-
金融リスク評価: 銀行やフィンテック企業は、融資申請の評価に決定木を使用します。収入、信用履歴、雇用状況などの属性を分析することで、モデルは申請者を「低リスク」または「高リスク」に分類できます。このデータマイニングの活用により、金融機関は債務不履行率を効果的に管理できます。ビジネスの文脈における決定木については、IBMによる解説をご覧ください。
-
医療診断とトリアージ: ヘルスケアAIソリューションでは、決定木が患者の症状と検査結果に基づいて状態を体系的に除外し、医師を支援します。たとえば、トリアージシステムは木構造を使用して、患者に直ちに救急医療が必要か、通常の診察でよいかを判断し、業務効率を高めることができます。
実装例#
コンピュータビジョンのパイプラインでは、物体検出器が生成した表形式の出力(バウンディングボックスのアスペクト比やカラーヒストグラムなど)を分類するために、決定木が使用されることがあります。次の例では、広く利用されているScikit-learnライブラリを使用して、シンプルな分類器をトレーニングします。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Load dataset and split into training/validation sets
data = load_iris()
X_train, X_val, y_train, y_val = train_test_split(data.data, data.target, random_state=42)
# Initialize and train the tree with a max depth to prevent overfitting
clf = DecisionTreeClassifier(max_depth=3, random_state=42)
clf.fit(X_train, y_train)
# Evaluate the model on unseen data
print(f"Validation Accuracy: {clf.score(X_val, y_val):.2f}")AIエコシステムにおける重要性#
決定木を理解することは、人工知能 (AI)の発展を把握するうえで重要です。決定木は、手動のルールベースシステムと、現代的なデータ駆動型自動化の橋渡しとなります。複雑なシステムでは、ニューラルネットワークと連携して動作することがよくあります。たとえば、YOLO26モデルがリアルタイムの物体検出を処理する一方で、後段の決定木が検出の頻度と種類を分析して特定のビジネスロジックをトリガーすることで、異なる機械学習 (ML)アプローチの相乗効果を示せます。
ビジョンモデルまたは表形式分類器のトレーニング用データセットを管理したい開発者は、Ultralytics Platformを活用してワークフローを効率化し、高品質なデータアノテーションと管理を実現できます。









