决策树一CART算法(第一部分)
决策树一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∑kpk(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∑kpk(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。
计算甜度特征下的基尼指数:
计算数据集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计算数据集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计算特征为甜度下的基尼指数:
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。
计算硬度特征下的基尼指数:
计算数据集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计算数据集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计算特征为硬度下的基尼指数:
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算法(第一部分)相关推荐
- 决策树一CART算法(第四部分)
决策树一CART算法(第四部分) CART树的剪枝:算法步骤 输入:CART算法生成的决策树. 输出:最优决策树T 设K=0,T=T0K=0,T=T_0K=0,T=T0 ,从完整的决策树出发 k ...
- 决策树一一CART算法(第三部分)
决策树一一CART算法(第三部分) CART-回归树模型 如果输出变量是 连续 的,对应的就是 回归 问题,对于决策树而言,输出的信息一定就是叶子结点,所以需要将连续变量按照一定的要求划分. 回归 ...
- 决策树之CART 算法(回归树,分类树)
CART 算法,英文全称叫做 Classification And Regression Tree,中文叫做分类回归树. ID3 和 C4.5 算法可以生成二叉树或多叉树,而 CART 只支持二叉树. ...
- 【机器学习基础】数学推导+纯Python实现机器学习算法5:决策树之CART算法
目录 CART概述 回归树 分类树 剪枝 Python实现示例:分类树 在数学推导+纯Python实现机器学习算法4:决策树之ID3算法中笔者已经对决策树的基本原理进行了大概的论述.本节将在上一讲的基 ...
- 决策树(CART算法)针对中文文本分类
改编自博客: http://blog.csdn.net/github_36326955/article/details/54891204 根据下面的参考了链接可知,sklearn中的决策树用的是CAR ...
- 【机器学习】通过ID3,C4.5,CART算法构建决策树
决策树 (一).决策树的简介 (二).构造决策树的三种构造方法 1.基于信息增益生成决策树(ID3算法) 2.基于信息增益率生成决策树(C4.5算法) 3.基于基尼指数生成决策树(CART算法) 总结 ...
- python 实现CART算法决策树
有用请点赞,没用请差评. 欢迎分享本文,转载请保留出处. 本次代码是基于上一节决策树ID3\C45修改过来的,建议两篇博客一起看.具体算法原理等有时间了再写. # -*- coding:utf-8 - ...
- 决策树CART算法、基尼系数的计算方法和含义
决策树CART算法--基尼系数 决策树的CART算法使用基尼系数来选择划分属性.一个数据集的纯度可以用基尼系数来度量 Gini(D)=∑k=1∣y∣∑k′≠kpkpk′=1−∑k=1∣y∣pk2\be ...
- 决策树数学原理(ID3,c4.5,cart算法)
上面这个图就是一棵典型的决策树.我们在做决策树的时候,会经历两个阶段:构造和剪枝. 构造 简单来说,构造的过程就是选择什么属性作为节点的过程,那么在构造过程中,会存在三种节点: 根节点:就是树的最顶端 ...
- 分类算法之决策树CART算法
1. CART算法的认识 Classification And Regression Tree,即分类回归树算法,简称CART算法,它是决策树的一种实现,通常决策树主要有三种实现,分别是ID3算法,C ...
最新文章
- qgis在地图上画导航线_在Laravel中的航线
- PHP Reflection与依赖注入
- es中的search_type简单理解
- 基于盐+Sha算法的安全密码保护机制
- PrintService类打印
- 计算机信息安全工程师教材,第三级 安全标记保护级-信息安全工程师教材
- PR2021安装包下载
- srt字幕转ass字幕在线工具分享
- 计算机的照相机功能,让我来告诉你单反相机那10项不可思议的功能!
- 重改破解易支付码支付V5.0源码
- 增值税发票识别,智能自动识别
- ElasticSearch中minimum_should_match详细介绍
- 使用dom4j读写xml实例
- spark infer parquet schema
- 基于埋点日志数据的网络流量统计(网站独立访客数(UV)的统计)
- php属于哪种语言,php是哪种类型的语言
- 老大一个接口加解密临时任务丢了过来,我却肝了3天,感觉可以收拾工位了
- MVC4 AspNet MVC下的Ajax / 使用JQuery做相关的Ajax请求
- PHP文字间距怎么调,在html中怎么设置文字间距
- 使用CVX进行Matlab仿真时出现的一些问题