デシジョン ツリーは、データを分類および予測できる一般的に使用される機械学習アルゴリズムです。デシジョン ツリーは、各内部ノードが特徴または属性を表し、各リーフ ノードがカテゴリまたは結果を表すツリー構造に基づいています。
デシジョン ツリーを構築するプロセスは通常、次のステップに分かれています。
-
特徴の選択: データセットを分割するのに最適な特徴を選択します。情報利得やジニ不純度などのメトリクスは、最適な特徴を選択するためによく使用されます。
-
データセットの分割: 選択した特性に従ってデータセットを分割し、複数のサブセットに分割します。離散フィーチャの場合は、固有値に従って直接分割できます。連続フィーチャの場合は、二分法を使用して離散フィーチャに変換できます。
-
サブツリーを再帰的に構築する: サブセットごとに手順 1 と 2 を繰り返して、サブツリーを再帰的に構築します。これは、サブセット内のすべてのインスタンスが同じカテゴリに属するか、使用できる機能がなくなるまで行われます。
-
枝刈り: デシジョン ツリー全体を構築した後、枝刈り操作を実行して、過剰適合を避けるためにいくつかの不要なノードを削除できます。
デシジョン ツリーを構築する方法の簡単な例を次に示します。
5 つのサンプルを含むデータ セットがあり、各サンプルには 2 つの特徴 x1 と x2、およびカテゴリ y があるとします。
×1 | ×2 | y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | 1 |
1 | 1 | 0 |
まず、データセットを分割するために最適な特徴を選択する必要があります。情報利得やジニ不純度などのメトリクスを使用して、最適な特徴を選択できます。ここでは、情報ゲインを使用して最適な特徴を選択することを選択します。
x1 と x2 の情報利得を計算します。
2 つのフィーチャの情報ゲインは同じであるため、いずれかのフィーチャがルート ノードとして選択されることがわかります。ここでは、ルート ノードとして x1 を選択し、データ セットを 2 つのサブセット ({0,1,2} と {3,4}) に分割します。
次に、2 つのサブセットに対してサブツリーを再帰的に構築します。サブセット {0,1,2} については、x2 を最適な特徴として使用して、次のデシジョン ツリーを構築します。
x2
/ \
0 1
/ | \
0 1 1
サブセット {3,4} の場合、すべてのインスタンスは同じカテゴリを持つため、リーフ ノードとして直接使用されます。
2 つのサブツリーを結合して、完全なデシジョン ツリーを取得します。
x1
/ \
0 1
/|\
0 1 1
|
0
この決定木は、新しいサンプルを分類するために使用できます。たとえば、サンプル {x1=0, x2=1} の場合、ルート ノードから開始して、特徴 x1 の値が 0 であることに応じて、左側のサブツリーに入ります。次に、特徴 x2 の値が 1 であることに応じて、右のサブツリーに入ります。最後に、リーフ ノード 0 に到達すると、サンプルはカテゴリ 0 として分類できます。
上の例では、特徴選択の指標として情報利得を使用します。これは、デシジョン ツリーで一般的に使用される指標の 1 つです。もう 1 つの一般的に使用される指標は、ジニ不純物です。ジニ不純度は、データ セットからランダムに選択された 2 つのサンプルが矛盾するカテゴリを持つ確率を表します。ジニ不純物が小さいほど、データセットの純度は高くなります。Gini 不純物は、最適な特徴の選択、データセットの分割などに使用できます。
特徴量の選択に加えて、欠損値の処理方法、連続特徴量の処理方法など、考慮する必要がある問題が他にもいくつかあります。実際のアプリケーションでは、決定木の汎化能力を向上させるために、オーバーフィッティングや枝刈りなどの問題も考慮する必要があります。
要約すると、デシジョン ツリーは、分類と予測に使用できる、シンプルかつ強力な機械学習アルゴリズムです。実際のアプリケーションでは、より優れたパフォーマンスと汎化機能を得るために、特定の問題に基づいて適切な機能選択インジケーター、処理方法、および枝刈り戦略を選択する必要があります。