English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

pythonで決定木分類アルゴリズムを実現

この記事では、Pythonで決定木分類アルゴリズムを実装する具体的なコードを共有し、参考にしてください。

1、概要

決定木(decision tree)- それは広く使用されている分類アルゴリズムです。

ベイズアルゴリズムに比べて、決定木の利点は構築プロセスにどのような分野の知識もパラメータ設定も必要ないことです。

実際のアプリケーションでは、探索的な知識発見において、決定木がより適しています。

2、アルゴリズムの思想

通俗に言えば、決定木分類の思想は相手探しに似ています。以下のような会話が考えられます:

      娘:いくつですか?

      母:26。

      娘:顔はかっこいいですか?

      母:とてもかっこいい。

      娘:収入は高いですか?

      母:それほど高くはない、中程度です。

      娘:公務員ですか?

      母:はい、税務局で働いています。

      娘:それで、私行ってみる。 

この女子の決定プロセスは典型的な分類木決定です。

本質:年齢、容姿、収入、公務員であるかどうかを通じて男性を「会う」か「会わない」の二つのカテゴリに分類します

この女子が男性に対する要求は以下の通りです:320歳未満、容姿が中程度以上で高収入者または中程度以上の収入の公務員の場合、この女子の決定論理は以下のように示されます。

上の図は、この女子がデートの相手を決定する戦略を完全に表しています。その中で:

◊緑のノードは判断条件を示します

◊オレンジのノードは決定結果を示します

◊矢印はある判断条件が異なる状況での決定経路を示します

赤い矢印は上の例で女子の決定プロセスを示しています。 

この図は基本的に決定木と考えられますが、「基本的に」と言われるのは、図中の判定条件が量化されていないためです。例えば、収入の高・中・低などがまだ決定木としての厳密な意味合いではありません。すべての条件を量化すると、本物の決定木になります。 

決定木分類アルゴリズムの鍵は、先験データに基づいて最適な決定木を構築し、未知データのカテゴリを予測することです 

決定木:これは木構造(二分木や非二分木ができます)。各非葉ノードは特徴属性のテストを表し、各枝はその特徴属性の値域上の出力を表し、各葉ノードは一つのカテゴリを保存します。決定木を使用した決定プロセスは、根ノードから始まり、分類対象の特徴属性をテストし、その値に基づいて出力枝を選択し、葉ノードに達すると、その保存されるカテゴリを決定結果として出力します。

3、決定木の構築

以下のようにリンゴの良悪を判断するデータサンプルがあります:

サンプル    赤     大      好いリンゴ

0         1      1         1

1         1      0         1

2         0      1         0

3         0      0         0

サンプル中有2属性、A0は赤リンゴかどうかを示しています。A1大リンゴかどうかを示しています。例えば、このデータサンプルを基にリンゴの良悪を自動的に判断する決定木を構築する場合、

この例のデータには2属性、そのため、すべての可能性のある決定木を完全にリストアップすることができます2本図に示されています:

明らかに、左側がA0(赤色)を使用して分類基準としている決定木は、右側がAを使用して分類基準としている決定木よりも優れています1(大きさ)を分類基準として使用する決定木。

もちろん、これは直感の認識です。しかし、直感はプログラムの実装に適していないため、これらの二つの木の性能の良悪を評価するためには定量的な考察が必要です。

決定木の評価に使用される定量の考察方法は各分類の情報エントロピーの増加を計算する

特定の属性を通じてデータを分類した後、情報エントロピーが最も多く減少する場合、その分類属性は最適な選択です 

属性の分類選択(つまり決定木の構築)の根拠:

簡単に言えば、エントロピーは「無秩序、混乱」の程度です。

計算を通じて理解する:

1、元のサンプルデータのエントロピー:

サンプルの総数:4

良いリンゴ:2

悪いリンゴ:2

エントロピー: -(1/2 * log(1/2) + 1/2 * log(1/2)) = 1

情報エントロピーは1現在は最も混乱し、無秩序な状態にあります。

2、二つの決定木の分類結果のエントロピーの増加計算

木1最初にA0を分類する場合、各子ノードの情報エントロピーの計算は以下の通りです:

0、1葉ノードには2個の正例、0個の負例があります。情報エントロピーはe1 = -(2/2 * log(2/2) + 0/2 * log(0/2)) = 0。

2、3葉ノードには0個の正例、2個の負例。情報エントロピーはe2 = -(0/2 * log(0/2) + 2/2 * log(2/2)) = 0。

したがって、A0を分類した後の情報エントロピーは各子ノードの情報エントロピーの重み付け和です:E = e1*2/4 + e2*2/4 = 0。

A0を分類する場合の情報エントロピーの増加G(S, A0)=S - E = 1 - 0 = 1.

実際には、決定木の葉ノードはすべて同じカテゴリに属していることを示しており、したがって情報エントロピーは必ず0です。 

木2最初にAを選択します1を分類し、各子ノードの情報エントロピーの計算は以下の通りです:

0、2子ノードが1個の正例、1個の負例。情報エントロピーはe1 = -(1/2 * log(1/2) + 1/2 * log(1/2)) = 1。

1、3子ノードが1個の正例、1個の負例。情報エントロピーはe2 = -(1/2 * log(1/2) + 1/2 * log(1/2)) = 1。

したがって、Aを選択します1分類後の情報エントロピーは各子ノードの情報エントロピーの重み付け和です:E = e1*2/4 + e2*2/4 = 1。つまり、分類しない場合と同じです!

を選択します1分類の情報エントロピーの増加G(S, A1)=S - E = 1 - 1 = 0. 

したがって、各回の分類前に情報エントロピーの増加が最大の分類を行うだけで十分です。

最初にA0を分類する場合の情報エントロピーの増加は1>最初にA1分類時の情報エントロピーの増加、したがって最初にA0を分類することは最適な選択です!!!

4、アルゴリズムの指導原理

決定属性の分類後、データの無序度がどんどん低くなり、情報エントロピーがどんどん小さくなります。 

5、アルゴリズムの実装

データ内の属性を整理します。

特定の属性に基づいてデータを分類した場合の情報エントロピーの増加を比較し、情報エントロピーの増加が最大の属性を選択して最初の分類基準として選択し、次に続いて属性を選択し続けます。

これで本文のすべての内容が終わりました。皆様の学習に役立つことを願っています。また、ナイアラ教材のサポートを多くいただければ幸いです。

声明:本文の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしたものであり、本サイトは所有権を持ちません。また、人間による編集は行われていません。著作権侵害が疑われる内容が見つかった場合は、メールでお知らせください:notice#oldtoolbag.com(メールの際は、#を@に変更してください。通報し、関連する証拠を提供してください。一旦確認がとれましたら、本サイトは即座に侵害する可能性のあるコンテンツを削除します。)

おすすめ