Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Decision Tree

決定木は、データから学習した特徴量に関する一連の質問によって予測します。分割方法の選択、枝刈りによる過学習の抑制、コードを解説します。

決定木は、入力の特徴量について「収入は5万ドルを超えていますか?」のような一連のはい・いいえの質問をし、答えに従ってルートから予測値を持つ葉までたどる教師あり学習モデルです。分類木は各葉でクラスを予測し、回帰木は数値を予測します。すべての予測を読みやすいルールの連鎖で表現できるため、決定木は説明可能なAI(XAI)の標準的なツールです。また、ランダムフォレストや勾配ブースティングアンサンブルを構成する基本要素でもあり、これらは中規模の表形式データセットでは今もディープラーニングを上回る性能を発揮します。Breiman、Friedman、Olshen、StoneによるCARTアルゴリズム(1984年)と、Ross QuinlanによるID3(1986年)およびC4.5(1993年)が、データから木を学習する方法を確立しました。

決定木の構築方法#

木は再帰的分割により、上から下へ成長します。各ノードでアルゴリズムは分割候補をスコアリングします。分割候補は、特徴量と数値特徴量に対するしきい値で構成されます。2つの子ノードの同質性を最も高める分割を選び、各子ノードで探索を繰り返します。分類木では、ノード内のクラス比率に従ってラベルをランダムに割り当てた場合に、ノードからランダムに選んだサンプルを誤分類する確率であるジニ不純度、またはエントロピーを使って同質性を測定します。エントロピーの減少量は情報利得と呼ばれます。回帰木では、二乗誤差を最も減らす分割が選ばれ、各葉が学習サンプルのターゲット平均を予測します。ノードが純粋になった場合、サンプル数が少なすぎる場合、または最大深度に達した場合に成長は停止します。各分割では1ステップ先までしか考慮しないため、この貪欲探索で良好な木をすばやく構築できます。一方、最適であることが証明された木を見つける問題はNP困難です。

scikit-learnのDecisionTreeClassifierは、最適化されたCARTの実装です。この例では、アヤメのデータセットを使って深さ2の木を成長させ、学習したルールを出力します。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_text

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=42)

# A depth limit keeps the tree small enough to read and less prone to overfitting
clf = DecisionTreeClassifier(max_depth=2, random_state=42)
clf.fit(X_train, y_train)

print(export_text(clf, feature_names=iris.feature_names))
print(f"Test accuracy: {clf.score(X_test, y_test):.2f}")

この木が使うのは花弁の長さだけです。長さが2.45 cm以下の花はsetosa(クラス0)で、次のしきい値である4.75 cmによりversicolor(クラス1)とvirginica(クラス2)が分かれます。これらのルールは、保留しておいた花の97%を正しく分類します。

各分割はこの形式のしきい値ルールであり、木がデータから学習することも、人が手動で設定することもできます。UltralyticsのAIGymワークアウトモニターは、YOLO26の姿勢推定出力に対して、このようなルールを2つ手動で設定します。肩、肘、手首のキーポイントから計算した肘の角度が145°を超えるとフレームに「上」のラベルを付け、90°を下回ると「下」のラベルを付け、上から下に変わるたびに1回と数えます。

過学習と枝刈り#

すべての葉が純粋になるまで成長した木は、ノイズも含めて学習データを丸暗記するため、典型的な過学習が起こります。事前枝刈りでは、最大深度や葉あたりの最小サンプル数などの制限によって、成長を早期に止めます。事後枝刈りでは木を完全に成長させてから、寄与の小さい枝を取り除きます。scikit-learnではccp_alphaパラメーターで最小コスト複雑度枝刈りを実装しており、値が大きいほど多くの枝が刈り込まれます。どちらの制限もハイパーパラメーターであり、交差検証で選択します。

枝刈りした木でも分散は大きくなります。学習データが少し変わるだけで最上位の分割が変わり、その下のすべての分割も変わる可能性があります。アンサンブルでは、多数の木を組み合わせてこの問題に対処します。ランダムフォレストのようにブートストラップサンプルで学習した木を平均化するか、勾配ブースティングのように前の木の誤差を修正する木を1本ずつ追加します。

強みと制約#

決定木は数値特徴量とカテゴリ特徴量を一緒に扱え、特徴量のスケーリングが不要です。手動の特徴量エンジニアリングなしで交互作用や非線形効果を捉えられ、少数の比較で予測できます。分割は軸に平行なため、「支出が収入を上回る」のような対角線の境界を表現するには、比率の特徴量を追加しない限り、多数の階段状の分割が必要です。回帰木は各葉で一定の値を予測するため、線形回帰とは異なり、学習データの範囲を超える傾向を外挿できません。

用途#

  • 与信判断: 貸し手は浅い木や木ベースのスコアカードを使い、リスクに応じて申請を分類します。すべての判断を、その根拠となる収入、信用履歴、債務のしきい値までたどれます。
  • 臨床トリアージ: 決定木として構成された臨床判断ルールでは、バイタルサインや症状に基づいて患者を振り分けます。たとえば、患者に即時の画像検査が必要かどうかを判断します。
  • 顧客の解約: 木は利用状況、契約期間、サポート履歴に基づいて顧客を分類し、解約リスクの高いセグメントと低いセグメントに分けます。各セグメントの特徴は、経路をたどると平易な言葉で説明できます。
  • 予知保全: 振動、温度、稼働時間の特徴量を使った勾配ブースティング木により、次回のメンテナンス前に故障する可能性が高い機械を推定します。
  • ランダムフォレスト: ブートストラップサンプルと特徴量のランダムな部分集合で学習した多数の木を平均化します。単一の木が持つ読みやすさと引き換えに、精度と安定性を高めます。
  • XGBoost、LightGBM、CatBoost: 前の木の誤差を修正する木を1本ずつ追加する勾配ブースティングライブラリです。LightGBMは大規模データセットでの速度を重視し、CatBoostはカテゴリ特徴量をネイティブに扱うことを重視しています。
  • ディープラーニング: ニューラルネットワークは画像、音声、テキストの生データから特徴量を学習します。一方、木はテーブルの列としてすでに存在する特徴量で分割します。
  • 意思決定分析のツリー: オペレーションズリサーチや事業計画では、決定木はアナリストが手作業で描く図を指すこともあります。意思決定ノード、偶然ノード、利得を含み、期待値で選択肢を比較します。これは学習データから学習するのではなく、推定した確率に基づいて構築されます。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう