機械学習: デシジョン ツリー (パート 2)

ディシジョン ツリー (下)

分類、回帰のための CART アルゴリズム

I. 概要

デシジョン ツリー モデルの生成全体は、特徴の選択、デシジョン ツリーの生成、枝刈りという 3 つのステップで完了します。

CART デシジョン ツリーはバイナリ ツリーです。

CART アルゴリズムは次の 2 つのステップで構成されます。

(1) 決定木の生成: トレーニング データ セットに基づいて決定木を生成します。生成された決定木はできるだけ大きくなければなりません。

(2) 決定木の枝刈り: 生成された木を検証データセットを用いて枝刈りし、最適な部分木を選択しますが、このとき枝刈りの基準として最小損失関数が使用されます。

決定木の生成は、二分決定木を再帰的に構築するプロセスです。回帰ツリーには二乗誤差最小化基準を使用し、分類ツリーにはジニ指数 (ジニ指数) 最小化基準を使用して、特徴の選択を実行し、バイナリ ツリーを生成します。

(1) 回帰木:

生成:

トレーニングセット内の各データを分割点として、次の式で損失を 1 回計算し、最も損失が小さい点を分割点として求めます。要件が満たされるまでこれを繰り返します。

セグメント化されたユニットの値は、ユニット内のすべてのデータ ポイントの平均に設定されます。 

 (2) 分類ツリー:

トレーニングセットデータ内のすべての入力データの特徴と値を横断し、分離条件として D1 と D2 の 2 つのカテゴリに分割します。対応する特徴量の下で条件付きジニ指数を計算し、データセットを分類するための分離条件として最小のジニ指数を持つすべての特徴量を取得し、条件が満たされるまでこれを繰り返します。

p は、特徴の対応する値を取る確率です。条件を満たさないすべてのデータを 1-p の確率で別のクラスとしてカウントします 

2.主な内容

(1) 回帰木

モデル:

 

つまり、回帰問題では、1 つの入力が 1 つの出力に対応します。結果として得られる回帰ツリーは、入力データを M-1 回の分割によって M 単位に分割します。各セルは固定出力値に対応します。入力データがどのユニット区間にあるかを予測する場合、その出力値をそのユニットの出力値として予測します。幾何学的に表現する場合、1次元の入力データを例にとると、描画されたx、y画像がステップ化されます。

式中、Cm は m 番目のユニットの値であり、指示関数 I は入力 x がこのユニット間隔内にあるかどうかを示します。

ストラテジー:

//============= 拡張子 =============//

分割が完了した後のクラスごとに、二乗誤差を使用してトレーニング データの予測誤差を表すことができます。

クラスm

最小二乗誤差の基準によれば、明らかに、この単位の値をすべての入力点に対応する出力の平均値に設定する必要があります。 

//==============================//

問題は入力スペースをどのように分割するかです。

ここでは、ヒューリスティック手法を使用して j 番目の変数 x (j) とその値 s を分割変数および分割点として選択し、2 つの領域を定義します。

次に、最適なセグメンテーション変数 j と最適なセグメンテーション ポイント s を見つけます。具体的に解決すると、

 

 分割点となるトレーニングセット内のすべての入力データに対して、上式を1回計算し、最小損失を算出し、それを今回の分割点として使用します。

2 つの分割領域の値はそれぞれ、サンプル ポイントの出力の平均値、つまり次のとおりです。

最適な分割点 s は、固定入力変数 j に対して見つけることができます。

 すべての入力変数を走査し、最適なセグメンテーション変数 j を見つけて、ペア (j, s) を形成します。したがって、入力空間は2つの領域に分割される。次に、停止条件が満たされるまで、領域ごとに上記の分割処理を繰り返します。これにより回帰木が生成されます。このような回帰木は、最小二乗回帰木と呼ばれることがよくあります。

アルゴリズムを生成します:

(2) 分類木

 分類ツリーは、Gini インデックスを使用して最適な特徴を選択し、同時に特徴の最適なバイナリ セグメンテーション ポイントを決定します。

 

 

CART 決定木では二値分類問題であるため、上記の計算式を使用します。 

