デシジョンツリー
1.1 デシジョンツリーの定義
デシジョン ツリーとは、その名前が示すように、樹枝状の意思決定アルゴリズムのようなものです。各ノードの「決定」を通じて、タスクの正確な分類または回帰が実現されます。デシジョン ツリーは、分類問題を扱うためによく使用されます。これまでデシジョン ツリーに触れたことがなくても、次の図を通してその基本原理を理解できます。上図はデシジョン ツリーの意思決定プロセスです。どの美しさがあなたの基準に沿っているか、それは素晴らしいことです
! 上記のような一連のロジックを通じて、美しい女性とデートするかどうかのアルゴリズムを実現できます。同様に、この意思決定プロセスが決定木の一般的な概念です。
1.2 ディシジョンツリーの基本プロセス
一般に、デシジョン ツリーには、ルート ノード、複数の内部ノード、および複数のリーフ ノードが含まれます。リーフ ノードは決定結果に対応し、他の各ノードは属性テストに対応します。各ノードに含まれるサンプル セットは、属性テストに従ってサブノードに分割されます。ルート ノードにはサンプルの完全なセットが含まれます。デシジョン ツリーは「分割統治」の考え方に従い、その一般的なプロセスは次のとおりです。 対象
:
トレーニング セット D = {(x1,y1), (x2,y2), (x3,y3), ...(xm,ym)}
ラベル セット A = {a1, a2, a3, ...am}
プロセス
- a. ノードノードの生成
- b. D のすべてのサンプルが特定のクラス A に属する場合、
- c. ノードをクラス A リーフ ノードとしてマークし、return
- d. 終了する場合
- e. A から最適なパーティション属性 ax を選択します
- f. ax の各値に対して、次のことを行います。
- g. ノードのブランチを生成する
- h. ブランチが空の場合は、ブランチ ノードをリーフ ノードとしてマークし、それ以外の場合は最初から分割を続けます。
- 私。終了する場合
- j. 終わります
上の疑似コードは、決定木の生成が再帰的なプロセスであることを示しています。簡単に言えば、データ セット内の各サブ項目が同じカテゴリに属しているかどうかを常に判断しています。そうでない場合は、最適な分割方法を見つけて、データ セットを分割します。すべてのデータ セットが分割されるまで、これを繰り返します。
1.3 デシジョンツリーのパーティション選択
1.2 以降、デシジョン ツリーの最も重要なステップは、最適なパーティション属性を選択することです。!!したがって、
最適なパーティション属性にはいくつかの機能があります。
-
- 意思決定プロセスを大幅に短縮し、意思決定の精度を向上させることができます。
-
- これはモデルの一般化能力を向上させることができます。これはこのように理解できます。人間が猫やネズミを認識するプロセスは、意思決定のプロセスでもあります。人間は、毛髪、足の大きさ、匂い、体重、色、糞便などのすべての特徴ではなく、動物の鳴き声、形、および一部の局所的な特徴から区別することができます。
1.3.1 情報の取得
情報エントロピーは、サンプルの純度を測定するために最も一般的に使用される指標であり、エントロピーは情報の期待値として定義されます。
情報の定義: 分類対象が複数のカテゴリーに分けられる場合、記号 x の情報は次のように定義されます。
l ( xi ) = − log 2 p ( xi ) l(x_i) = -log_2p(x_i)l ( x私は)=−ログ_ _2p (x)私は)
其中 p ( x i ) p(x_i) p ( x私は)は、カテゴリが選択される確率です
エントロピーを計算するには、すべてのカテゴリに含まれるすべての可能な情報の期待値を計算する必要があります。確率が同じである場合の期待される公式は次のとおりであることは誰もが知っています: μ = ∑ xf ( x ) \mu = \sum xf(x
)メートル=∑x f ( x )各分類の確率が異なる可能性があることを考慮して、情報エントロピーの式はf ( x ) f(x)
を期待値の式に次のようにf ( x )を情報の定義式に置き換えるだけです:
H = − ∑ i = 1 np ( xi ) log 2 p ( xi ) H = - \sum_{i=1}^np(x_i)log_2p(x_i)H=−i = 1∑んp ( x私は)ログ_ _2p ( x私は)
トレーニング セット D の純度が高い場合、つまり x 内の i 番目のクラス サンプルの割合が大きい場合、つまりp ( xi ) p(x_i) でp ( x私は)が大きいほど、つまりH が小さいほど、D はより純粋になります。そして、
情報ゲイン = entroy (前) − entroy (後) 情報ゲイン = entroy (前) - entroy (後)情報獲得=entroy(前)−e n t r o y ( Behind )
ラベル セット A には m 個の可能な分類があることがわかりました。A を使用してサンプル セット D を分割すると、m 個の分岐ノードが生成され、m 番目の分岐ノードには属性 A のすべての m が含まれます。ama^ m の値あるmのサンプルはD m D^mとして表されます。Dm、各分岐ノードにはD m D^mDmは異なるため、それに特定の重みを与える必要があります。これは∣ D m ∣ ∣ D ∣ \frac{|D^m|}{|D|}∣ D ∣∣D _m∣ _は情報ゲインです。 Gain: Gain
( D , a ) = H ( D ) − ∑ m = 1 m ∣ D m ∣ ∣ D ∣ H ( D m ) Gain(D, a) = H(D) - \sum_{m=1}^m \frac{|D^m|}{|D|}H(D^m)ゲイン( D 、_ _ _)_=H ( D )−m = 1∑メートル∣ D ∣∣D _m∣ _H ( Dm )
したがって、情報ゲイン Gain が大きいほど、ラベル セット A を使用してトレーニング セット D を分割することによって得られる純度の向上は大きくなります。たとえば、有名な ID3 決定木アルゴリズムは、情報ゲインを使用して決定ノードを分割します。
1.3.2 ゲイン比
最適な分割属性を再度考慮すると、各サンプルに番号を割り当て、その番号を決定に入力すると、その番号の情報ゲインが最大になります。m 個のサンプルがある場合、それらは m 個のカテゴリに分割され、各ノードには 1 つのサンプルのみが含まれます。もちろん、その純度は最高ですが、実際の応用価値はありません。そのため、C4.5 決定木アルゴリズムは分割に情報ゲインを使用せず、実際にはゲイン率を使用します。情報利得は最大の利益を求めるようなものであり、サンプル属性が多いほど利益が大きくなります。したがって、情報利得は値の多い属性に優しいのに対し、利得率は利益が最大に伸びる方向を求めるようなものです。サンプル属性が少ないほど両者の比率を計算しやすくなります。したがって、情報利得の欠点をある程度克服でき、取り得る値の数が少ない属性に適しています。その式は次のとおりです。
Gain _ rate ( D , a ) = Gain ( D , a ) S 分割情報 ( D , a ) Gain\_ratio(D, a) = \frac {Gain(D, a)}{SplitInformation(D, a)}利得率( D 、_ _ _ _ _ _ _ _)_=分割情報( D 、_ _ _ _ _ _ _ _ _ _ _ _ _ _)_ゲイン( D 、_ _ _) _
この中のSplitInformation は次のとおりです:
Split Information ( D , a ) = − ∑ m = 1 m ∣ D m ∣ ∣ D ∣ log 2 ∣ D m ∣ ∣ D ∣ SplitInformation(D, a) = -\sum_{m=1}^m\frac{|D^m|}{|D|}log_2\frac{|D^m| }{|D|}分割情報( D 、_ _ _ _ _ _ _ _ _ _ _ _ _ _)_=−m = 1∑メートル∣ D ∣∣D _m∣ _ログ_ _2∣ D ∣∣D _m∣ _
1.3.3 ジニ指数
もう 1 つのよく知られた決定木アルゴリズムである CART は、Gini インデックスを使用してパーティション属性を選択します。Gini インデックスは、サンプル セット D から 2 つのサンプルがランダムに選択され、それらのカテゴリが一致しない確率を指します。確率が小さいほど、純度は高くなります。式は次のとおりです。
G ini _index ( D , a ) = ∑ m = 1 m ∣ D m ∣ ∣ D ∣ Gini ( D m ) Gini\_index(D,a) = \sum_{m=1}^{m}\frac{|D^m|}{|D|}Gini(D^m)G i n i _インデックス( D , _ _ _ _)_=m = 1∑メートル∣ D ∣∣D _m∣ _ジニ(D)_ _m )
whereG
ini ( D ) = ∑ k = 1 ∣ y ∣ ∑ k ≠ k ' pkpk ' Gini(D) = \sum_{k=1}^{|y|}\sum_{k \ne {k^'}}}p_kp_{k^'}ジニ(D )_ _ _=k = 1∑∣ y ∣k= k'∑pkpk「
CART アルゴリズムは常にバイナリ ツリーのみを生成し、その非リーフ ノードはバイナリ分類変数 (通常は Yes または No) のみにすることができることに注意してください。ID3 などの他のアルゴリズムは 2 つ以上の子ノードを持つことができます。
1.4 決定木の最適化
1.4.1 剪定処理
現実世界の木と同じように、成長方向や美しさを確保するために定期的に剪定する必要があります。デシジョン ツリーも過剰適合と戦うために「剪定」する必要があります。デシジョン ツリーの分割選択から、サンプルをできるだけ正確に区別するためにデシジョン ツリーの枝が多すぎる場合があることがわかります。現時点では、黒猫が猫であるのと同じように、白猫は猫ではないのと同じように、トレーニング セットのいくつかの特性が一般的な性質に統合されており、これは非常に不合理です。このため、デシジョン ツリーを枝刈りする必要があります。一般的に、枝刈り戦略は次のとおりです。
-
- 剪定前
-
- 剪定後の
事前剪定:
事前枝刈りとは、決定木の生成プロセスにおいて、分割前に各ノードが評価されることを意味します。現在のノードの分割によって決定木の汎化パフォーマンスが改善できない場合、分割は停止され、ノードはリーフ ノードとしてマークされます。
事後枝刈り 事後
枝刈りは、最初に決定木をトレーニングし、次に非リーフ ノードを下から上に検査することを指します。ノードに対応するサブツリーをリーフ ノードに置き換えることでモデルの汎化能力が向上する場合は、サブツリーをリーフ ノードに置き換えます。
1.5 ディシジョンツリーの適用範囲
デシジョン ツリーは、分類タスクと回帰タスクの両方に使用できます。一般に、デシジョン ツリーは分類タスクによく使用され、リング データや循環データには適していません。データの回転に非常に敏感であり、データに特に反映されます。データの小さな変化に敏感であるため、トレーニング プロセス中に過適合を避けるために特別な注意を払う必要があります。
1.6 参考文献
-
- 周志華「機械学習」
-
- Wang Jingyuan、Jia Wei、Bian Rui、Qiu Juntao 「機械学習の実践」
-
- Li Rui、Li Peng、Qu Yadong、Wang Bin 「機械学習の実践」
次の記事では、sklearn のデシジョン ツリーを使用して実践的な演習を行います。他のブログもご覧ください。ここをクリックしてご覧ください。