分类与回归树(Classification andRegression Trees, CART)算法由Breiman等人于1984年提出,是分类数据挖掘算法的其中一种。CART采用一种二分递归分割的技术,将当前的样本集分为两个子样本集,使得生成的决策树的每个非叶子节点都有两个分支。CART算法生成的决策树是结构简洁的二叉树。分类树下面有两个关键的思想。第一个是关于递归地划分自变量空间的想法;第二个想法是用验证数据进行剪枝

CART算法使用如下结构的学习样本集:

其中,L是训练样本集,是属性向量(Attribute Vectors),其属性可以是离散的或者是有序的的;Y是标签向量(Label Vectors),其属性可以是离散的或者是有序的。Y是离散值,称为分类决策树;或Y是有序的数量值时,称为回归决策树树。

何为数值型变量、离散型变量?

数值型变量:对记录的值从小到大排列,计算每个值作为临界点产生的子节点的异质性统计量,能够使异质性减小程度最大的临界值便是最佳的划分点。

分类型变量:列出划分为两个子集的所有可能组合,计算每种组合生成子节点的异质性,同样,找到使异质性减小程度最大的临界值就是最佳的划分点。最佳的的划分就是使得GINI值最小的划分。

CART树的生成

在对数据进行预处理之后,开始构建决策树,决策树的核心算法是确定决策树分枝准则,该准则涉及到两个方面问题:⑴如何在众多的输入变量中选择出一个最佳的分组变量;⑵如何在分组变量的众多取值中寻找到最佳的分割值。

首先在生成原始树中引入差异系数(diversity index)的概念。此系数用于测度各个个结点内n(n>=2)个类样本的分布情况。在这里我们采用的是CART算法中最常用的杂质函数基尼系数(GINI),公式如下:

(3-1)

其中,p(j/t)为目标类别j在节点t中出现的比例。对于所有的P,所以GINI系数一定为正数,除非其中的一个P为1,而其他比为0。节点T在X属性下分为N1和N2两个部分,那么GAIN指数就是:

(3-2)

而对训练集进行划分时,划分的规则是利用二叉树的表示形式,CART算法的开始是从根节点进行划分,对各个结点进行重复递归的过程[18]:

(1)对于每个结点,选择各个属性的最优划分点。根据样本中对于分割规则“否”或“是”的回答,将结点划分为左右两个子结点,从规则中寻找变量X ,如果 最小值 ,X 那么这就是当前属性的最优划分点。

(2)在上步骤所得到的最优划分点中选择对此结点最优的分割点,成为此结点的分割规则。分割规则的确定依据是使(2)式最小。

(3)重复对此结点分割出来的两个结点进行分割这一过程。直到样本全部属于同一类为止,或者持续到叶结点样本个数极少(如少于5个),这时建成的树层次多,叶结点多,此时该树为。

我们来看一个实例:

tid

有房者

 婚姻状况

年收入

拖欠贷款者

1

2

3

4

5

6

7

8

9

10

单身

已婚

单身

已婚

离异

已婚

离异

单身

已婚

单身

125K

100K

70K

120K

95K

60K

220K

85K

75K

90K

  • 以有无房子作为分裂属性计算它的Gini值

有房

无房

拖欠贷款

0

3

3

4

Gini(有房)=1-(3/3)²-(0/3)²=0

Gini(无房)=1-(4/7)²-(3/7)²=0.4849

Gini=0.3×0+0.7×0.4898=0.343

  • 以婚否作为分裂属性计算它的Gini值

单身

已婚

离异

拖欠贷款

2

0

1

2

4

1

Gini(单身)=1-(2/4)²-(2/4)²=0.5

Gini(已婚)=1-(0/4)²-(4/4)²=0

Gini(离异)=1-(1/2)²-(1/2)²=0.5

Gini=4/10×0.5+4/10×0+2/10×0.5=0.3

  • 以组合条件作为分裂属性计算它的Gini值

单身

已婚或离异

拖欠贷款

2

1

2

5

Gini(已婚或离异)=1-(5/6)²-(1/6)²=0.2778

Gini(单身)=1-(2/4)²-(2/4)²=0.5

Gini=6/10×0.2778+4/10×0.5=0.3667

已婚

单身或离异

拖欠贷款

0

3

4

3

Gini(单身或离异)=1-(3/6)²-(3/6)²=0.5

Gini(已婚)=1-(4/4)²-(0/4)²=0

Gini=6/10×0.5+4/10×0=0.3

离异

单身或已婚

拖欠贷款

1

2

1

6

Gini(单身或已婚)=1-(6/8)²-(2/8)²=0.375

Gini(离异)=1-(1/2)²-(1/2)²=0.5

Gini=8/10×0.375+2/10×0.5=0.4

剪枝

当分类回归树划分得太细时,会对噪声数据产生过拟合作用。因此我们要通过剪枝来解决。剪枝又分为前剪枝和后剪枝:前剪枝是指在构造树的过程中就知道哪些节点可以剪掉,于是干脆不对这些节点进行分裂,在N皇后问题和背包问题中用的都是前剪枝;后剪枝是指构造出完整的决策树之后再来考查哪些子树可以剪掉。

Simplified pruning algorithm:

DEFINE: r(t)= training data misclassification rate in node t(节点t的误分率)

p(t)= fraction of the training data in node t(节点t上的数据在整个数据集上的比率)

R(t)= r(t)*p(t)(是节点t的误差代价,如果该节点被剪枝)

t_left=left child of node t

t_right=right child of node t(节点t的左右孩子)

|T| = number of terminal nodes in tree T(决策树最终的节点个数)