条件付きジニ指数:

ジニ指数 Gini(D) は集合 D の不確実性を表し、ジニ指数 Gini(D,A) は集合 D を A=a で割った不確実性を表します。ジニ指数の値が大きいほど、サンプル セットの不確実性が大きくなり、エントロピーと同様になります。 

アルゴリズムを生成します:

すべての特徴のすべての値を調べ、ジニ インデックスを見つけ、最小のものをセグメンテーション ポイントとして選択します。 

枝刈りアルゴリズム:

CART 枝刈りアルゴリズムは、「完全に成長した」デシジョン ツリーの下部からいくつかのサブツリーを切り取ってデシジョン ツリーを小さくします (モデルがより単純になります)。これにより、未知のデータに対してより正確な予測を行うことができます。CART 枝刈りアルゴリズムは 2 つのステップで構成されます。まず、生成アルゴリズムによって生成された決定木 T0 の一番下から T0 のルート ノードまで連続的に枝刈りを開始し、サブツリー シーケンス {T0, T1, ..., Tn} を形成します。 ; 検証方法は、独立した検証データセットでサブツリーのシーケンスをテストし、そこから最適なサブツリーが選択されます。

ツリーは再帰的に剪定できます。a を小さい値から小さい値へ (0=a0<a1<... <an< ) と増やし 、枝刈りして最適なサブツリー シーケンス {T0, T1,...,Tn} を取得します。シーケンス内のサブツリーはネストされます。

 

a が小さいものから大きいものに成長すると、葉のノードの数は徐々に減少します。そこでaを調整して葉を切り落とします。葉をむやみに切り取らないでください。問題は、枝刈りの目的を達成するために a をどのように制御するかです。

 //================ 予備知識 ===============//

整数 T0 が枝刈りされる場合、t は内部の任意の内部ノードです。次に、 t が単一ノードを持つツリーとみなされる場合、損失は次のようになります。

|T| = 1 であるため、パラメータが a の場合、Ca(T) はツリー全体の損失、C(T) はツリー全体の損失です。ノード t は 1 つだけなので、T = t なので、これはこの単一ノードによるツリーの損失になります。 

t をルートノードとした部分木 Tt の損失関数は次のようになります。

t をルートノードとするサブツリーは、ノード t がルートノードであり、以下の内部ノードと葉ノードを含むことを示します。|Tt| は、t をルートとするリーフ ノードの数です。

明らかに:

a=0 で a が十分に小さい場合、不等式が成り立ちます。

 

aが増加すると、ある時点でaが存在します。 

a が大きいほど、リーフ ノードの数が同じままの場合の損失は大きくなり、ルート ノードが 1 つだけでリーフ ノードがない場合の損失と同等に増加します。 

このようにして、a を増やすことによってツリーの葉ノードが減ります。

//==================================//

 

そうすることは次のことを意味します:

g(t) を a として求め、ツリーの a をこの値に設定すると、剪定前のツリーの損失 Tt は剪定後の損失と同じになるため、サブツリー Tt を切り取って新しいツリーを取得できます。枝刈り後の T1 であり、この新しいツリーの対応する a は g(t) であり、a1 として示されます。

次に、ツリー全体 T1 で別の最小の g(t) を見つけます。最終結果は、元のツリーから単一のルート ノードまでの N 個のサブツリーすべてのシーケンスになります

2. 枝刈りによって得られた部分木列 T0 , T1 ,...,Tn に対して、独立した検証用データセットを用いて部分木列 T0 , T1 ,..., Tn の各部分木を検定することにより、最適な部分木 Ta を選択します。 Tn の二乗誤差またはジニ指数。二乗誤差またはジニ指数が最小のデシジョン ツリーが最適なデシジョン ツリーとみなされます。サブツリーのシーケンスでは、各サブツリー T1 、 T2 、...、 Tn はパラメーター a1 、 a2 、...、 an に対応します。したがって、最適な部分木Tkが決定されると、対応するakも決定され、すなわち、最適な決定木Taが得られる。

 

 

おすすめ

転載: blog.csdn.net/stephon_100/article/details/125243173