デシジョン ツリーは、分類および回帰問題を解決するために一般的に使用される機械学習アルゴリズムです。これは、指定された入力特徴に基づいてデータを分析および予測できるツリー構造ベースのモデルです。
決定木の基本構造はノード (Node) とエッジ (Edge) で構成されます。ツリーの最上部はルートノード(Root Node)と呼ばれ、ツリーの最下部は葉ノード(Leaf Node)と呼ばれます。デシジョン ツリーでは、各内部ノードは機能のテストを表し、各リーフ ノードはクラス ラベルまたは回帰値を表します。
デシジョン ツリーの構築プロセスはルート ノードから開始され、データの分析を通じて最適な特徴が選択され、ツリーの分岐が構築されます。最良の特徴を選択する基準は、通常、情報利得、ジニ指数、平均二乗誤差などの指標に基づきます。選択された特徴に従ってデータを分割することによって複数のサブセットが取得され、特定の停止条件 (最大深度に達した、サンプル数が不十分など) が満たされるまで同じ構築プロセスが各サブセットに再帰的に適用されます。
デシジョン ツリーの中心的な考え方は、一連の特徴に基づいてデータを分割し、予測と意思決定のためのツリー構造を構築することです。
デシジョン ツリーの核となる考え方は次のように要約できます。
-
特徴の選択: デシジョン ツリーは、最適な特徴を選択することによってデータ セグメンテーションを実行します。各ノードでは、各特徴の重要性がいくつかの指標 (情報ゲイン、ジニ係数など) を使用して評価され、現在のノードで最大の分類能力を持つ特徴がセグメンテーションの基礎として選択されます。
-
データのセグメンテーション: 最適な特徴を選択した後、デシジョン ツリーは特徴の値に従ってデータを分割し、複数のサブセットを形成します。各サブセットはブランチに対応し、各ブランチは可能な特徴値を表します。
-
再帰的構築: サブセットごとに、デシジョン ツリーは上記の手順を再帰的に適用してサブツリーを構築します。これは、最大深度に達する、サンプル数が不十分になるなど、特定の停止条件が満たされるまで、最適な特徴を選択してデータを分割するプロセスがサブセットごとに繰り返されることを意味します。
-
リーフ ノード ラベル: デシジョン ツリーの構築中、各リーフ ノードは最終的なカテゴリ ラベルまたは回帰値を表します。分類問題では、各リーフ ノードはサブセット内のサンプルの多数派カテゴリに従って決定できるカテゴリ ラベルを表します。回帰問題では、各リーフ ノードは回帰値を表し、回帰値は平均または中央値に従って決定できます。決定するサブセット内のサンプル数。
-
予測と意思決定: 新しいサンプルがデシジョン ツリーに入力されると、特徴の値に従ってリーフ ノードに到達するまでツリーのブランチを下っていきます。次に、リーフ ノードのクラス ラベルまたは回帰値に基づいて予測または決定が行われます。
デシジョン ツリーの中心的な考え方は、特徴の選択とデータ セグメンテーションを通じて、強力な解釈可能性と予測能力を備えたモデルを構築することです。最適な特徴を継続的に選択し、データを分割することにより、デシジョン ツリーは予測と意思決定のプロセスを簡単かつ直感的に行う階層を形成できます。さらに、デシジョン ツリーは離散特徴と連続特徴の両方を処理でき、分類問題と回帰問題の両方に使用できます。
分類問題では、決定木の葉ノードはさまざまなクラス ラベルを表します。予測段階では、入力サンプルは特徴量の値に応じて決定木の枝を下りて葉ノードに到達し、葉ノードのカテゴリを予測結果として出力します。
回帰問題では、決定木の葉ノードが回帰値を表します。予測処理も分類と同様で、特徴量の値が決定木を下りて葉ノードに到達し、葉ノードの回帰値が予測結果として出力されます。
デシジョン ツリーには次の利点があります。
- 分かりやすく説明しやすい:決定木の構造を直感的に表現でき、予測結果の根拠を木の枝やノードに応じて説明できます。
- 離散特徴と連続特徴の両方で動作する: デシジョン ツリーは、特徴の特別な前処理を必要とせずに、離散特徴と連続特徴の両方を処理できます。
- 複数出力の問題を処理できる: デシジョン ツリーを拡張して、複数出力の問題を解決できます。つまり、各リーフ ノードは複数のカテゴリ ラベルまたは回帰値を表すことができます。
ただし、デシジョン ツリーにはいくつかの制限もあります。
- オーバーフィットしやすい: デシジョン ツリーは過度に複雑なツリー構造を生成する傾向があり、その結果、トレーニング データへのオーバーフィットが発生し、目に見えないデータのパフォーマンスが低下します。過剰適合の問題は、枝刈りなどの手法によって軽減できます。
- ノイズと外れ値に敏感: デシジョン ツリーはノイズと外れ値に敏感であり、予測が不安定になる可能性があります。
- 特徴間の相関が強いデータには適さない: デシジョン ツリーは各ノードで 1 つの特徴のみを考慮するため、相関の強い特徴を持つデータではうまく機能しません。
デシジョン ツリーのいくつかの制限を克服するために、ランダム フォレスト、勾配ブースティング ツリーなど、いくつかの改良されたデシジョン ツリー アルゴリズムが開発されました。これらのアルゴリズムは、複数のデシジョン ツリーを組み合わせることで予測パフォーマンスを向上させ、デシジョン ツリーの制限にある程度対処します。
以下は、Python と Scikit-learn ライブラリを使用した、単純なデシジョン ツリーのコード例です。
これは、さまざまなデータセットや問題に合わせて、必要に応じて変更および拡張できるデシジョン ツリー コードの簡単な例です。
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn import metrics
# 加载示例数据集(这里使用鸢尾花数据集)
iris = datasets.load_iris()
X = iris.data # 特征
y = iris.target # 标签
# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
# 创建决策树分类器
clf = DecisionTreeClassifier()
# 在训练集上训练决策树模型
clf.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = clf.predict(X_test)
# 评估模型性能
print("准确率:", metrics.accuracy_score(y_test, y_pred))
上記のコードでは、必要なライブラリとモジュールが最初にインポートされます。次に、花の特徴とラベルを含むサンプル データセット (アイリス データセット) をロードしました。次に、データ セットがトレーニング セットとテスト セットに分割されます。ここでは関数を使用して、 train_test_split
指定された比率に従ってデータ セットを分割します。
clf
次に、class createを使用して、 デシジョン ツリー分類子オブジェクトが作成されます DecisionTreeClassifier
。次に、トレーニング セット データとラベルを使用してメソッドが呼び出され、fit
デシジョン ツリー モデルがトレーニングされます。
トレーニングが完了したら、テスト セット データを使用して predict
メソッドを呼び出して予測を行い、予測結果を に保存します y_pred
。
最後に、 metrics.accuracy_score
関数を使用して予測結果の精度を計算し、出力します。
デシジョン ツリーで使用されるいくつかのテクニックを次に示します。
-
特徴の選択: 適切な特徴を選択することは、デシジョン ツリーのパフォーマンスにとって重要です。これらの特徴は、異なるクラスやリグレッサーをより適切に区別できる、より高い情報ゲインまたはジニ係数を持つものを選択する必要があります。
-
欠損値の処理: デシジョン ツリーは欠損値に対して堅牢であり、欠損値のあるデータを処理できます。欠損値を扱う場合は、不純物が最も少なくなった特徴量を分割に使用するか、欠損値を別のカテゴリとして扱います。
-
枝刈り: デシジョン ツリーはトレーニング データを過学習する傾向があり、枝刈りは過学習を軽減する手法です。剪定前または剪定後のいずれかの方法を使用できます。ツリーを構築するプロセスでは、事前枝刈りにより、各ノードが分割される前にいくつかの条件付き制限による分割が防止されます。ポスト枝刈りでは、完全なツリーを構築した後にいくつかのリーフ ノードを枝刈りすることでツリー構造が簡素化されます。
-
連続特徴の処理: デシジョン ツリーはデフォルトで離散特徴を処理しますが、連続特徴を離散特徴に変換することで処理できます。一般的なアプローチはバイナリ セグメンテーション (二分法) を使用することです。この方法では、連続した特徴がしきい値に基づいて 2 つの離散値に分割され、これら 2 つの値に基づいてセグメント化されます。
-
アンサンブル手法: デシジョン ツリーは、アンサンブル手法を通じて予測パフォーマンスを向上させることができます。ランダム フォレストと勾配ブースト ツリーは、よく使用される 2 つのアンサンブル デシジョン ツリー アルゴリズムです。ランダム フォレストは、複数のデシジョン ツリーを構築し、その結果をアンサンブルすることで過剰適合を軽減します。勾配ブースト ツリーは、デシジョン ツリーを段階的に構築することで予測を改善します。各ツリーは、前のツリーの予測誤差を減らすように設計されています。
-
解釈可能性と視覚化: デシジョン ツリーは高度に解釈可能であり、ツリーの構造を視覚化することで結果を予測する根拠を理解できます。Graphviz などのツールを使用してデシジョン ツリーをグラフィカル形式に変換し、デシジョン ツリーの分岐と意思決定プロセスをより深く理解できます。
上記は決定木で使用されるいくつかの手法ですが、特定の問題やデータセットの特性に応じて、これらの手法を柔軟に適用して、決定木モデルのパフォーマンスを最適化できます。