ジニ不純度
同義語:gini impurity, gini index
ジニ係数とは違うので注意
データ集合の不純度(多様性)を測る指標。
不純度が低いほど、そのデータ集合は一つのクラスに偏っていることを意味する。完全に分類されている場合には0になる。
不純度が高いほど、そのデータ集合は複数のクラスに均等に分布している。
$ nクラスに分類する問題において、クラス$ iの頻度を$ p_iとすると、ジニ不純度$ Gは
$ G = \sum_{i=1}^n p_i(1 - p_{i}) = 1 - \sum_{i=1}^{n} p_i^2
となる。
code:p.py
import numpy as np
def gini(data):
return 1 - (data**2).sum()
data = np.array(1/6, 1/3, 1/2)
print(gini(data), data)
data = np.array(1, 0, 0)
print(gini(data), data)
data = np.array(7/10, 2/10, 1/10)
print(gini(data), data)
data = np.array(1/3, 1/3, 1/3)
print(gini(data), data)
data = np.array(1/5, 1/5, 1/5, 1/5, 1/5)
print(gini(data), data)
'''
# クラス数3
0.6111111111111112 0.16666667 0.33333333 0.5
0 1 0 0 # 偏っているので低い
0.4600000000000001 0.7 0.2 0.1
# 確率は均等だがクラス数が異なる場合の比較、3分割より5分割の方が低い値を取る
0.6666666666666667 0.33333333 0.33333333 0.33333333
0.7999999999999999 0.2 0.2 0.2 0.2 0.2
'''
参考:
関連:エントロピー