决策树的基尼系数计算过程

决策树的基尼系数计算过程

1、基尼指数的计算

在介绍具体的计算之前,先从一个例子入手吧。

先看看下面这个数据,我们需要通过前三列的特征来推断出最后一列是yes,no

1、数据

Chest PainGood Blood CirculationBlocked ArteriesHeart Disease
NoNoNoNo
YesYesYesYes
YesYesNoNo
YesNo???Yes
etc…etc…etc…etc…

2、统计

  1. Chest Pain

    1. true

      Heart Disease

      1. Yes:105
      2. No:39
    2. false

      Heart Disease

      1. Yes:34
      2. No:125
  2. Good Blood Circulation

    1. true

      Heart Disease

      1. Yes:37
      2. No:127
    2. false

      Heart Disease

      1. Yes:100
      2. No:33
  3. Blocked Arteries

    1. true

      Heart Disease

      1. Yes:92
      2. No:31
    2. false

      Heart Disease

      1. Yes:45
      2. No:129

在统计数据的时候,若遇见缺失值,最简单的办法就是先跳过这个缺失值

从统计的数据可以看出,在某一特征的条件下,无论是true或者false都有患有Heart Disease的人,同时也都有健康的人。且这两个分布是不同,有的true中患有Heart Disease的多一些,有的false中患有Heart Disease的多一些,则就要引出另一个概念—纯度。刚刚将的那种情况其实就是不纯的,那么我们接下来的操作就是对其不断的提纯。

接下来引出基尼指数的概念:基尼指数遵循最小的准则,计算得到的基尼指数越小,则越纯。接下来则以该特征作为决策树的一个分支。但若当前节点的基尼指数小于待划分节点的基尼指数时,则不需要划分。

3、基尼指数的基本公式

Single_gini = 1 − ( a a + b ) 2 − ( b a + b ) 2 1-(\dfrac{a}{a+b})^2-(\dfrac{b}{a+b})^2 1(a+ba)2(a+bb)2

Gini_Index = Single_gini_true * a + b a + b + c + d \dfrac{a+b}{a+b+c+d} a+b+c+da+b + Single_gini_false * c + d a + b + c + d \dfrac{c+d}{a+b+c+d} a+b+c+dc+d

4、上述例子的计算过程

第一次分支
  1. Chest Pain

    Gini_index = 0.364

  2. Good Blood

    Gini_indx = 0.360

  3. Blocked Arteries

    Gini_index = 0.381

有上面这些结果可知,我们第一次分叉应该选择Good Blood这个特征,因为前面我们提到,在同一情况下一个特征的基尼指数越小,其纯度也就越高,也就越具有代表性,分类的效果也就越好。上面三个例子相比较,我们应该选择Good Blood这个作为决策树的一个分支。

第二次分支

我们第一次是以Good Blood为分支的那么,假设选定该分支的true,那么其基尼指数,用上面的公式可以得到大概是0.35(false分支上的计算也是同理,这里我们只进行true分支上的基尼指数的计算)

进行分支后我们对剩余的两个特征的值进行统计

  1. Chest Pain

    1. true

      Heart Disease

      1. Yes:13
      2. No:98
    2. false

      Heart Disease

      1. Yes:24
      2. No:29
  2. Blocked Arteries

    1. true

      Heart Disease

      1. Yes:24
      2. No:25
    2. false

      Heart Disease

      1. Yes:13
      2. No:102

并在此基础上,我们进行第二次分支

接下来来计算Chest Pain和Blocked Arteries这两类特征在Good Blood这类特征的分支下的基尼指数

  1. Chest Pain

    Gini_index = 0.3

  2. Blocked Arteries

    Gini_index = 0.29

因为0.29<0.3<0.35,故我们选择Blocked Arteries作为 Good Blood的true分支下的一个分支节点

第三次分支

假设选定该分支的true,那么其基尼指数,用上面的公式可以得到大概是0.5

进行分支后我们对剩余的特征的值进行统计

  1. Chest Pain

    1. true

      Heart Disease

      1. Yes:17
      2. No:3
    2. false

      Heart Disease

      1. Yes:7
      2. No:22

并在此基础上,我们进行第三次分支

接下来来计算Chest Pain这类特征在Blocked Arteries这类特征的分支下的基尼指数

  1. Chest Pain

    Gini_index = 0.33

因为0.33<0.5,故我们选择Chest Pain作为Blocked Arteries的true分支下的一个分支节点

但假如选定的分支是false,那么其基尼指数计算得到大概是0.2

  1. Chest Pain

    1. true

      Heart Disease

      1. Yes:7
      2. No:26
    2. false

      Heart Disease

      1. Yes:6
      2. No:76

接下来来计算Chest Pain这类特征在Blocked Arteries这类特征的分支下的基尼指数

  1. Chest Pain

    Gini_index = 0.29

因为0.29>0.2故该节点不需要分支,因为分支的目的是提纯,而提纯,则是选择使基尼指数变小的那个特征,而0.29>0.2基尼系数上升,没有达到提纯的目的,故不需要分支。

学习视频:https://www.bilibili.com/video/BV17J411C7zZ?p=59

  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值