CART(Classification And Regression Tree)算法原理详解
2017-07-11 22:11
387 查看
1. Gini指数
CART决策树是用”吉尼指数”来选择属性划分。数据集D的纯度可用基尼值来度量:Gini(D)=∑k=1n∑k′≠kpkpk′=1−∑k=1np2k
直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。因此Gini(D)越小,数据集D纯度越高。因此属性α的基尼指数定义为:
Gini(D,α)=∑v=1V|Dv||D|Gini(Dv)
假设数据集D在属性α上有V个不同的取值,则用属性α来划分时,一共有v个不同的分支。Dv指的是D中在α属性上取值为αv的所有样本集合。Gini(Dv)指的是前面划分的子样本集合Dv在标签label上的Gini不纯度。
因此我们要做的就是在属性集合A={α1,α2...,αn}中,我们需要找出使得Gini(D,αi)最小的αi,即:
α∗=argminα∈AGini(D,α)
下面以一个简单的例子来进行说明:
ID | 有房 | 婚姻状况 | 年收入 | label(是否拖欠贷款) |
---|---|---|---|---|
1 | 是 | 单身 | 125K | 否 |
2 | 否 | 已婚 | 100K | 否 |
3 | 否 | 单身 | 70K | 否 |
4 | 是 | 已婚 | 120K | 否 |
5 | 否 | 离异 | 95K | 是 |
6 | 否 | 已婚 | 60K | 否 |
7 | 是 | 离异 | 220K | 否 |
8 | 否 | 单身 | 85K | 是 |
9 | 否 | 已婚 | 75K | 否 |
10 | 否 | 单身 | 90K | 是 |
拖欠? | 有房 | 无房 |
---|---|---|
未拖欠 | 3 | 4 |
拖欠 | 0 | 3 |
Gini有房=1−(33)2−(03)2=0
Gini无房=1−(47)2−(37)2=0.4849
故
Ginihouse=710×Gini无房=710×0.4849=0.343
对于婚姻状况,有3种情况:
是否离异
拖欠? | 单身或已婚 | 离异 |
---|---|---|
未拖欠 | 6 | 1 |
拖欠 | 2 | 1 |
Ginit1=1−(68)2−(28)2=0.375
Ginit2=1−(12)2−(12)2=0.5
则
Gini1=0.8×0.375+0.2×0.5=0.4
是否已婚
拖欠? | 单身或离异 | 已婚 |
---|---|---|
未拖欠 | 3 | 4 |
拖欠 | 3 | 0 |
则
Gini2=0.6×0.5=0.3
是否单身
拖欠? | 离异或已婚 | 单身 |
---|---|---|
未拖欠 | 5 | 2 |
拖欠 | 1 | 2 |
Ginit1=1−(56)2−(16)2=0.2778
Ginit2=1−(22)2−(22)2=0.5
则
Gini3=0.6×0.2778+0.4×0.5=0.3667
对于连续属性年收入,假设个样本的集合一个属性有个连续的值,那么则会有个分裂点,每个分裂点为相邻两个连续值的均值,每个属性的划分按照能减少的杂质的量来进行排序。采用如下方式来计算:
分局基尼系数最小的原则,可以选择年收入是否大于97K或者是否已婚来作为第一步的分裂条件。
2. 分裂的终止条件
节点达到完全纯度树的深度达到用户要求的深度
节点中样本个数少于指定数目
分类条件和列别的相关程度很弱
此时说明分裂条件和类别独立,即此时的分裂条件是没有道理的,节点应该停止分裂。这里的分裂条件是按照上面的GiniGini指数最小原则得到的分裂条件。独立性检验采用χ2检验法,例如下表:
此时动物类别与是否为恒温相互独立,再继续分裂没有意义,因此停止分裂。
3. CART树的剪枝
CART采用复杂性剪枝法,即对于每一个非叶子节点计算它的表面误差率增益值α:α=R(t)−R(Tt)|NTt|−1
其中|NTt|是子树中包含的叶子节点个数。R(t)是节点的误差代价。R(t)=r(t)∗p(t),r(t)是节点t的误差率,p(t)是节点t上数据所占的比率。R(Tt)是子树的误差代价,如果该节点不被剪枝。它等于子树Tt上所有叶子节点的误差代价之和。例如:
则节点t4的误差代价为:
R(t)=r(t)∗p(t)=716∗1660=760
节点t4的子树的误差代价为:
R(Tt)=∑R(i)=260+360=560
节点t4的叶子节点共有3个,故:
α=R(t)−R(Tt)|NTt|−1=7/60−5/603−1=16
继续剪枝,并找出α最小的非叶子节点,令其左右子树均为NULL。当多个非叶子节点的α值同时达到最小时,取|NTt|最大的进行剪枝。
剪枝停止的条件
在CART树中,对所有的非叶子节点都要进行剪枝,直到剪枝为只有1个根节点为止。此时会得到一系列的决策树{T0,T0,...,Tn}.然后采用交叉验证的方法,从{T0,T0,...,Tn}选出最优子树Tα参考文献:
1. 机器学习. 周志华
2. 统计学习方法. 李航
相关文章推荐
- 树回归CART(Classification And Regression Tree)(1)
- 分类回归树-classification and regression tree-CART
- 树回归CART(Classification And Regression Tree)(2)
- CART(Classification And Regression Tree)
- 分类与回归树(CART,Classification And Regression Tree)
- 【数据挖掘】决策树之CART (Classification and Regression Trees)分类与回归树
- 分类和回归树CART(Classification and Regresstion tree)
- 分类和回归树(CART, Classification and Regression Trees)
- Logistic Regression and Classification
- 通过源码学算法--AdaBoost (CART): RealAdaBoost.m + tree_node_w.m
- AAC解码算法原理详解
- Canny边缘检测算法原理及其VC实现详解
- CART算法原理及实现
- 深入理解Oracle表(5):三大表连接方式详解之Hash Join的定义,原理,算法,成本,模式和位图
- 路由器原理和路由协议、算法详解(5)
- Canny边缘检测算法原理及其VC实现详解(二)
- Canny边缘检测算法原理及其VC实现详解(一)
- 关于Yuri Boykov and Vladimir Kolmogorov 于2004年提出的max flow / min cut的算法的详解
- 路由器原理和路由协议、算法详解(4)
- Canny边缘检测算法原理及其VC实现详解