提示:“基尼不纯度”不是一个专业术语,而是一种叫法,如同在西游记中,孙悟空有好几个叫法:大圣,弼马温,猴哥,大师兄,…等等,对于“基尼不纯度”而言,真正的专业术语是“基尼系数”。
基尼系数最早由意大利统计与社会学家Corrado Gini在1912年提出,基尼系数最早应用在经济学中,主要用来衡量收入分配公平度的指标,后来发展出多种计算基尼系数的方法,并应用在不同的领域,而在机器学习之决策树领域,则有自身特色的计算公式和应用目的,称之为“基尼不纯度”。
基尼不纯度(Gini Impurity):从一个数据集中随机选取子项,度量其被错误的划分到其他组里的概率。简单的理解为:一个随机事件变成它的对立事件的概率,是度量此随机事件是否稳定的一个指标。
设一随机事件$P$,$P_k$为$k$事件发生的概率,则此随机事件的基尼系数是:
$$Gini(p)=\sum\limits_{k=1}^Kp_k(1-p_k)=1-\sum\limits_{k=1}^Kp_k^2$$
在决策树中,此公式主要应用于分类问题中。假设有$K$个类,样本点属于第$k$类的概率为$P_k$,则可求出此概率分布的基尼系数,从而度量此随机事件是否稳定。
基尼不纯度越小,纯度越高,集合的有序程度越高,分类的效果越好。基尼不纯度为 0 时,表示集合类别一致。基尼不纯度的大概意思是,一个随机事件变成它的对立事件的概率。
例如,一个随机事件$X$的概率分布为:
$$P(X=0) = 0.5,P(X=1)=0.5$$
那么基尼不纯度就为:
一个随机事件$Y$的概率分布为:
$$P(Y=0) = 0.1,P(Y=1)=0.9$$
那么基尼不纯度就为:
很明显$X$比$Y$更混乱,因为两个都为$0.5$,很难判断哪个发生。而$Y$就确定得多,$Y=0$发生的概率很大,而基尼不纯度也就越小。所以基尼不纯度也可以作为衡量系统混乱程度的标准。
基尼系数最早由意大利统计与社会学家Corrado Gini在1912年提出,是用以衡量一个国家或地区居民收入差距的常用指标。
基尼系数最大为“1”,最小等于“0”。前者表示居民之间的收入分配绝对不平均,即100%的收入被一个单位的人全部占有了;而后者则表示居民之间的收入分配绝对平均,即人与人之间收入完全平等,没有任何差异。但这两种情况只是在理论上的绝对化形式,在实际生活中一般不会出现。因此,基尼系数的实际数值只能介于0~1之间,基尼系数越小收入分配越平均,基尼系数越大收入分配越不平均。国际上通常把0.4作为贫富差距的警戒线,大于这一数值容易出现社会动荡。
基尼系数最早应用在经济学中,主要用来衡量收入分配公平度的指标。在决策树CART算法中用基尼系数来衡量数据的不纯度或者不确定性,同时用基尼系数来决定类别变量的最优二分值的切分问题。
如果样本集合$D$根据某个特征A被分割为$D1$,$D2$两个部分,那么在特征A的条件下,集合$D$的基尼系数的定义为:
$$Gini(D)=1- \sum\limits_{k=1}^K (\frac{|C_k|}{|D|})^2$$
其中,$|D|$表示数据集样本的数量,$|D_1|$和$|D_2|$则表示子集的样本数量。
$Gini(D,A)$表示特征$A$不同分组的数据集$D$的不确定性。$Gini$系数值越大,样本集合的不确定性也就越大,这一点与熵的概念比较类似。
基于以上的理论,我们可以通过$Gini$系数来确定某个特征的最优切分点,即只需要确保切分后某点的$Gini$系数值最小,这就是决策树CART算法中类别变量切分的关键所在。