分类问题中,假设有K个类,样本点属于第k类的概率为
p
k
p_k
pk,则概率分布的基尼指数定义为:
其中
p
k
p_k
pk表示选中的样本属于
k
k
k类别的概率,则这个样本被分错的概率为
(
1
−
p
k
)
(1-p_k)
(1−pk)。
对于给定的样本集合D,其基尼指数为:
这里的
C
k
C_k
Ck是D中属于第k类的样本数据,K是类的个数。
如果样本集合D根据特征A是否取某一可能值a被分割成
D
1
D_1
D1和
D
2
D_2
D2两部分,即
则在特征A的条件下,集合D的基尼指数定义为:
说明:基尼指数Gini(D)表示集合D的不确定性,基尼指数Gini(D,A)表示经A=a分割后集合D的不确定性。基尼指数值越大,样本集合的不确定性也就越大,这一点跟熵相似。
算法
输入:训练数据集D,停止计算的条件
输出:CART决策树
根据训练数据集,从根结点开始,递归地对每个结点进行以下操作,构建二叉树:
Step1:设结点的训练数据集为D,计算现有特征对该数据集的基尼指数。此时,对每一个特征A,对其可能取的每个值a,根据样本点A=a的测试为“是”或“否”将D分割为D1和D2两部分,利用上式Gini(D,A)来计算A=a时的基尼指数。
Step2:在所有可能的特征A以及他们所有可能的切分点a中,选择基尼指数最小的特征及其对应可能的切分点作为最优特征与最优切分点。依最优特征与最有切分点,从现结点生成两个子节点,将训练数据集依特征分配到两个子节点中去。
Step3:对两个子结点递归地调用Step1、Step2,直至满足条件。
Step4:生成CART决策树
算法停止计算的条件是节点中的样本个数小于预定阈值,或样本集的基尼指数小于预定阈值,或者没有更多特征。
下面用算例说明怎么应用此公式进行计算。
- 数据
首先计算各特征的基尼指数,选择最优特征及其最优切分点。分别以 A 1 A_1 A1, A 2 A_2 A2, A 3 A_3 A3, A 4 A_4 A4表示年龄、有工作、有自己的房子和信贷情况4个特征,并以1,2,3分别表示年龄的值为青年、中年、老年;以1,2表示有工作和有房子的值为是和否;以1,2,3表示信贷值为非常好、好、一般。