前言

在决策树排序过程中,可以根据基尼值和基尼系数增益来确定哪些特征需要先决策、哪些后决策,构建一棵最有的决策树。


一、基尼值、基尼系数增益计算公式

基尼值:从数据集中随机抽取两个样本,其类别标记不一致的概率,基尼值越小,数据集纯度越高。
G i n i ( D ) = ∑ k = 1 y ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 y p k 2 Gini(D)=\sum_{k=1}^y\sum_{k'≠k}p_kp_k'=1-\sum_{k=1}^yp_k^2 Gini(D)=k=1yk=kpkpk=1k=1ypk2
基尼指数:选择使划分后基尼系数最小的属性作为最优化分属性
G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini\_index(D,a)=\sum_{v=1}^V\frac{|D^v|}{|D|}Gini(D^v) Gini_index(D,a)=v=1VDDvGini(Dv)

基尼增益:选择基尼增益最大的点进行优化划分

二、案例

1.引入是否拖欠贷款数据
Alt
2.计算基尼值和基尼指数

1.开始将所有记录看做是一个节点,此时拖欠贷款的数量是3,不拖欠贷款的数量是7,因此
G i n i ( D ) = 1 − ( 3 10 ) 2 − ( 7 10 ) 2 = 0.42 Gini(D)=1-(\frac{3}{10})^2-(\frac{7}{10})^2=0.42 Gini(D)=1(103)2(107)2=0.42
2、遍历每个变量的每一种分割方式,找到最好的分割点

基于是否有房,有两个分类(有房、无房),见下表

有房没房总数
拖欠贷款033
不拖欠贷款347

有房的基尼系数增益
G i n i ( 有房 ) = 1 − ( 0 3 ) 2 − ( 3 3 ) 2 = 0 Gini(有房)=1-(\frac{0}{3})^2-(\frac{3}{3})^2=0 Gini(有房)=1(30)2(33)2=0

无房的基尼系数增益
G i n i ( 无房 ) = 1 − ( 3 7 ) 2 − ( 4 7 ) 2 = 0.4898 Gini(无房)=1-(\frac{3}{7})^2-(\frac{4}{7})^2=0.4898 Gini(无房)=1(73)2(74)2=0.4898
是否有房的基尼系数增益
{ 是否有房 } = 0.42 − 7 10 ∗ 0.4898 − 3 10 ∗ 0 = 0.077 \{是否有房\}=0.42-\frac{7}{10}*0.4898-\frac{3}{10}*0=0.077 {是否有房}=0.421070.48981030=0.077
基于婚姻状况,有三个分类(单身、已婚、离婚),见下表

(1)已婚:

已婚其他总数
拖欠贷款033
不拖欠贷款437

G i n i ( 已婚 ) = 1 − ( 0 4 ) 2 − ( 4 4 ) 2 = 0 Gini(已婚)=1-(\frac{0}{4})^2-(\frac{4}{4})^2=0 Gini(已婚)=1(40)2(44)2=0
G i n i ( 其他 ) = 1 − ( 3 6 ) 2 − ( 3 6 ) 2 = 0.5 Gini(其他)=1-(\frac{3}{6})^2-(\frac{3}{6})^2=0.5 Gini(其他)=1(63)2(63)2=0.5
G i n i ( 已婚、其他 ) = 0.42 − 4 10 ∗ 0 − 6 10 ∗ 0.5 = 0.12 Gini(已婚、其他)=0.42-\frac{4}{10}*0-\frac{6}{10}*0.5=0.12 Gini(已婚、其他)=0.4210401060.5=0.12

(2)单身:

单身其他总数
拖欠贷款213
不拖欠贷款257

G i n i ( 单身 ) = 1 − ( 2 4 ) 2 − ( 2 4 ) 2 = 0.5 Gini(单身)=1-(\frac{2}{4})^2-(\frac{2}{4})^2=0.5 Gini(单身)=1(42)2(42)2=0.5
G i n i ( 其他 ) = 1 − ( 1 6 ) 2 − ( 5 6 ) 2 = 0.27 Gini(其他)=1-(\frac{1}{6})^2-(\frac{5}{6})^2=0.27 Gini(其他)=1(61)2(65)2=0.27
G i n i ( 单身、其他 ) = 0.42 − 4 10 ∗ 0.5 − 6 10 ∗ 0.27 = 0.058 Gini(单身、其他)=0.42-\frac{4}{10}*0.5-\frac{6}{10}*0.27=0.058 Gini(单身、其他)=0.421040.51060.27=0.058

(3)离婚:

离婚其他总数
拖欠贷款123
不拖欠贷款167

G i n i ( 离婚 ) = 1 − ( 1 2 ) 2 − ( 1 2 ) 2 = 0.5 Gini(离婚)=1-(\frac{1}{2})^2-(\frac{1}{2})^2=0.5 Gini(离婚)=1(21)2(21)2=0.5
G i n i ( 其他 ) = 1 − ( 2 8 ) 2 − ( 6 8 ) 2 = 0.375 Gini(其他)=1-(\frac{2}{8})^2-(\frac{6}{8})^2=0.375 Gini(其他)=1(82)2(86)2=0.375
G i n i ( 离婚、其他 ) = 0.42 − 2 10 ∗ 0.5 − 8 10 ∗ 0.27 = 0.104 Gini(离婚、其他)=0.42-\frac{2}{10}*0.5-\frac{8}{10}*0.27=0.104 Gini(离婚、其他)=0.421020.51080.27=0.104

G i n i Gini Gini 的最大值,即 G i n i ( 已婚、其他 ) = 0.12 Gini(已婚、其他)=0.12 Gini(已婚、其他)=0.12

基于收入情况,是一个连续值,因此需要对该特征进行处理,按照升序排列,见下表

是否拖欠贷款nononoyesyesyesnononono
收入607075859095100120125220
相邻中值点6572.58087.792.597.5110122.5172.5
G i n i Gini Gini 系数增益0.020.0450.0770.0030.020.120.0770.0450.02

通过计算, G i n i Gini Gini 的最大值为0.12,因此在决策树排序时可以按照婚姻状况或者收入来进行决策,这里选择婚姻状况首先来决策。比如:

在这里插入图片描述


总结

本文主要介绍了如果使用基尼系数增益来构建决策树,针对相同系数增益的特征可以随意选择一种特征,当特征选择完成之后,需要根据已经重新分类的特征重新计算基尼系数,最终基于所有特征完成决策树的构建

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