决策树一CART算法(第一部分)


CART算法简介

CART算法是机器学习十大算法之一,这个方法的创始人Leo Breiman

CART算法展开就是Classification and Regression Tree,对应的就是分类与回归树,用树 形结构来解决分类和回归的问题。

如果输出变量是离散的,对应的就是分类问题。
如果输出变量是连续的,对应的就是回归问题。

CART算法分为三步走:选择特征、生成决策树、剪枝

在CART算法中,树形结构是二叉树模型,通常左边为「是 」,右 边为 「否」。

特征选择-基尼指数

​ ID3 算 法 通 过 信 息 增 益 求 特 征 、 C4.5 通 过 信 息 增 益 比 求 特 征 , 而 在 C A RT 算 法 中 , 是 通 过 基 尼 指 数来选择最优特征的。基尼指数越大代表其具有更高的不确定性,反之,则越具有确定性。

​ 假设有K 个类,样本点属于k第 类的概率为pkp_kpk​,权重赋值为pip_ipi​,概率分布的基尼指数定义为:

类别 1 2 3 k
所属类别概率 P1 P2 P3 PK
不属该类概率 1-P1 1-P2 1-P3 1-PK
基尼指数 P1(1-P1) P2(1-P2) P3(1-P3) PK(1-PK)

Gini(p)=∑k=1kpk(1−pk)=1−∑pk2Gini(p)=\sum_{k=1}^{k}p_k(1-p_k)=1-\sum p_k^2 Gini(p)=k=1∑k​pk​(1−pk​)=1−∑pk2​

这就是样本点 被错分的概率期望,若整个样本集只有一个类别,基尼指数为0,表示样本集纯度达到最高值。

对于二类分类问题

类别 1 2
所属类别概率 P 1-p
不属该类概率 1-p p
权重赋值为所属类别概率 P(1-P) (1-P)P

基尼指数:Gini(p)=P(1−P)+(1−P)P=2p(1−P)基尼指数:Gini(p)=P(1-P)+(1-P)P=2p(1-P) 基尼指数:Gini(p)=P(1−P)+(1−P)P=2p(1−P)

现实中并不知道所属类别的概率,用估计值表示:可以用数数来表示pk=Ck∣D∣p_k = \frac{C_k}{|D|}pk​=∣D∣Ck​​

DDD样本总个数,CkC_kCk​表示所属第k类的值

如果对给定的样本集合D,可以分为两个子集C1和C2:
经验形式的基尼指数:Gini(D)=1−∑k=12(∣Ck∣∣D∣)2经验形式的基尼指数:Gini(D)=1-\sum_{k=1}^2(\frac{|C_k|}{|D|})^2 经验形式的基尼指数:Gini(D)=1−k=1∑2​(∣D∣∣Ck​∣​)2
其中,∣Ck∣∣D∣\frac{|C_k|}{|D|}∣D∣∣Ck​∣​就是p的经验值

对于多类分类问题
Gini(p)=∑k=1kpk(1−pk)=1−∑pk2Gini(p)=\sum_{k=1}^{k}p_k(1-p_k)=1-\sum p_k^2 Gini(p)=k=1∑k​pk​(1−pk​)=1−∑pk2​
对于多分类问题,如果对给定的样本集合D,可以分为K个子集:C1,C2,.....,CKC_1,C_2, ..... ,C_KC1​,C2​,.....,CK​,其基尼指数为
经验形式的基尼指数:Gini(D)=1−∑k=12(∣Ck∣∣D∣)2经验形式的基尼指数:Gini(D)=1-\sum_{k=1}^2(\frac{|C_k|}{|D|})^2 经验形式的基尼指数:Gini(D)=1−k=1∑2​(∣D∣∣Ck​∣​)2
其中,∣Ck∣∣D∣\frac{|C_k|}{|D|}∣D∣∣Ck​∣​就是pkp_kpk​的经验值

用基尼指数的最小化来选出最优特征

​ 对于特征A条件下,样本集D的基尼指数为:
Gini⁡(D,A)=∣D1∣∣D∣Gini⁡(D1)+∣D2∣∣D∣Gini⁡(D2)\operatorname{Gini}(D, A)=\frac{\left|D_{1}\right|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{\left|D_{2}\right|}{|D|} \operatorname{Gini}\left(D_{2}\right) Gini(D,A)=∣D∣∣D1​∣​Gini(D1​)+∣D∣∣D2​∣​Gini(D2​)
例如:有10个桃子,分为两类:好吃和不好吃,5个好吃,5个不好吃。
基尼指数:Gini(p)=P(1−P)+(1−P)P=2p(1−P)=2×12×12=0.5基尼指数:Gini(p)=P(1-P)+(1-P)P=2p(1-P)=2\times\frac{1}{2}\times\frac{1}{2}=0.5 基尼指数:Gini(p)=P(1−P)+(1−P)P=2p(1−P)=2×21​×21​=0.5
特征1:甜度,阈值0.3分为两组

假设,甜度大于0.2的有6个桃子,其中5个好吃,1个不好吃,甜度小于等于0.2的有4个桃子,都不好吃,列出二叉树。数据集就被分成了D1和D2两个。甜度特征标记为A。

计算甜度特征下的基尼指数:

  1. 计算数据集D1的基尼指数 :
    Gini(D1)=P(1−P)+(1−P)P=2p(1−P)=2×56×16=1036Gini(D1)=P(1-P)+(1-P)P=2p(1-P)=2\times\frac{5}{6}\times\frac{1}{6}=\frac{10}{36} Gini(D1)=P(1−P)+(1−P)P=2p(1−P)=2×65​×61​=3610​
    D1占比权重:w1=610w_1=\frac{6}{10}w1​=106​

  2. 计算数据集D2的基尼指数 :
    Gini(D2)=P(1−P)+(1−P)P=2p(1−P)=2×04×16=0Gini(D2)=P(1-P)+(1-P)P=2p(1-P)=2\times\frac{0}{4}\times\frac{1}{6}=0 Gini(D2)=P(1−P)+(1−P)P=2p(1−P)=2×40​×61​=0
    D2占比权重:w2=410w_2=\frac{4}{10}w2​=104​

  3. 计算特征为甜度下的基尼指数:
    Gini⁡(D,A)=∣D1∣∣D∣Gini⁡(D1)+∣D2∣∣D∣Gini⁡(D2)\operatorname{Gini}(D, A)=\frac{\left|D_{1}\right|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{\left|D_{2}\right|}{|D|} \operatorname{Gini}\left(D_{2}\right) Gini(D,A)=∣D∣∣D1​∣​Gini(D1​)+∣D∣∣D2​∣​Gini(D2​)

    Gini⁡(D,A)=610×1036+410×0=0.17\operatorname{Gini}(D, A)=\frac{6}{10}\times\frac{10}{36}+\frac{4}{10}\times 0=0.17 Gini(D,A)=106​×3610​+104​×0=0.17

特征硬度,分软硬两组:

假设,有5个硬桃子,其中2个好吃,3个不好吃,5个软桃子中,有3个好吃,2个不好吃。那
么继续列出一个二叉树,这里我们把硬度特征标记为B。

计算硬度特征下的基尼指数:

  1. 计算数据集D1的基尼指数 :
    Gini(D1)=P(1−P)+(1−P)P=2p(1−P)=2×35×25=1225Gini(D1)=P(1-P)+(1-P)P=2p(1-P)=2\times\frac{3}{5}\times\frac{2}{5}=\frac{12}{25} Gini(D1)=P(1−P)+(1−P)P=2p(1−P)=2×53​×52​=2512​
    D1占比权重:w1=510w_1=\frac{5}{10}w1​=105​

  2. 计算数据集D2的基尼指数 :
    Gini(D1)=P(1−P)+(1−P)P=2p(1−P)=2×45×15=825Gini(D1)=P(1-P)+(1-P)P=2p(1-P)=2\times\frac{4}{5}\times\frac{1}{5}=\frac{8}{25} Gini(D1)=P(1−P)+(1−P)P=2p(1−P)=2×54​×51​=258​
    D1占比权重:w1=510w_1=\frac{5}{10}w1​=105​

  3. 计算特征为硬度下的基尼指数:

Gini⁡(D,B)=∣D1∣∣D∣Gini⁡(D1)+∣D2∣∣D∣Gini⁡(D2)\operatorname{Gini}(D, B)=\frac{\left|D_{1}\right|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{\left|D_{2}\right|}{|D|} \operatorname{Gini}\left(D_{2}\right) Gini(D,B)=∣D∣∣D1​∣​Gini(D1​)+∣D∣∣D2​∣​Gini(D2​)

Gini⁡(D,B)=12×1225+12×825=0.4\operatorname{Gini}(D, B)=\frac{1}{2}\times\frac{12}{25}+\frac{1}{2}\times\frac{8}{25}=0.4 Gini(D,B)=21​×2512​+21​×258​=0.4

比较
Gini⁡(D,A)<Gini⁡(D,B)\operatorname{Gini}(D, A)<\operatorname{Gini}(D, B) Gini(D,A)<Gini(D,B)

0.17<0.40.17<0.4 0.17<0.4

可知,按照甜度分类比按硬度分类更具有确定性,所以,选择甜度特征为最优特征

决策树一CART算法(第一部分)相关推荐

  1. 决策树一CART算法(第四部分)

    决策树一CART算法(第四部分) CART树的剪枝:算法步骤 输入:CART算法生成的决策树. 输出:最优决策树T 设K=0,T=T0K=0,T=T_0K=0,T=T0​ ,从完整的决策树出发 ​ k ...

  2. 决策树一一CART算法(第三部分)

    决策树一一CART算法(第三部分) CART-回归树模型 ​ 如果输出变量是 连续 的,对应的就是 回归 问题,对于决策树而言,输出的信息一定就是叶子结点,所以需要将连续变量按照一定的要求划分. 回归 ...

  3. 决策树之CART 算法(回归树,分类树)

    CART 算法,英文全称叫做 Classification And Regression Tree,中文叫做分类回归树. ID3 和 C4.5 算法可以生成二叉树或多叉树,而 CART 只支持二叉树. ...

  4. 【机器学习基础】数学推导+纯Python实现机器学习算法5:决策树之CART算法

    目录 CART概述 回归树 分类树 剪枝 Python实现示例:分类树 在数学推导+纯Python实现机器学习算法4:决策树之ID3算法中笔者已经对决策树的基本原理进行了大概的论述.本节将在上一讲的基 ...

  5. 决策树(CART算法)针对中文文本分类

    改编自博客: http://blog.csdn.net/github_36326955/article/details/54891204 根据下面的参考了链接可知,sklearn中的决策树用的是CAR ...

  6. 【机器学习】通过ID3,C4.5,CART算法构建决策树

    决策树 (一).决策树的简介 (二).构造决策树的三种构造方法 1.基于信息增益生成决策树(ID3算法) 2.基于信息增益率生成决策树(C4.5算法) 3.基于基尼指数生成决策树(CART算法) 总结 ...

  7. python 实现CART算法决策树

    有用请点赞,没用请差评. 欢迎分享本文,转载请保留出处. 本次代码是基于上一节决策树ID3\C45修改过来的,建议两篇博客一起看.具体算法原理等有时间了再写. # -*- coding:utf-8 - ...

  8. 决策树CART算法、基尼系数的计算方法和含义

    决策树CART算法--基尼系数 决策树的CART算法使用基尼系数来选择划分属性.一个数据集的纯度可以用基尼系数来度量 Gini(D)=∑k=1∣y∣∑k′≠kpkpk′=1−∑k=1∣y∣pk2\be ...

  9. 决策树数学原理(ID3,c4.5,cart算法)

    上面这个图就是一棵典型的决策树.我们在做决策树的时候,会经历两个阶段:构造和剪枝. 构造 简单来说,构造的过程就是选择什么属性作为节点的过程,那么在构造过程中,会存在三种节点: 根节点:就是树的最顶端 ...

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

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

最新文章

  1. qgis在地图上画导航线_在Laravel中的航线
  2. PHP Reflection与依赖注入
  3. es中的search_type简单理解
  4. 基于盐+Sha算法的安全密码保护机制
  5. PrintService类打印
  6. 计算机信息安全工程师教材,第三级 安全标记保护级-信息安全工程师教材
  7. PR2021安装包下载
  8. srt字幕转ass字幕在线工具分享
  9. 计算机的照相机功能,让我来告诉你单反相机那10项不可思议的功能!
  10. 重改破解易支付码支付V5.0源码
  11. 增值税发票识别,智能自动识别
  12. ElasticSearch中minimum_should_match详细介绍
  13. 使用dom4j读写xml实例
  14. spark infer parquet schema
  15. 基于埋点日志数据的网络流量统计(网站独立访客数(UV)的统计)
  16. php属于哪种语言,php是哪种类型的语言
  17. 老大一个接口加解密临时任务丢了过来,我却肝了3天,感觉可以收拾工位了
  18. MVC4 AspNet MVC下的Ajax / 使用JQuery做相关的Ajax请求
  19. PHP文字间距怎么调,在html中怎么设置文字间距
  20. 使用CVX进行Matlab仿真时出现的一些问题

热门文章

  1. unity中实现火焰的效果
  2. mysql语句翻译_mysql语句翻译成SQL语句
  3. PADS Logic原理图设计
  4. android 阻尼函数,[转载]SEO的重要公式:阻尼函数分析
  5. 数字通信之数字信号基带传输(九)
  6. SystemUI KeyguardBouncer的加载
  7. 又有朋友被骗入传销了!
  8. 液晶12864(KS0108主控)
  9. [转] 从1个月到2岁半的育儿方案,有了它宝宝都不用去上早教啦
  10. hp 服务器 修复,Hp服务器 raid 磁盘故障数据库数据恢复过程