index)という尺度が使われる。このジニ係数について少し考察してみたのでメモ。\)のサンプル数の割合である。1)が含まれる20個のデータを例にクラス0が含まれる数に応じたジニ係数の変化をプロットしたのが下図。期待通りデータセットの中に各クラスのデータが均等に含まれれば含まれるほどジニ係数の値は大きくなり、偏って含まれれる場合は小さくなり、純粋に1つのクラスしか含まれない場合はゼロになる。ジニ係数の解釈ジニ係数の定義は「データセットの中から無作為に2つサンプルを取り出したときに異なるクラスのサンプルが取り出される確率」と解釈するとわかりやすい。\sum_{i=1}^{K}P^2(C_i|t)\)となり、これがジニ係数の定義と一致するというわけ。決定木アルゴリズムでは決定木のノードで元のデータセットを2つ(\(L\)と\(R\))に分割する。そのためこの分割後の2つのデータセット全体の不純度が小さい分割の仕方を選ばないといけない。量が最小となる分割方法を見つけることになる*2。ここで\(p_{L}\)と\(p_{R}\)はそれぞれ分割後のデータセットのサンプル数の元のデータセットに対する割合。挙動がほぼ同じということと、ジニ係数であれば、計算コストの高いLogの計算をしなくて良いため、ジニ係数が利用されることが多い様子。ジニ係数の実装@Python3折角なのでPythonでジニ係数を計算する関数をPythonで実装してみた。I_{split}(t)\)を計算するコードです。ここのジニ係数を計算する関数を参考にした。ジニ係数の定義上、ジニ係数の計算時に存在するクラスを事前に知る必要がないはず*3なのでデータセットだけを関数に渡す方式に変更している。サンプルを複数回無作為に取り出す際に、一度取り出したサンプルを「戻して」再度サンプルを無作為に取り出す試行。パターン認識の(11.11)式。対象のデータセットの中に現れないクラスが存在したとしてもそれはジニ係数に寄与しない。