こんにちは、sue124です。
昔書いた「Python実践データ分析100本ノック」に関して書いた記事で、「決定木のモデル作成には平均情報量(エントロピー)を使っている」と書いたものの、書籍の中で使用している「sklearn.tree.DecisionTreeClassifier」のモジュールではCARTというアルゴリズムでジニ不純度を指標にして決定木を構築していることがわかったので、今回はエントロピーとジニ不純度の違いをまとめてみました。
決定木の基本的なことは以前書いた以下の記事を参照願います。
ノード内でクラス(全個)に属するサンプル数をとするとクラスに属するサンプルの割合を以下のように書くとします。
このとき、エントロピー、ジニ不純度の定義はそれぞれ以下の通りとなります。
<エントロピー>
<ジニ不純度>
ここで以下の場合を考えてみます。
- ノードに単一のクラスしか入っていない場合(最も不純度が低い状態)
<エントロピー>
<ジニ不純度>
いずれの場合も0になります。
- ノードの全てのサンプルが異なるクラスである場合(最も不純度が高い状態)
<エントロピー>
<ジニ不純度>
それぞれの上限はクラス数次第。
ここで簡単の為にクラスが2個の場合を考え、片方のクラスのデータ数をとおくと、
<エントロピー>
<ジニ不純度>
<ジニ不純度>
これらから、ともに で単調増加、で単調減少となることがわかります。
がで∞となるので、このエントロピーの方が周辺での立ち上がりが急になりますね。
以上、エントロピーとジニ不純度の違いを比べてみました。
数式に若干の違いはあれど、表しているものの意味としては大差のない印象でした。