BEGIN: Tmax=largest tree grown

Current_Tree=Tmax

For all parents t of two terminal nodes

Remove all splits for which R(t)=R(t_left) + R(t_right)

Current_tree=Tmax after pruning

PRUNE: If |Current_tree|=1 then go to DONE

For all parents t of two terminal nodes

Remove node(s) t for which R(t)-R(t_left) - R(t_right) is minimum

Current_tree=Current_Tree after pruning

决策树的优缺点

优点:

1.可以生成可以理解的规则。

2.计算量相对来说不是很大。

3.可以处理连续和种类字段。

4.决策树可以清晰的显示哪些字段比较重要

缺点:

1.对连续性的字段比较难预测。

2.对有时间顺序的数据,需要很多预处理的工作。

3.当类别太多时,错误可能就会增加的比较快。

4.一般的算法分类的时候,只是根据一个字段来分类。

参考:

《CART算法在新浪微博客户分类中的应用研究》(本文大量参考了该文,如有侵权请联系删除)

《机器学习十大算法:CART》

自学数据挖掘十大算法之CART相关推荐

  1. 数据挖掘十大算法之分类算法(分类介绍及评价指标)

    文章目录 1. 分类相关知识 1.1 分类的概念 1.2 分类的流程 1.3 分类模型评价标准 2. 二分类分类案例 参考文章: 接上篇文章,接下来学习挖掘算法中的分类算法: 首先我们应该知道数据挖掘 ...

  2. 数据挖掘十大算法——简介

    1. 简介 ICDM(国际数据挖掘大会)2006年从18种提名的数据挖掘算法中投票选出了十大算法.这18中提名数据挖掘算法分属10大数据挖掘主题,红色部分即为最终选出的十大算法: 分类(Classif ...

  3. 机器学习十大算法之-CART分类决策树、回归树和模型树

    转载(http://blog.163.com/zhoulili1987619@126/blog/static/35308201201542731455261/) Classification And ...

  4. 数据挖掘十大算法之决策树详解(1)

    在2006年12月召开的 IEEE 数据挖掘国际会议上(ICDM, International Conference on Data Mining),与会的各位专家选出了当时的十大数据挖掘算法( to ...

  5. pagerank数据集_从小白视角理解数据挖掘十大算法

    关注上方"数据挖掘工程师",选择星标, 关键时间,第一时间送达! 作者 | 雪山飞猪链接 | https://www.cnblogs.com/chenqionghe/p/12301 ...

  6. 数据挖掘十大算法之—C4.5

    http://www.cnblogs.com/superhuake/archive/2012/07/25/2609124.html C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它的目标是 ...

  7. 数据挖掘十大算法之C4.5

    转载自:http://www.cnblogs.com/superhuake/archive/2012/07/25/2609124.html C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它 ...

  8. 从小白视角理解“数据挖掘十大算法”

    目录 一.PageRank 原理 比喻说明 二.Apriori(关联分析) 原理 比喻说明 三.AdaBoost 原理 比喻说明 四.C4.5(决策树) 原理 比喻说明 五.CART(决策树) 原理 ...

  9. 算法高级(48)-数据挖掘十大算法简介

    朴素贝叶斯 决策树 逻辑(Logistic)回归 线性回归 KNN算法(最邻近算法) SVM 聚类算法 Apriori算法(频繁项挖掘算法) EM(最大期望算法) 分类回归算法 我的微信公众号:架构真 ...

最新文章

  1. 使用nginx解决跨域问题
  2. nimbus java_Java程序设置界面为Nimbus风格x
  3. linux内核模块实验,linux内核模块实验(2学时)
  4. 使用Emit反射建立运行时实体模型
  5. php 跳转qq群代码_邪少xml论坛qqxml代码—QQ音乐可播放框架QQ群任意跳转个人网站链接引流...
  6. 《刻意练习》到底讲了些什么???
  7. 滤镜怎么调_手机、电脑怎么剪辑视频?真心求推荐实用工具
  8. 最短路径——dj+floyd+spfa(hdu2544)
  9. python如何使用matlab_MATLAB中的mrdivide函数:它在做什么,以及在Python中如何做?...
  10. mac如何使用「磁盘工具」创建dmg 映像文件
  11. hdu 6205: card card card【输入挂】
  12. 50位中国女性科学家入选2022福布斯
  13. 最简单DIY基于ESP8266的智能彩灯⑤(用C#调色板UI通过串口控制WS2812彩灯)
  14. USB总线-USB协议简介(一)
  15. 美萍车辆业务管理系统
  16. ps里14号字html里多大,在ps中几号字体是多少点的问题!
  17. oracle 11203 ora32701,love wife love life —Roger的Oracle/MySQL数据恢复博客
  18. 安徽农业大学计算机考研分数线,安徽农业大学考研录取分数线
  19. linux修复磁盘坏道
  20. 联想拯救者y7000电池耗电快_联想拯救者Y7000游戏本测评之温度、续航双测评

热门文章

  1. 胡泽锐:移动开发即服务——腾讯云移动开发平台技术分享
  2. 订单退款与退款失败任务重试
  3. DCI-P3广色域显示器的支持现状
  4. 物联网(Iot)台灯设计完整教程(长图文)
  5. PyCharm2020介绍
  6. 要月入百亿!李想的理想能否实现?
  7. python实现鱼眼图与六面图的转换
  8. win7远程计算机设置路由器,win7路由器设置图解 win7路由器怎么设置
  9. php curl上传文件到solr,9.Solr4.10.3数据导入(post.jar方式和curl方式)
  10. python将数据逐行写入excel_使用python将数据写入excel