1.介绍

  • ID3树与CART树的区别:

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

2.GINI系数计算过程

  • 首先给出一个数据集D,这是一个关于是否出门的数据集,最后一列是决策列,即标签列,我们希望通过前面的一系列特征来决策最终会不会出去玩。
  • 下面我们就逐个计算每个特征的GINI系数。从而来决定选用哪个特征来作为第一个分支节点。
  • 值得注意的是,Cart树是一个二叉树,所以在计算Gini系数的时候,还要考虑,要以哪个特征值作为切分。这个也是区别于ID3 和C4.5算法的一点。
  • 假设我们按顺序计算。
Day Outlook Temp. Humidity Wind Decision
1 Sunny Hot High Weak No
2 Sunny Hot High Strong No
3 Overcast Hot High Weak Yes
4 Rain Mild High Weak Yes
5 Rain Cool Normal Weak Yes
6 Rain Cool Normal Strong No
7 Overcast Cool Normal Strong Yes
8 Sunny Mild High Weak No
9 Sunny Cool Normal Weak Yes
10 Rain Mild Normal Weak Yes
11 Sunny Mild Normal Strong Yes
12 Overcast Mild High Strong Yes
13 Overcast Hot Normal Weak Yes
14 Rain Mild High Strong No

2.1 计算OutLook的Gini系数

  • 首先我们在D数据集中选择出OutLook列的一些数据情况。
  • 看下面的表是经过统计得来的:
    • 每个特征值对应的累呗的个数,以及总的个数,我们需要这个。
    • 回忆一下计算公式:Gini=1−∑i=1kpk2Gini =1-\sum_{i=1}^{k}{p_{k}}^{2}Gini=1−∑i=1k​pk​2
Outlook Yes No Number of instances
Sunny 2 3 5
Overcast 4 0 4
Rain 3 2 5
  • 开始计算:

    • Gini(Outlook=Sunny)=1−{(25)2+(35)2}=0.48Gini(Outlook =Sunny)=1-\{(\frac{2}{5})^2+(\frac{3}{5})^2 \}=0.48Gini(Outlook=Sunny)=1−{(52​)2+(53​)2}=0.48
    • Gini(Outlook=OverCast)=1−{(44)2+(04)2}=0Gini(Outlook =OverCast)=1-\{(\frac{4}{4})^2+(\frac{0}{4})^2 \}=0Gini(Outlook=OverCast)=1−{(44​)2+(40​)2}=0
    • Gini(Outlook=Rain)=1−{(35)2+(25)2}=0.48Gini(Outlook =Rain)=1-\{(\frac{3}{5})^2+(\frac{2}{5})^2 \}=0.48Gini(Outlook=Rain)=1−{(53​)2+(52​)2}=0.48
    • 好,现在我们已经计算了每个特征值对应Gini系数了,下面就可以依据这个来计算特征OutLook的Gini系数了,这个过程比较简单了,就是将上面的计算结果,结合数据集中的分量俩进行累加,即可:
    • Gini(Outlook)=514⋅Gini(Outlook=Sunny)+414⋅Gini(Outlook=OverCast)+514⋅Gini(Outlook=Rain)=0.342Gini(Outlook)=\frac{5}{14}\cdot Gini(Outlook =Sunny)+\frac{4}{14}\cdot Gini(Outlook =OverCast)+\frac{5}{14}\cdot Gini(Outlook =Rain)=0.342Gini(Outlook)=145​⋅Gini(Outlook=Sunny)+144​⋅Gini(Outlook=OverCast)+145​⋅Gini(Outlook=Rain)=0.342
    • 最终计算得到的结果:Gini(Outlook)=0.342Gini(Outlook)=0.342Gini(Outlook)=0.342

