树类算法之---决策树Cart树Gini系数就算原理。

1.介绍

  • ID3树与CART树的区别:
    • ID3算法中,选择的是信息增益来进行特征选择,信息增益大的特征优先选择。
    • 而在C4.5中,选择的是信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的缺点。
    • 但是无论是ID3还是C4.5,都是基于熵的模型,里面会涉及到大量的对数运算,能不能简化一下?
  • GINI系数的计算公式:
    • 假设有数据集D,定义GINI指数:
      G I N I ( D ) =    ∑ i = 1 k p k ⋅ ( 1 − p k ) = 1 − ∑ i = 1 k p k 2 GINI\left( D \right)=\; \sum_{i=1}^{k}{p_{k}}\cdot \left( 1-p_{k} \right)=1-\sum_{i=1}^{k}{p_{k}}^{2} GINI(D)=i=1kpk(1pk)=1i=1kpk2
  • 记住上面的公式我们会在后面计算的时候用到
  • 简单分析:
    • 从公式中可以看出来,基尼指数的意义是从数据集D中随机抽取两个样本类别标识不一致的概率。基尼指数越小,数据集的纯度越高。
    • 相比于信息增益,信息增益比等作为特征选择方法,基尼指数省略了对数计算,运算量比较小,也比较容易理解,所以CART树选择使用基尼系数用来做特征选择。

2.GINI系数计算过程

  • 首先给出一个数据集D,这是一个关于是否出门的数据集,最后一列是决策列,即标签列,我们希望通过前面的一系列特征来决策最终会不会出去玩。
  • 下面我们就逐个计算每个特征的GINI系数。从而来决定选用哪个特征来作为第一个分支节点。
  • 值得注意的是,Cart树是一个二叉树,所以在计算Gini系数的时候,还要考虑,要以哪个特征值作为切分。这个也是区别于ID3 和C4.5算法的一点。
  • 假设我们按顺序计算。
DayOutlookTemp.HumidityWindDecision
1SunnyHotHighWeakNo
2SunnyHotHighStrongNo
3OvercastHotHighWeakYes
4RainMildHighWeakYes
5RainCoolNormalWeakYes
6RainCoolNormalStrongNo
7OvercastCoolNormalStrongYes
8SunnyMildHighWeakNo
9SunnyCoolNormalWeakYes
10RainMildNormalWeakYes
11SunnyMildNormalStrongYes
12OvercastMildHighStrongYes
13OvercastHotNormalWeakYes
14RainMildHighStrongNo

2.1 计算OutLook的Gini系数

  • 首先我们在D数据集中选择出OutLook列的一些数据情况。
  • 看下面的表是经过统计得来的:
    • 每个特征值对应的累呗的个数,以及总的个数,我们需要这个。
    • 回忆一下计算公式: G i n i = 1 − ∑ i = 1 k p k 2 Gini =1-\sum_{i=1}^{k}{p_{k}}^{2} Gini=1i=1kpk2
OutlookYesNoNumber of instances
Sunny235
Overcast404
Rain325
  • 开始计算:
    • G i n i ( O u t l o o k = S u n n y ) = 1 − { ( 2 5 ) 2 + ( 3 5 ) 2 } = 0.48 Gini(Outlook =Sunny)=1-\{(\frac{2}{5})^2+(\frac{3}{5})^2 \}=0.48 Gini(Outlook=Sunny)=1{(52)2+(53)2}=0.48
    • G i n i ( O u t l o o k = O v e r C a s t ) = 1 − { ( 4 4 ) 2 + ( 0 4 ) 2 } = 0 Gini(Outlook =OverCast)=1-\{(\frac{4}{4})^2+(\frac{0}{4})^2 \}=0 Gini(Outlook=OverCast)=1{(44)2+(40)2}=0
    • G i n i ( O u t l o o k = R a i n ) = 1 − { ( 3 5 ) 2 + ( 2 5 ) 2 } = 0.48 Gini(Outlook =Rain)=1-\{(\frac{3}{5})^2+(\frac{2}{5})^2 \}=0.48 Gini(Outlook=Rain)=1{(53)2+(52)2}=0.48
    • 好,现在我们已经计算了每个特征值对应Gini系数了,下面就可以依据这个来计算特征OutLook的Gini系数了,这个过程比较简单了,就是将上面的计算结果,结合数据集中的分量俩进行累加,即可:
    • G i n i ( O u t l o o k ) = 5 14 ⋅ G i n i ( O u t l o o k = S u n n y ) + 4 14 ⋅ G i n i ( O u t l o o k = O v e r C a s t ) + 5 14 ⋅ G i n i ( O u t l o o k = R a i n ) = 0.342 Gini(Outlook)=\frac{5}{14}\cdot Gini(Outlook =Sunny)+\frac{4}{14}\cdot Gini(Outlook =OverCast)+\frac{5}{14}\cdot Gini(Outlook =Rain)=0.342 Gini(Outlook)=145Gini(Outlook=Sunny)+144Gini(Outlook=OverCast)+145Gini(Outlook=Rain)=0.342
    • 最终计算得到的结果: G i n i ( O u t l o o k ) = 0.342 Gini(Outlook)=0.342 Gini(Outlook)=0.342

2.2 迭代计算

  • 经过上面的计算,我想我已经很清楚的表达了如何计算了,下面简单描述计算过程:
    • 1.遍历所有特征,假如当前选择的特征为OutLook
    • 2.遍历OutLook下所有的特征值。
    • 3.统计每个特征值的数量,以及对应的每个特征值的分类的个数。Yes = 2,No=3
    • 4.计算每个特征值的Gini系数。
    • 5.加权求和计算该特征的Gini系数。
  • 根据上面的过程依次可以计算出每个特征对应的Gini系数:
    G i n i ( O u t l o o k ) = 0.342 G i n i ( T e m p . ) = 0.439 G i n i ( H u m i d i t y ) = 0.367 G i n i ( W i n d ) = 0.428 Gini(Outlook)=0.342\\ Gini(Temp.)=0.439\\ Gini(Humidity)=0.367\\ Gini(Wind)=0.428\\ Gini(Outlook)=0.342Gini(Temp.)=0.439Gini(Humidity)=0.367Gini(Wind)=0.428
  • 此时已经得到了每个特征的Gini系数,下一步就是比较系数然后进行分裂了。

2.3排序后分裂

  • 根据上面已经计算出来的结果,排序就很简单了,不多说。
  • 排序后我们选择Gini系数最小的OutLook来进行分裂。
  • 分裂过程:
    • 1.选择OutLook这个特征进行分裂。
    • 2.我们前面说了Cart树都是二叉树,那么分裂的时候还要继续选择一个分裂点,而不是选择每个分割点。
    • 3.根据上面对每个分点的计算结果可以指定OverCast的Gini系数最小为0,因此选择overCast作为切分点。
    • 4.将原始的数据集D切分成两个数据子集,迭代计算剩余特征的Gini系数和最佳切分点。
    • 5.对后续子集迭代建树,直到满足停止条件。
  • 24
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值