在CART里面划分决策树的条件是采用Gini Index,定义如下:
gini(T)=1−sumnj=1p2j
其中,( p_j )是类j在T中的相对频率,当类在T中是倾斜的时,gini(T)会最小。
将T划分为T1(实例数为N1)和T2(实例数为N2)两个子集后,划分数据的Gini定义如下:
ginisplit(T)=fracN1Ngini(T1)+fracN2Ngini(T2)
然后选择其中最小的(gini_{split}(T) )作为结点划分决策树。
基尼不纯度指标
在CART算法中,基尼不纯度表示一个随机选中的样本在子集中被分错的可能性。基尼不纯度为这个样本被选中的概率乘以它被分错的概率。当一个节点中所有样本都是一个类时,基尼不纯度为零。
假设y的可能取值为{1, 2, ..., m},令fi是样本被赋予i的概率,则基尼指数可以通过如下计算:
例如:
上例是属性有8个,每个属性又有多少离散的值可取。在决策树的每一个节点上我们可以按任一个属性的任一个值进行划分。比如最开始我们按:
1)表面覆盖为毛发和非毛发
2)表面覆盖为鳞片和非鳞片
3)体温为恒温和非恒温
等等产生当前节点的左右两个孩子。下面我们按GINI指数划分有:
GINI指数
总体内包含的类别越杂乱,GINI指数就越大(跟熵的概念很相似)。比如体温为恒温时包含哺乳类5个、鸟类2个,则:
体温为非恒温时包含爬行类3个、鱼类3个、两栖类2个,则
所以如果按照“体温为恒温和非恒温”进行划分的话,我们得到GINI的增益(类比信息增益):
最好的划分就是使得GINI_Gain最小的划分。
假如在构造分类回归树的第一步我们得到的“分类条件”是:体温为恒温和非恒温。此时: