树类算法之---决策树Cart树Gini系数就算原理。
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∑kpk⋅(1−pk)=1−i=1∑kpk2
- 假设有数据集D,定义GINI指数:
- 记住上面的公式我们会在后面计算的时候用到
- 简单分析:
- 从公式中可以看出来,基尼指数的意义是从数据集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=1kpk2
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系数。
- 1.遍历所有特征,假如当前选择的特征为
- 根据上面的过程依次可以计算出每个特征对应的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系数就算原理。相关推荐
- Algorithm:树相关算法(BBT/BST/B树/R树)简介(二叉查找树、二叉查找树的插入节点、二叉查找树的删除、二叉树的遍历、平衡二叉树)C 语言实现
Algorithm:树相关算法(BBT/BST/B树/R树)简介(二叉查找树.二叉查找树的插入节点.二叉查找树的删除.二叉树的遍历.平衡二叉树)C++语言实现 目录 树的基础知识 1.二叉树的遍-前序 ...
- 分类算法之决策树CART算法
1. CART算法的认识 Classification And Regression Tree,即分类回归树算法,简称CART算法,它是决策树的一种实现,通常决策树主要有三种实现,分别是ID3算法,C ...
- cart算法_机器学习十大算法之一——决策树CART算法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第23篇文章,我们今天分享的内容是十大数据挖掘算法之一的CART算法. CART算法全称是Classification ...
- 机器学习算法 04 —— 决策树(ID3、C4.5、CART,剪枝,特征提取,回归决策树)
文章目录 系列文章 决策树 1 决策树算法简介 2 决策树分类的原理 2.1 信息熵 2.2 决策树划分依据-信息增益(ID3) 2.3 决策树划分依据-信息增益率(C4.5) 2.4 决策树划分依据 ...
- CART树分类、回归、剪枝实现
决策树ID3,C4.5是多叉树,CART树是一个完全二叉树,CART树不仅能完成分类也能实现回归功能,所谓回归指的是目标是一个连续的数值类型,比如体重.身高.收入.价格等,在介绍ID3,C4.5其核心 ...
- 02-23 决策树CART算法
文章目录 决策树CART算法 决策树CART算法学习目标 决策树CART算法详解 基尼指数和熵 CART算法对连续值特征的处理 CART算法对离散值特征的处理 CART算法剪枝 生成剪枝后的决策树 选 ...
- CART树(分类回归树)
传送门 决策树算法原理(ID3,C4.5) CART回归树 决策树的剪枝 在决策树算法原理(ID3,C4.5)中,提到C4.5的不足,比如模型是用较为复杂的熵来度量,使用了相对较为复杂的多叉树,只能处 ...
- k-d tree树 近邻算法
k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构.主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索). 应用背景 SIFT算法中做特征点匹配的时候就会利用到k ...
- 大白话5分钟带你走进人工智能-第二十四节决策树系列之分裂流程和Gini系数评估(3)...
第二十四节决策树系列之分裂流程和Gini系数评估(3) 上一节中我们讲解了决策树的数学表达形式,本节的话我们讲解决策树的分裂流程以及分裂条件的评估.我们基于决策树的递归表达式上: ...
最新文章
- 跨平台PHP调试器设计及使用方法——协议解析
- pek (北大oj)3070
- N4 接口解耦的可行性试验
- Spring IOC(控制反转)详解及示例
- python的实现和测试是啥意思_Python接口自动化测试之pytest与unittest区别
- agilebpm脑图_干货基于SpringBoot2开发的Activiti引擎流程管理项目脚手架
- MySQL之运算符和函数
- 实数是不是python数据类型_Python数据类型之数字(Numbers)和运算符
- 创建虚机时间_云原生虚机应用托管设计篇
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务...
- iOS开发-自定义UIAlterView(iOS 7)
- Qt笔记-QProcess带管道符号运行及获取进程启动时间(Linux)
- TensorFlow 教程 --进阶指南--3.5线程和队列
- MySQL高级-索引的使用及优化
- 千呼万唤始出来 ===Visual Studio Team System 2008 Team Suite 中文版 Out!!!
- C#.Net工作笔记005---c#中list合并去重_以及单纯合并_值类型list去重
- linux 版本信息 64位,Centos查看版本信息
- java timer 返回值,如何让计时器返回java时间
- 用递归实现求一个迷宫是否有通路
- RAM、ROM、FLASH的存储原理及区别