2.2 迭代计算

  • 经过上面的计算,我想我已经很清楚的表达了如何计算了,下面简单描述计算过程:

    • 1.遍历所有特征,假如当前选择的特征为OutLook
    • 2.遍历OutLook下所有的特征值。
    • 3.统计每个特征值的数量,以及对应的每个特征值的分类的个数。Yes = 2,No=3
    • 4.计算每个特征值的Gini系数。
    • 5.加权求和计算该特征的Gini系数。
  • 根据上面的过程依次可以计算出每个特征对应的Gini系数:
    Gini(Outlook)=0.342Gini(Temp.)=0.439Gini(Humidity)=0.367Gini(Wind)=0.428Gini(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.对后续子集迭代建树,直到满足停止条件。

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

  1. Algorithm:树相关算法(BBT/BST/B树/R树)简介(二叉查找树、二叉查找树的插入节点、二叉查找树的删除、二叉树的遍历、平衡二叉树)C 语言实现

    Algorithm:树相关算法(BBT/BST/B树/R树)简介(二叉查找树.二叉查找树的插入节点.二叉查找树的删除.二叉树的遍历.平衡二叉树)C++语言实现 目录 树的基础知识 1.二叉树的遍-前序 ...

  2. 分类算法之决策树CART算法

    1. CART算法的认识 Classification And Regression Tree,即分类回归树算法,简称CART算法,它是决策树的一种实现,通常决策树主要有三种实现,分别是ID3算法,C ...

  3. cart算法_机器学习十大算法之一——决策树CART算法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第23篇文章,我们今天分享的内容是十大数据挖掘算法之一的CART算法. CART算法全称是Classification ...

  4. 机器学习算法 04 —— 决策树(ID3、C4.5、CART,剪枝,特征提取,回归决策树)

    文章目录 系列文章 决策树 1 决策树算法简介 2 决策树分类的原理 2.1 信息熵 2.2 决策树划分依据-信息增益(ID3) 2.3 决策树划分依据-信息增益率(C4.5) 2.4 决策树划分依据 ...

  5. CART树分类、回归、剪枝实现

    决策树ID3,C4.5是多叉树,CART树是一个完全二叉树,CART树不仅能完成分类也能实现回归功能,所谓回归指的是目标是一个连续的数值类型,比如体重.身高.收入.价格等,在介绍ID3,C4.5其核心 ...

  6. 02-23 决策树CART算法

    文章目录 决策树CART算法 决策树CART算法学习目标 决策树CART算法详解 基尼指数和熵 CART算法对连续值特征的处理 CART算法对离散值特征的处理 CART算法剪枝 生成剪枝后的决策树 选 ...

  7. CART树(分类回归树)

    传送门 决策树算法原理(ID3,C4.5) CART回归树 决策树的剪枝 在决策树算法原理(ID3,C4.5)中,提到C4.5的不足,比如模型是用较为复杂的熵来度量,使用了相对较为复杂的多叉树,只能处 ...

  8. k-d tree树 近邻算法

    k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构.主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索). 应用背景 SIFT算法中做特征点匹配的时候就会利用到k ...

  9. 大白话5分钟带你走进人工智能-第二十四节决策树系列之分裂流程和Gini系数评估(3)...

     第二十四节决策树系列之分裂流程和Gini系数评估(3) 上一节中我们讲解了决策树的数学表达形式,本节的话我们讲解决策树的分裂流程以及分裂条件的评估.我们基于决策树的递归表达式上:           ...

最新文章

  1. 跨平台PHP调试器设计及使用方法——协议解析
  2. pek (北大oj)3070
  3. N4 接口解耦的可行性试验
  4. Spring IOC(控制反转)详解及示例
  5. python的实现和测试是啥意思_Python接口自动化测试之pytest与unittest区别
  6. agilebpm脑图_干货基于SpringBoot2开发的Activiti引擎流程管理项目脚手架
  7. MySQL之运算符和函数
  8. 实数是不是python数据类型_Python数据类型之数字(Numbers)和运算符
  9. 创建虚机时间_云原生虚机应用托管设计篇
  10. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务...
  11. iOS开发-自定义UIAlterView(iOS 7)
  12. Qt笔记-QProcess带管道符号运行及获取进程启动时间(Linux)
  13. TensorFlow 教程 --进阶指南--3.5线程和队列
  14. MySQL高级-索引的使用及优化
  15. 千呼万唤始出来 ===Visual Studio Team System 2008 Team Suite 中文版 Out!!!
  16. C#.Net工作笔记005---c#中list合并去重_以及单纯合并_值类型list去重
  17. linux 版本信息 64位,Centos查看版本信息
  18. java timer 返回值,如何让计时器返回java时间
  19. 用递归实现求一个迷宫是否有通路
  20. RAM、ROM、FLASH的存储原理及区别

热门文章

  1. win10左下角开始图标点击不能打开
  2. 华为S5720-32X-EI-AC配置备份
  3. MSYS2快速配置C++环境+ZSH
  4. PHP基础知识 - PHP 使用 MySQLI
  5. 手把手教你读财报----银行业---第九课
  6. .jar文件如何打开_如何干净的清除Windows系统中指定文件的默认打开方式?
  7. JavaWeb:Tomat的安装
  8. asp.net简易留言板
  9. 我用Python隐藏了MacBook Pro 14的大刘海
  10. mysql修改user表密码_修改MySQL数据库中表的用户名和密码