自学数据挖掘十大算法之CART
分类与回归树(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.2 分类的流程 1.3 分类模型评价标准 2. 二分类分类案例 参考文章: 接上篇文章,接下来学习挖掘算法中的分类算法: 首先我们应该知道数据挖掘 ...
- 数据挖掘十大算法——简介
1. 简介 ICDM(国际数据挖掘大会)2006年从18种提名的数据挖掘算法中投票选出了十大算法.这18中提名数据挖掘算法分属10大数据挖掘主题,红色部分即为最终选出的十大算法: 分类(Classif ...
- 机器学习十大算法之-CART分类决策树、回归树和模型树
转载(http://blog.163.com/zhoulili1987619@126/blog/static/35308201201542731455261/) Classification And ...
- 数据挖掘十大算法之决策树详解(1)
在2006年12月召开的 IEEE 数据挖掘国际会议上(ICDM, International Conference on Data Mining),与会的各位专家选出了当时的十大数据挖掘算法( to ...
- pagerank数据集_从小白视角理解数据挖掘十大算法
关注上方"数据挖掘工程师",选择星标, 关键时间,第一时间送达! 作者 | 雪山飞猪链接 | https://www.cnblogs.com/chenqionghe/p/12301 ...
- 数据挖掘十大算法之—C4.5
http://www.cnblogs.com/superhuake/archive/2012/07/25/2609124.html C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它的目标是 ...
- 数据挖掘十大算法之C4.5
转载自:http://www.cnblogs.com/superhuake/archive/2012/07/25/2609124.html C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法.它 ...
- 从小白视角理解“数据挖掘十大算法”
目录 一.PageRank 原理 比喻说明 二.Apriori(关联分析) 原理 比喻说明 三.AdaBoost 原理 比喻说明 四.C4.5(决策树) 原理 比喻说明 五.CART(决策树) 原理 ...
- 算法高级(48)-数据挖掘十大算法简介
朴素贝叶斯 决策树 逻辑(Logistic)回归 线性回归 KNN算法(最邻近算法) SVM 聚类算法 Apriori算法(频繁项挖掘算法) EM(最大期望算法) 分类回归算法 我的微信公众号:架构真 ...
最新文章
- 使用nginx解决跨域问题
- nimbus java_Java程序设置界面为Nimbus风格x
- linux内核模块实验,linux内核模块实验(2学时)
- 使用Emit反射建立运行时实体模型
- php 跳转qq群代码_邪少xml论坛qqxml代码—QQ音乐可播放框架QQ群任意跳转个人网站链接引流...
- 《刻意练习》到底讲了些什么???
- 滤镜怎么调_手机、电脑怎么剪辑视频?真心求推荐实用工具
- 最短路径——dj+floyd+spfa(hdu2544)
- python如何使用matlab_MATLAB中的mrdivide函数:它在做什么,以及在Python中如何做?...
- mac如何使用「磁盘工具」创建dmg 映像文件
- hdu 6205: card card card【输入挂】
- 50位中国女性科学家入选2022福布斯
- 最简单DIY基于ESP8266的智能彩灯⑤(用C#调色板UI通过串口控制WS2812彩灯)
- USB总线-USB协议简介(一)
- 美萍车辆业务管理系统
- ps里14号字html里多大,在ps中几号字体是多少点的问题!
- oracle 11203 ora32701,love wife love life —Roger的Oracle/MySQL数据恢复博客
- 安徽农业大学计算机考研分数线,安徽农业大学考研录取分数线
- linux修复磁盘坏道
- 联想拯救者y7000电池耗电快_联想拯救者Y7000游戏本测评之温度、续航双测评
热门文章
- 胡泽锐:移动开发即服务——腾讯云移动开发平台技术分享
- 订单退款与退款失败任务重试
- DCI-P3广色域显示器的支持现状
- 物联网(Iot)台灯设计完整教程(长图文)
- PyCharm2020介绍
- 要月入百亿!李想的理想能否实现?
- python实现鱼眼图与六面图的转换
- win7远程计算机设置路由器,win7路由器设置图解 win7路由器怎么设置
- php curl上传文件到solr,9.Solr4.10.3数据导入(post.jar方式和curl方式)
- python将数据逐行写入excel_使用python将数据写入excel