# Decision Tree Theory
决策树主要包括ID3,C4.5以及CART。下面给出三种算法的说明:
![image](https://github.com/Anfany/Machine-Learning-for-Beginner-by-Python3/blob/master/Decision%20Tree/decisiontree.png)
C4.5是ID3的改进版,而CART是最常用的,因此本文主要介绍CART。
***
### CART
首先看下面表格中的示例数据(随机生成,仅供参考)。其中类似年龄,身高,月收入为连续变量,学历,工作为离散变量。
+ 如果把**动心**视为目标变量,此问题为**分类问题**。
+ 如果把**动心度**视为目标变量,此问题为**回归问题**。
|编号|年龄|学历|工作|月收入(k)|身高(cm)|动心|动心度|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|0001|24|专科|国企|5|175|**N**|0.56|
|0002|35|博士|国企|13|180|**N**|0.49|
|0003|27|硕士|私企|13|173|**Y**|0.76|
|0004|23|硕士|私企|5|180|**N**|0.67|
|0005|30|硕士|国企|5|166|**N**|0.58|
|0006|22|硕士|国企|13|166|**Y**|0.60|
|0007|28|博士|国企|5|175|**Y**|0.73|
|0008|38|博士|私企|19|180|**N**|0.40|
|0009|23|专科|私企|13|175|**N**|0.52|
|0010|30|博士|国企|13|173|**Y**|0.88|
CART的目的是生成一个类似下面这样的树:分类树或者回归树。
![image](https://github.com/Anfany/Machine-Learning-for-Beginner-by-Python3/blob/master/Decision%20Tree/Gtree.png)
叶子节点若为Y或者N,是分类树;若是数字,则为回归树。下面分别讲述回归树和分类树的生成方式:
* **分类树**
ID3算法使用**信息增益**来选择特征,信息增益大的优先选择,这种方式会使得特征值较多的特征容易被选择【*示例数据中的学历可能会比工作优先选择,因为学历有3个值,而工作有2个值*】。
在C4.5算法中,采用了**信息增益比**来选择特征,改进了ID3容易选择特征值多的特征的问题。C4.5也是优先选择较大的。
上述2者都是基于信息论的**熵**模型的,这里面会涉及对数运算,因此计算成本较大。
CART分类树算法使用**基尼系数**,既减少了计算成本,又保留了熵这种运算形式的优点。基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。
+ **基尼系数**
对于一个样本集合**S**,假设其包含**m**个不同的值,这**m**个值可看作**m**个不同的类。其中由**类i**组成的集合为**Si**,那么对于属于**类i**的样本点**k**而言,其概率为**P(k)=集合Si的样本个数除去集合S的样本个数**。则基于概率分布的基尼指数定义如下:
<a href="http://www.codecogs.com/eqnedit.php?latex=\bg_white&space;\fn_phv&space;{\color{Blue}&space;\mathbf{G(S)}&space;=&space;\mathbf{1}&space;-&space;\sum_{\mathrm{i}=1}^{\mathrm{m}}(\frac{|\mathbf{S_{i}}|}{|\mathbf{S}|})^{2}}" target="_blank"><img src="http://latex.codecogs.com/gif.latex?\bg_white&space;\fn_phv&space;{\color{Blue}&space;\mathbf{G(S)}&space;=&space;\mathbf{1}&space;-&space;\sum_{\mathrm{i}=1}^{\mathrm{m}}(\frac{|\mathbf{S_{i}}|}{|\mathbf{S}|})^{2}}" title="{\color{Blue} \mathbf{G(S)} = \mathbf{1} - \sum_{\mathrm{i}=1}^{\mathrm{m}}(\frac{|\mathbf{S_{i}}|}{|\mathbf{S}|})^{2}}" /></a>
其中符号||为计算集合内元素个数的符号,对于m等于2的情况,上面的式子等价与
<a href="http://www.codecogs.com/eqnedit.php?latex=\bg_white&space;\fn_phv&space;{\color{Blue}&space;\mathbf{G(S)}&space;=&space;\mathbf{2}\mathbf{P(k)}*(\mathbf{1}-\mathbf{P(k)})}" target="_blank"><img src="http://latex.codecogs.com/gif.latex?\bg_white&space;\fn_phv&space;{\color{Blue}&space;\mathbf{G(S)}&space;=&space;\mathbf{2}\mathbf{P(k)}*(\mathbf{1}-\mathbf{P(k)})}" title="{\color{Blue} \mathbf{G(S)} = \mathbf{2}\mathbf{P(k)}*(\mathbf{1}-\mathbf{P(k)})}" /></a>
如果样本集合**S**,被某个规则R划分为n个数据子集,分别为S1, S2,……, Sn,则此时的计算基尼系数公示如下:
<a href="http://www.codecogs.com/eqnedit.php?latex=\bg_white&space;\fn_phv&space;{\color{Blue}&space;\mathbf{G(S,&space;R&space;)}&space;=&space;\sum_{\mathrm{\mathbf{j=1}}}^{\mathrm{\mathbf{n}}}\frac{\mathbf{|Sj|}}{\mathbf{|S|}}\mathbf{G(Sj)}}" target="_blank"><img src="http://latex.codecogs.com/gif.latex?\bg_white&space;\fn_phv&space;{\color{Blue}&space;\mathbf{G(S,&space;R&space;)}&space;=&space;\sum_{\mathrm{\mathbf{j=1}}}^{\mathrm{\mathbf{n}}}\frac{\mathbf{|Sj|}}{\mathbf{|S|}}\mathbf{G(Sj)}}" title="{\color{Blue} \mathbf{G(S, R )} = \sum_{\mathrm{\mathbf{j=1}}}^{\mathrm{\mathbf{n}}}\frac{\mathbf{|Sj|}}{\mathbf{|S|}}\mathbf{G(Sj)}}" /></a>
在CART算法中,上述n的值一定为2。因为每一次分裂,都是把数据集合一分为二。
针对离散、连续的变量,下面给出具体的计算基尼系数的步骤:
+ **离散变量:以工作为例**
1. 将数据集合D分为**Dg1=D(学历=国企)**以及**Dg2=D(学历!=国企)**,其中Dg1中动心构成的集合为**Mg1**;Dg2中动心构成的集合为**Mg2**;
此时的基尼系数计算如下:
<a href="http://www.codecogs.com/eqnedit.php?latex=\\&space;{\color{Blue}&space;\boldsymbol{Mg1=[N,&space;N,&space;N,Y,Y,Y]}}\\&space;\\&space;{\color{Blue}&space;\boldsymbol{Mg2=[N,&space;N,N,Y]}}\\&space;\\&space;{\color{Blue}&space;\mathbf{G(D,gongzuo=guoqi)=\frac{|Mg1|}{|D|}G(Mg1)+\frac{|Mg2|}{|D|}G(Mg2)}}\\&space;\\&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;={\color{Blue}&space;\boldsymbol{\frac{6}{10}[1-(\frac{3}{6})^{2}-(\frac{3}{6})^{2}]+\frac{4}{10}[1-(\frac{3}{4})^{2}-(\frac{1}{4})^{2}]}}\\&space;\\&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;={\color{Blue}&space;\boldsymbol{0.45}}" target="_blank"><img src="http://latex.codecogs.com/gif.latex?\\&space;{\color{Blue}&space;\boldsymbol{Mg1=[N,&space;N,&space;N,Y,Y,Y]}}\\&space;\\&space;{\color{Blue}&space;\boldsymbol{Mg2=[N,&space;N,N,Y]}}\\&space;\\&space;{\color{Blue}&space;\mathbf{G(D,gongzuo=guoqi)=\frac{|Mg1|}{|D|}G(Mg1)+\frac{|Mg2|}{|D|}G(Mg2)}}\\&space;\\&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;={\color{Blue}&space;\boldsymbol{\frac{6}{10}[1-(\frac{3}{6})^{2}-(\frac{3}{6})^{2}]+\frac{4}{10}[1-(\frac{3}{4})^{2}-(\frac{1}{4})^{2}]}}\\&space;\\&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;\cdots&space;={\color{Blue}&space;\boldsymbol{0.45}}" title="\\ {\color{Blue} \boldsymbol{Mg1=[N, N, N,Y,Y,Y]}}\\ \\ {\color{Blue} \boldsymbol{Mg2=[N, N,N,Y]}}\\ \\ {\color{Blue} \mathbf{G(D,gongzuo=guoqi)=\frac{|Mg1|}{|D|}G(Mg1)+\frac{|Mg2|}{|D|}G(Mg2)}}\\ \\ \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots ={\color{Blue} \boldsymbol{\frac{6}{10}[1-(\frac{3}{6})^{2}-(\frac{3}{6})^{2}]+\frac{4}{10}[1-(\frac{3}{4})^{2}-(\frac{1}{4})^{2}]}}\\ \\ \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots ={\color{Blue} \boldsymbol{0.45}}" /></a>
因为工作只有2个变量,因此按照工作为私企和工作为国企的基尼系数是相同的。
+ **连续变量:以月收入为例**
1. 首先将月收入的值去重后,按照从小到大的排列顺序为[5, 13, 19],相邻的数值取平均值得到序列[9, 16]。类似于离散变量的情况,以9为例:将数据集分为Dn9=D(月收入<9)以及Dm9=D(月收入>9),相应的动心组成的集合分别为**Mn9,Mm9**。
下面给出计算基尼系数的过程:
<a href="http://www.codecogs.com/eqnedit.php?latex=\\&space;{\color{Blue}&space;\boldsymbol{Mn9=[N,&space;N,&space;N,Y]}}\\&space;\\&space;{\color{Blu
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
为机器学习的入门者提供多种基于实例的sklearn、TensorFlow以及自编函数(AnFany)的ML算法程序.zip (313个子文件)
PRSA_data_2010.1.1-2014.12.31.csv 1.92MB
PRSA_data_2010.1.1-2014.12.31.csv 1.92MB
Boston.csv 41KB
Heart.csv 16KB
Wine.csv 12KB
Iris.csv 4KB
Heart.doc 1KB
tensorflow.gif 2.09MB
animation.gif 1.86MB
train-images-idx3-ubyte.gz 9.45MB
t10k-images-idx3-ubyte.gz 4.22MB
t10k-images-idx3-ubyte.gz 1.57MB
train-labels-idx1-ubyte.gz 29KB
train-labels-idx1-ubyte.gz 28KB
t10k-labels-idx1-ubyte.gz 5KB
t10k-labels-idx1-ubyte.gz 4KB
CatBoost_duibi.jpeg 93KB
1_2.jpg 285KB
duibi.jpg 192KB
duibi.jpg 177KB
duibi.jpg 172KB
ada_adult1.jpg 161KB
ada_adult.jpg 158KB
duibi_xgb.jpg 156KB
duibi_lightgbm.jpg 147KB
GBDT_pm25.jpg 145KB
xgboost_adult.jpg 140KB
Stacking_last.jpg 137KB
Blending_duibi_梯度下降法.jpg 134KB
adaboost_pm25.jpg 133KB
Blending_duibi_公式法.jpg 131KB
lightgbm_adult.jpg 129KB
method.jpg 123KB
lightgbm_pm25.jpg 113KB
rf.jpg 108KB
xgboost_pm25.jpg 108KB
method_adult1.jpg 105KB
last_foldui.jpg 101KB
CatBoost_adult.jpg 94KB
ten_mnist.jpg 92KB
Blending_pm25.jpg 88KB
Blending_adult.jpg 84KB
Stacking_adult8.jpg 51KB
Stacking_yiceng.jpg 48KB
iris_1.jpg 41KB
Blending_duibi.jpg 38KB
iris.jpg 34KB
Stacking_two.jpg 29KB
pythonfan_anfany.jpg 28KB
lena.jpg 19KB
lena.jpg 19KB
readme.md 32KB
readme.md 25KB
cnn.md 21KB
README.MD 18KB
readme.md 17KB
PaddlePaddle实战系列项目1:利用卷积神经网络实现0到9手势识别.md 16KB
readme.md 14KB
LR_Theroy.md 13KB
readme.md 12KB
Softmax_Theory.md 12KB
readme.md 11KB
convolution.md 10KB
readme.md 9KB
Linear_Regression_Theory.md 9KB
Kmeans++ Theory.md 9KB
pooling.md 6KB
README.md 5KB
fig.md 5KB
readme.md 3KB
ReadMe.md 3KB
readme.md 3KB
tensorflow_cnn.md 3KB
readme.md 3KB
readme.md 3KB
readme.md 3KB
object.md 2KB
readme.md 2KB
readme.md 2KB
object.md 2KB
readme.md 2KB
readme.md 2KB
readme.md 2KB
object.md 2KB
object.md 2KB
object.md 2KB
object.md 2KB
readme.md 2KB
object.md 2KB
readme.md 2KB
readme.md 1KB
readme.md 1KB
cnn_realize.md 1KB
readme.md 1KB
readme.md 1KB
convolution2.md 488B
readme.md 439B
readme.md 204B
readme.md 83B
readme.md 48B
共 313 条
- 1
- 2
- 3
- 4
资源评论
博士僧小星
- 粉丝: 2222
- 资源: 5988
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功