決定木の分岐(ノード)を作るときどのような計算をしているのか?
Gini不純度を計算しているのだが、Gini不純度とは何か?
機械学習の決定木における Gini 不純度とは?
Gini不純度とは、ある特徴でデータを2分割するときに、特徴の要素Aである確率とAでない確率をかけて合計したもの。
特徴要素Aだけになるような特徴はGini不純度ゼロで、分割に最適である。
例えば、ある商品を買ってくれる顧客を予想する決定木を作るとして、性別データという特徴を分岐にするときに、男性であった確率と女性であった確率をかける。
ここでミソなのは、2つの要素の復元抽出ということ。
復元抽出は、一回取り出したあと、戻してからもう一度取り出す方法。
男性と女性という要素を復元抽出するとすると、男性が二回、女性が二回のほか、男性・女性、女性・男性の組み合わせがあり得る。
Gini不純度は、男性・女性と女性・男性の確率を足し合わせた確率。
男・女の組み合わせ確率の2倍でもよい。
男・女も、女・男も、同じだから。
確率(男男+男女+女男+女女)の合計=1である。
「男女、女男」の確率を足してもいいし、「男男、女女」の確率を1から引いてもいい。
このGini不純度がより小さい特徴から、分割のノードとして選ばれていく。
ある商品を買ってくれるかどうか、できるだけ大きな偏りを作れる特徴が、分類に適しているわけ。
もし買った人でも買わない人でも、男女半々くらいであれば、分類するのに優秀な特徴ではない。
買った人は全員女性だった。
という偏りが大きい特徴のほうがいい。
Gini 不純度を仮想例で見てみる
仮想例1:買った人と買わなかった人合計20名の分布が下表のとおりだったら?
買った人 | 買わなかった人 | |
男 | 4 | 7 |
女 | 6 | 3 |
計 | 10 | 10 |
買った人のGini不純度:
$$ \frac{4}{10} \times \frac{6}{10} + \frac{6}{10} \times \frac{4}{10} = 0.48 $$
買わなかった人のGini不純度:
$$ \frac{7}{10} \times \frac{3}{10} + \frac{3}{10} \times \frac{7}{10} = 0.42 $$
人数を重みにした加重平均:
$$ \frac{10}{20} \times 0.48 + \frac{10}{20} \times 0.42 = 0.45 $$
仮想例2:買った人と買わなかった人合計20名の分布がもし下表のようだったら?
買った人 | 買わなかった人 | |
男 | 0 | 7 |
女 | 10 | 3 |
計 | 10 | 10 |
買った人のGini不純度:
$$ \frac{0}{10} \times \frac{10}{10} + \frac{10}{10} \times \frac{0}{10} = 0 $$
買わなかった人のGini不純度:
$$ \frac{7}{10} \times \frac{3}{10} + \frac{3}{10} \times \frac{7}{10} = 0.42 $$
人数を重みにした加重平均:
$$ \frac{10}{20} \times 0 + \frac{10}{20} \times 0.42 = 0.21 $$
仮想例1と仮想例2の人数で重みづけした加重平均を比べると、
仮想例2のほうが小さい。
つまり、仮想例2のように極端な偏りが出る分岐は、人数で重みづけした加重平均Gini不純度が小さくなり、分岐としてより優秀であると言える。
まとめ
機械学習の決定木分析のためのGini不純度と計算方法について紹介した。
- Gini不純度は、小さいほうが分類に適している。
- Gini不純度は、特徴要素Aの確率とAでない確率をかけ合わせて2倍するという計算をしている。
コメント