【一緒に本を食べる】「機械学習」第4章 決定木

第 4 章 ディシジョン ツリー

ここに画像の説明を挿入

4.1 基本プロセス

  決定木は、木構造に基づいて決定を行い、人間の意思決定プロセスをシミュレートするためにトレーニング サンプルの分析を通じて分割属性を決定する一般的なタイプの機械学習手法です。

  一般に, 決定木には, ルートノード, いくつかの内部ノード, およびいくつかのリーフノードが含まれています. リーフノードは決定結果に対応し, 他の各ノードは属性テストに対応しています. 各ノードには次のサンプルセットが含まれています.ルート ノードにはサンプルの完全なセットが含まれ、ルート ノードから各リーフ ノードへのパスは決定テスト シーケンスに対応します。決定木学習の目的は、強力な汎化能力を持つ決定木を生成することであり、その基本的なプロセスは、次のようにシンプルで直感的な「分割統治」戦略に従います。

4.2 パーティションの選択

  決定木の学習の鍵は、最適なサブ属性をどのように選択するかです.分割プロセスが続くにつれて、決定木の枝ノードに含まれるサンプルが可能な限り同じカテゴリに属する​​こと、つまり、ノードの「純度」はますます高くなっています. 以下では、最適なパーティション属性を選択する際に一般的に使用されるいくつかの指標を紹介します.

(1) 情報取得

  情報利得を紹介する前に、情報エントロピーを紹介しましょう。情報エントロピーは、現在のサンプル セットDDを仮定すると、サンプル セットの純度を測定するために最も一般的に使用される指標です。Dk 番目クラスkサンプルの割合はpk ( k = 1 , 2 , 3 , . . , n ) p_k(k=1,2,3,...,n)pk( k=1 2 3 ... ,n )、次にDDDの情報エントロピーはE nt ( D ) Ent(D)En t ( D )のが小さいほど、DDDの純度が高いほど。
E nt ( D ) = − ∑ k = 1 npk log ⁡ 2 pk Ent(D) = - \sum\limits_{k = 1}^n { {p_k}{ {\log }_2}{p_k } }E n t ( D )=k = 1npkログ_2pk
  以下に情報獲得について紹介する。離散属性aaを想定するaはVVを持っていますV可能な値a 1 , a 2 , . . , a V {a^1,a^2,...,a^V}a1 a2 ... ,aV、属性aaaをサンプル セットDDDが分割され、VVVブランチ ノード。ここで、vvthv分岐ノードにはDD が属性aaのDのすべてaの値はava^vaD v D^vとして示されるvのサンプルDvであるため、 D v D^vを計算できますDvの情報エントロピー。次に、異なる分岐ノードには異なる数のサンプルが含まれていることを考慮して、各ノードに重みが割り当てられます。つまり、より多くのサンプルを持つ分岐ノードがより大きな影響を与えるため、次の情報ゲインが得られます。一般に、情報取得が多いほど、属性aa割った「純度」の向上度が大きいほど、有名なID3 ID3などID 3決定木学習アルゴリズム。
