基尼指数(Gini Index)

基尼指数是决策树算法中用于评估特征分裂质量的一个关键指标,分裂后子节点的基尼指数越低,表示子节点的纯净度越高。

1. 基尼不纯度

基尼不纯度(Gini impurity)是衡量变量不纯度的一个指标。基尼不纯度越高,表示数据的不纯度或混乱程度越大。计算公式:

其中,\(P_i\)​ 是数据集 \(D\) 中属于第 \(i\) 类的样本占总样本数的比例,\(N\) 是类别的数量。

变量 X变量 Y
αA
αA
βB
αA
βB
αB

我们使用上面的公式来计算变量 X 和 Y 的不纯度:

从计算结果来看,变量 Y 的基尼不纯度要高于 X。

2. 基尼指数

在决策树的构建过程中,我们需要选择一个特征和一个切分点来分割数据集。为了找到最佳的划分,我们可以使用基尼指数。基尼指数是用于衡量选择某特征进行划分后所得到的加权基尼不纯度。其计算公式如下:

其中,\(D\)​ 是当前数据集,\(f\)​ 是待评估的特征,\(K\)​ 是特征 \(f\) 可能取值的数量,\(|D_i|\)​​ 是特征 \(f\) 取值为 i 时的子数据集。

变量 X变量 Y
αA
γA
βB
βA
αB
αB

我们现在选择变量 X 进行数据集划分,并计算变量 Y 的加权基尼不纯度。首先,我们先计算每个子集的基尼不纯度:

  • 当 X = α 时,变量 Y = ABB
  • 当 X = β 时,变量 Y = BA
  • 当 X = γ 时,变量 Y = A

然后根据每个子集的占比,加权求和,得到基尼指数,如下:

3. 构建决策树

我们通过一个例子,来了解如何基于基尼指数来构建决策树。

序号婚姻收入(万)拖欠贷款
0单身6
1已婚8
2单身9
3已婚6
4离异7
5已婚9
6离异8
7单身6
8已婚6
9单身9

接下来,基于上面的数据集,使用基尼指数来构建决策树。这里需要注意的是,我们使用的 scikit-learn 中的决策树 API 是无法直接处理类别特征数据,需要先将所有的类别特征进行独热编码(就是转换为数字),方便后续处理。

序号婚姻_单身婚姻_已婚婚姻_离异收入(万)拖欠贷款
01006
10108
21009
30106
40017
50109
60018
71006
80106
91009

我们将所有的特征的值升序排列:

婚姻_单身婚姻_已婚婚姻_离异收入(万)
0006
1117
8
9

取相邻两个数的均值作为切分点,如果有 N 个元素,则将会获得 N-1 个切分点:

婚姻_单身婚姻_已婚婚姻_离异收入(万)
0.50.50.56.5
7.5
8.5

接下来,计算每个切分点的基尼指数(每个切分点通过取 <= 和 >,将数据集划分为两部分):

婚姻_单身=0.5婚姻_已婚=0.5婚姻_离异=0.5收入(万)=6.5收入(万)=7.5收入(万)=8.5
0.2780.5000.3750.3750.4800.408
<=1 否
3 否
4 是
5 否
6 否
8 否
0 否
2 否
4 是
6 否
7 是
9 是
0 否
1 否
2 否
3 否
5 否
7 是
8 否
9 是
0 否
3 否
7 是
8 否
0 否
3 否
4 是
7 是
8 否
0 否
1 否
3 否
4 是
6 否
7 是
8 否
0.5000.0000.5000.4440.3200.444
>0 否
2 否
7 是
9 是
1 否
3 否
5 否
8 否
4 是
6 否
1 否
2 否
4 是
5 否
6 否
9 是
1 否
2 否
5 否
6 否
9 是
2 否
5 否
9 是
Gini0.3670.3000.4000.4160.4000.419

从计算结果来看,当使用特征 婚姻_已婚,并且选择 0.5 作为切分点时,基尼指数最低,即:能够最大程度提高原始数据集的纯度,我们进决策树分裂:

我们发现右子树已经达到最大纯度,不需要继续分裂。而左子树由于没有达到最大纯度,所以要继续按照前面的方法,计算这 6 条数据在每个特征分裂点的基尼指数,从而选择最小切分点继续分裂。完整分类之后的决策树如下图所示:

至此,关于基尼指数构建决策树的内容就讲解完毕,希望对你有所帮助。

未经允许不得转载:一亩三分地 » 基尼指数(Gini Index)
评论 (0)

5 + 6 =