决策树CART
天气 | 温度 | 湿度 | 刮风 | 是否打篮球 |
---|---|---|---|---|
晴 | 高 | 中 | 否 | 否 |
晴 | 高 | 中 | 是 | 否 |
阴 | 高 | 高 | 否 | 是 |
小雨 | 高 | 高 | 否 | 是 |
小雨 | 低 | 高 | 否 | 否 |
晴天 | 中 | 中 | 是 | 是 |
阴天 | 中 | 高 | 是 | 否 |
相关概念阐述
什么是分类树,什么是回归树
以上面的表格数据为例
如果我构造了一颗决策树,想要基于数据判断这个人的职业身份,这个就属于分类树
如果我构造一颗决策树,给定数据,想要预测这个人的年龄,那就属于回归树
基尼系数
基尼系数在经济学中用来衡量一个国家收入差距的常用指标.当基尼指数大于0.4的时候,说明财富差异悬殊.基尼系数在0.2-0.4之间说明分配合理,财富差距不大.扩展阅读下基尼系数
基尼系数本身反应了样本的不确定度.当基尼系数越小的时候,说明样本之间的差异性小,不确定程度低.
CART算法在构造分类树的时候,会选择基尼系数最小的属性作为属性的划分.
基尼系数的计算公式如下:
Gini = 1 – Σ (Pi)2 for i=1 to number of classes
举例说明
这里结合下面3个链接进行说明,在参考链接3中有个非常好的举例说明,如果看我的这个还不是太清楚的话,可以去看链接中,这个不用图说明,没有他的形象
根节点的选择
在上面的列表中有四个属性:天气,温度,湿度,刮风.需要先计算出这四个属性的基尼系数
天气的基尼系数计算
其数据表格如下:
天气状态 | 打篮球数量 | 不打篮球数量 | 总数 |
---|---|---|---|
晴 | 1 | 2 | 3 |
阴 | 1 | 1 | 2 |
小雨 | 1 | 1 | 2 |
- Gini(天气=晴)=1 - (1/3)^2 - (2/3)^2 = 1 - 1/9 - 4/9 = 4/9
- Gini(天气=阴)=1 - (1/2)^2 - (1/2)^2 = 1 - 1/4 - 1/4 = 0.5
- Gini(天气=小雨)=1 - (1/2)^2 - (1/2)^2 = 1 - 1/4 - 1/4 = 0.5
CART是个二叉树,需要对属性进行再次的划分,其有下面三种组合
- Gini(天气=晴阴)=(3/5) * 4/9 + (2/5)*0.5 = 4/15 + 1/5 = 7/15 ~ 0.46666666666
- Gini(天气=晴小雨)=(3/5) * 4/9 + (2/5)*0.5 = 7/15 ~ 0.4666666
- Gini(天气=阴小雨)=(2/4)*0.5 + (2/4)*0.5 = 0.500000000
温度的基尼系数计算
其数据表格如下:
温度状态 | 打篮球数量 | 不打篮球数量 | 总数 |
---|---|---|---|
高 | 2 | 2 | 4 |
中 | 1 | 1 | 2 |
低 | 0 | 1 | 1 |
- Gini(温度=高)=1 - (2/4)^2 - (2/4)^2 = 1 - 1/4 - 1/4 = 0.5
- Gini(温度=中)=1 - (1/2)^2 - (1/2)^2 = 1 - 1/4 - 1/4 = 0.5
- Gini(温度=低)=1 - (0/1)^2 - (1/1)^2 = 1 - 0 - 1 = 0
CART是个二叉树,需要对属性进行再次的划分,其有下面三种组合
- Gini(温度=高中)=(4/6)*0.5 + (2/6)*0.5 = 1/2 ~ 0.50000000
- Gini(温度=高低)=(4/5)*0.5 + (1/5)*0 = 2/5 ~ 0.40000000
- Gini(温度=中低)=(2/3)*0.5 + (1/3)*0 = 1/3 ~ 0.33333333
湿度的基尼系数计算
其数据表格如下:
湿度状态 | 打篮球数量 | 不打篮球数量 | 总数 |
---|---|---|---|
高 | 2 | 2 | 4 |
中 | 2 | 1 |