Gain ( D , a ) = E nt ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E nt ( D v ) Gain(D, a) = Ent(D) - \sum\limits_{v = 1}^V {\frac{ {\left| { {D^v}} \right|}}{ {\left| D \right|}}Ent({D^v})}ゲイン( D , _a )=E n t ( D )v = 1VD ∣D _vE n t ( Dv )
(2) ゲイン率

  実際、情報ゲイン基準には、可能な値の数が多い属性に対する優先度があります. この優先度の悪影響を減らすために、次のように定義されるゲイン比を以下に導入します: Gain _ ratio (
D , a ) = Gain ( D , a ) IV ( a ) , IV ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log ⁡ 2 ∣ D v ∣ ∣ D ∣ Gain\_ratio(D,a ) = \ frac{ {Gain(D,a)}}{ {IV(a)}},IV(a) = - \sum\limits_{v = 1}^V {\frac{ { \left| { { D^v }} \right|}}{ {\left| D \right|}}} {\log _2}\frac{ { \left| { { {D^v}} \right|}}{ { \左 | D \ 右 |}}Gain _r a t i o ( D , _ _a )=I V ( a )ゲイン( D , _a )I V ( a )=v = 1VD ∣D _vログ_2D ∣D _v
  其中 I V ( a ) IV(a) I V ( a )を属性aa固有値aaa の可能な値の数が多いほどIV(a) IV(a)I V ( a )の値は一般に大きくなります。ゲイン率の基準では、有名なC 4.5 C4.5C 4.5デシジョン ツリー アルゴリズムは、ヒューリスティックな方法を使用して最適なパーティション属性を選択します。まず、候補パーティション属性から平均レベルよりも高い情報ゲインを持つ属性を見つけ、次にゲイン率が最も高い属性を選択します。

(3) ジニ指数

  最初にジニ値、データセットDDを紹介しますDの純度は、ジニ値G ini ( D ) Gini(D)で計算できます。Gini ( D )来度量,Gini(D) Gini(D )G ini ( D )はDDからのデータを反映します。2 つのサンプルがDでランダムに抽出され、それらのクラス ラベルの確率が一致しないため、G ini ( D ) Gini(D)G ini ( D )が小さいほど、データセットDDDの純度が高いほど。属性aaaのジニ指数は次のように定義され、最終的に、有名なCART CARTC A RT方程式
G ini ( D ) = ∑ k = 1 n ∑ k ′ ≠ kpkpk ′ = 1 − ∑ k = 1 npk 2 , G ini _ index ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G ini ( D v ) Gini(D) = \sum\limits_{k = 1}^n {\sum\limits_{k' \ne k} { {p_k}{p_{k'} } } } = 1 - \sum\limits_{k = 1}^n {p_k^2} ,Gini\_index(D,a) = \sum\limits_{v = 1}^V {\frac{{\left | { {D^v}} \right|}}{ {\left| D \right|}}} ギニア({D^v})ジニ( D ) _=k = 1nk= kpkpk=1k = 1npk2G ini _ in de x ( D , _a )=v = 1VD ∣D _vジニ( D _v )

4.3 剪定処理

  枝刈りは、決定木学習アルゴリズムの「オーバーフィッティング」に対処するための主な方法です. 決定木学習では、トレーニング サンプルをできるだけ正しく分類するために、ノード分割プロセスが連続的に繰り返され、場合によっては分岐が多くなりすぎます。決定木なので、トレーニング セット自体の特性をすべてのデータの一般的なプロパティとして使用すると、過剰適合につながります。したがって、いくつかの枝を積極的に削除することで、オーバーフィッティングのリスクを減らすことができます。

(1)事前剪定

  プレプルーニングとは、決定木を生成する過程で、分割前に各ノードを推定することを意味し、現在のノードを分割しても決定木の汎化性能が改善されない場合は、分割を中止し、現在のノードをリーフとしてマークします。 .ノード、つまり、特定のブランチの成長の早期終了。これはスイカのデータセットの例で、以下はデータセットの詳細です。

  以下は、構築された元の決定木です。

  次に属性「臍部」で分割したところ、分割前の検証セットの精度は42.9%、分割後は71.4%であったため、「臍部」での分割を判定し、同様の方法で分割を行いました。次のように、次の「色」と「ルート」に適用されます。

(2) 後剪定

  ポストプルーニングとは、トレーニング セットから完全な決定木を生成し、非葉ノードをボトムアップで調べることです. ノードに対応するサブツリーを葉ノードに置き換えると、決定木を一般化できます.パフォーマンスが向上する場合は、サブツリーをリーフ ノードに置き換えます。

  上の元の決定木に示されているように、まずノード 6 を調べます。このノードをリーフ ノードに置き換えると、検証セットの精度が 42.9% から 57.1% に増加するため、枝刈りが実行されます。他のノード、次のように:

(3) 前剪定と後剪定のメリットとデメリット

  プレプルーニングとは、決定木を構築する過程で事前に成長を止めることです。つまり、特定のノードでサブノードを分割するのではなく、そのノードを直接リーフ ノードとして使用します。プレプルーニングの利点は、ディシジョン ツリーのサイズを縮小し、コンピューティング リソースと時間を節約し、過剰適合の問題を回避できることです。プレプルーニングの欠点は、デシジョン ツリーが単純化しすぎて、適合不足の問題が発生する可能性があることです。つまり、トレーニング セットとテスト セットにうまく適合できず、有用な情報が失われる可能性があります。プレプルーニングでは、ノードのサンプル数、情報ゲイン、ジニ指数など、成長を止めるための条件を設定する必要があります。

  ポストプルーニングは、完全な決定木を構築した後、決定木を下から上に単純化することです。つまり、一部のサブツリーを葉ノードに置き換えるか、それらを直接削除します。ポスト プルーニングの利点は、決定木の整合性を維持し、適合不足の問題を回避できることです。また、決定木を単純化することで過剰適合の問題を減らすこともできます。ポストプルーニングの欠点は、完全なデシジョン ツリーを構築してプルーニング操作を実行するために追加のコンピューティング リソースと時間が必要になり、効率に影響する可能性があることです。ポストプルーニングでは、検証セットの正解率やエラー率など、プルーニングを行うかどうかを判断するためのいくつかの評価基準を設定する必要があります。

4.4 連続値と欠損値

(1) 連続値処理

  連続属性の可能な値の数が制限されなくなったため、連続属性の可能な値に従ってノードを直接分割することはできません. ここでは、連続属性の離散化を使用できます. 最も簡単な方法は二分法を使用することです.以下に示すように:
T a = { ai + ai + 1 2 , 1 ⩽ i ⩽ n − 1 } {T_a} = \{ \frac{ { {a^i} + {a^{i + 1}} } } {2},1 \leqslant i \leqslant n - 1\}Ta={ 2a+ai + 11n1 }
  これらの中間点を分割点の候補とし、最適な分割点を選択して標本集合を分割する. 情報利得を利用する場合は
Gain ( D , a ) = max ⁡ t ∈ T a Gain ( D , a , t ) = max ⁡ t ∈ T a E nt ( D ) − ∑ λ ∈ { − , + } ∣ D t λ ∣ ∣ D ∣ E nt ( D t λ ) Gain(D,a) = \mathop {\max }\limits_{t \in {T_a}} Gain(D,a,t) = \mathop {\max }\limits_{t \in {T_a}} Ent(D) - \sum\limits_ {\ lambda \in \{ - , + \} } {\frac{ {\left| {D_t^\lambda } \right|}}{ { \left| D \right|}}Ent(D_t^\lambda ) }ゲイン( D , _a )=t Ta最大ゲイン( D , __t )=t Ta最大E n t ( D )λ { , + }D Dtl E n t ( Dtl)
  他の一般的に使用される連続属性離散化方法は次のとおりです。

  • 等幅法: 連続属性の値の範囲を等幅の n 個の間隔に分割し、各間隔は離散値を表します。この方法はシンプルで実装が簡単ですが、データの分布特性を無視する可能性があり、その結果、間隔内で大きなデータ差が生じ、間隔間で小さなデータ差が生じます。
  • 等頻度法: 連続属性の値の範囲を n 個の間隔に分割し、各間隔に含まれるデータ レコードの数が等しいかほぼ等しくなり、各間隔が離散値を表すようにします。この方法では、データの均一性を確保できますが、不合理な間隔の分割が発生し、一部の外れ値または境界値が同じ間隔に分類される可能性があります。
  • クラスター分析に基づく方法: クラスター化アルゴリズムに従って連続属性をクラスター化し、クラスター化の結果に従って同じクラスターのレコードを同じ間隔にマージします。各間隔は離散値を表します。この方法は、データの固有の特性に応じて分割できますが、クラスターの数は事前に決定する必要があり、クラスター化アルゴリズム自体には一定の複雑さと不確実性があります。

(2) 欠損値処理

  実際のタスクでは、不完全なサンプルに遭遇することがよくあります。つまり、サンプルの一部の属性値が欠落しています。特に多数の属性の場合、値が欠落している多数のサンプルが存在することがよくあります。この場合のデシジョン ツリーには、次の 2 つの問題が解決されていません。

  • 属性値が欠落しているパーティション属性の選択を行う方法
  • パーティション属性が与えられた場合、この属性のサンプルの値が欠落している場合にサンプルを分割する方法

  いくつかの一般的な解決策を次に示します。

  • 欠損値を無視する: この方法では、欠損値を含むサンプルを直接削除または無視し、完全なサンプルのみを使用して決定木を構築および予測します。この方法はシンプルで簡単に実装できますが、データの損失やバイアスが発生し、決定木のパフォーマンスと汎化能力が低下する可能性があります。
  • 欠損値の使用: 欠損していないデータを直接計算する方法. 最適なパーティション属性を選択する際に, 欠損属性のないサンプルを直接選択に使用. 後続のサブノード分割で, 属性にサンプルが発生した場合の値が欠落している場合、このサンプルは現在のすべてのサブノードに同時に割り当てられます。つまり、同じサンプルが異なる確率で異なるサブノードに割り当てられます。
  • 欠損値を埋める: この方法では、既知のデータを使用して欠損値を推定または推測し、元の欠損値を推定値または推測値に置き換えてサンプルを完成させます。この方法はデータの完全性を維持できますが、適切な充填方法を選択する必要があります。そうしないと、エラーやノイズが発生し、デシジョン ツリーの精度に影響を与える可能性があります。一般的に使用される塗りつぶし方法には、平均、中央値、最頻値、最近傍、回帰、補間などがあります。

4.5 多変量決定木

  各属性を座標空間の軸とみなすと、ddd属性ddd次元空間のデータ点の場合, サンプルを分類することは, この座標空間で異なるタイプのサンプル間の分類境界を見つけることを意味します. ここで, 分類境界は座標軸に平行ないくつかのセグメントで構成されています. このような決定ツリーは、決定木とも呼ばれます.次の 2 つの例のような「多変量決定木」:

最初の画像が表示されない場合に表示するテキスト
2番目の画像が表示されていない場合に表示するテキスト

4.6 関連論文

  以下は、決定木の適用を具体的に紹介するために、近年のいくつかの論文を組み合わせたものです。

(1) NBDT: Neural-Backed Decision Trees
  ニューラル ネットワークは強力な機械学習手法ですが、通常は解釈可能性に欠けており、金融や医療など、正確で合理的な予測が必要な分野への適用は困難です。この問題を解決するために、この論文では、NBDT と呼ばれる決定木をニューラル ネットワークに埋め込む方法を提案します。これは、元のネットワーク構造を変更せずに精度を低下させることなく、ネットワークの解釈可能性を高めることができます。NBDT メソッドは、元のニューラル ネットワーク構造の特徴抽出部分を保持し、最後の完全に接続された層で決定木の埋め込みのみを実行することで、ニューラル ネットワークの出力を一連の理解可能な決定ルールに変換します。NBDT メソッドは、単純なアルゴリズムを使用して決定木構造としきい値を生成するだけで、再トレーニングや微調整を行うことなく、事前トレーニング済みのニューラル ネットワークに適用できます。複数の画像分類データセットでの実験は、NBDT メソッドが元のネットワークの精度を維持しながら、視覚化と説明可能な意思決定プロセスを提供できることを示しています。この論文では、ニューラル ネットワークの解釈可能性を改善するための効率的で一般的なアプローチを紹介します。

(2)静的解析と動的解析による決定木ベースのマルウェア検出

  このホワイト ペーパーでは、Cuckoo サンドボックスを動的なマルウェア分析に使用しながら、API、概要情報、DLL、変更されたレジストリ キーなどの静的分析機能と動的分析機能を組み合わせた決定木を使用したマルウェア検出方法を提案します。これは、高い精度を提供するカスタマイズ可能なツールです。 . 実験では、2,300 以上のマルウェア サンプルと 1,500 以上の通常のソフトウェア サンプルが使用され、決定木は、サポート ベクター マシン、ナイーブ ベイズ、ランダム フォレストなどの他の機械学習手法と比較され、決定木が正確であること 度、再現率、適合率、F1 スコアなどの指標に利点があります。

おすすめ

転載: blog.csdn.net/qq_44528283/article/details/130164679