决策树之构造生成
参考说明
这篇文档展示一个完整的决策树的生成过程,希望对学习过程中的我们有所帮助:
示例数据表格
文章所使用的数据集如下,来源于《数据分析实战45讲》17讲中
天气 | 温度 | 湿度 | 刮风 | 是否打篮球 |
---|---|---|---|---|
晴 | 高 | 中 | 否 | 否 |
晴 | 高 | 中 | 是 | 否 |
阴 | 高 | 高 | 否 | 是 |
小雨 | 高 | 高 | 否 | 是 |
小雨 | 低 | 高 | 否 | 否 |
晴天 | 中 | 中 | 是 | 是 |
阴天 | 中 | 高 | 是 | 否 |
相关概念阐述
决策树
以上面的表格数据为例,比如我们考虑要不要去打篮球,先看天气是不是阴天,是阴天的话,外面刮风没,没刮风我们就去,刮风就不去。决策树就是把上面我们判断背后的逻辑整理成一个结构图,也就是一个树状结构。
ID3、C4.5、CART
在决策树构造中有三个著名算法:ID3、C4.5、CART,ID3算法计算的是信息增益,C4.5计算使用的是增益率、CART计算使用的是基尼系数,下面简单介绍下其算法,这里也不要求完全看懂,扫一眼有个印象就行,在后面的例子中有计算示例,回过头结合看应该就懂了。
信息熵
在信息论中,随机离散事件的出现的概率存在不确定性,为了衡量这种信息的不确定性,信息学之父香农引入了信息熵的概念,并给出了计算信息熵的数学公式。
Entopy(t)=-Σp(i|t)log2p(i|t)
信息增益
信息增益指的是划分可以带来纯度的提高,信息熵的下降。它的计算公式是父亲节点的信息熵减去所有子节点的信息熵。信息增益的公式可以表示为:
Gain(D,a)=Entropy(D)- Σ|Di|/|D|Entropy(Di)
信息增益率
信息增益率 = 信息增益 / 属性熵。属性熵,就是每种属性的信息熵,比如天气的属性熵的计算如下,天气有晴阴雨,各占3/7,2/7,2/7:
H(天气)= -(3/7 * log2(3/7) + 2/7 * log2(2/7) + 2/7 * log2(2/7))
基尼系数
基尼系数在经济学中用来衡量一个国家收入差距的常用指标.当基尼指数大于0.4的时候,说明财富差异悬殊.基尼系数在0.2-0.4之间说明分配合理,财富差距不大.扩展阅读下基尼系数
基尼系数本身反应了样本的不确定度.当基尼系数越小的时候,说明样本之间的差异性小,不确定程度低.
CART算法在构造分类树的时候,会选择基尼系数最小的属性作为属性的划分.
基尼系数的计算公式如下:
Gini = 1 – Σ (Pi)2 for i=1 to number of classes
举例说明
下面是一个完整的决策树的构造生成过程,已完整开头所给的数据为例
根节点的选择
在上面的列表中有四个属性:天气,温度,湿度,刮风.需要先计算出这四个属性的信息增益、信息增益率、基尼系数
数据集中有7条数据,3个打篮球,4个不打篮球,不打篮球的概率为4/7,打篮球的概率为3/7,则根据信息熵的计算公式可以得到根节点的信息熵为:
Ent(D)=-(4/7 * log2(4/7) + 3/7 * log2(3/7))=0.985
天气
其数据表格如下:
天气状态 | 打篮球数量 | 不打篮球数量 | 总数 |
---|---|---|---|
晴 | 1 | 2 | 3 |
阴 | 1 | 1 | 2 |
小雨 | 1 | 1 | 2 |
信息增益计算
如果将天气作为属性划分,分别会有三个叶节点:晴天、阴天、小雨,其中晴天2个不打篮球,1个打篮球;阴天1个打篮球,1个不打篮球;小雨1个打篮球,1个不打篮球,其对应相应的信息熵如下:
D(晴天)=-(1/3 * log2(1/3) + 2/3 * log2(2/3)) = 0.981
D(阴天)=-(1/2 * log2(1/2) + 1/2 * log2(1/2)) = 1.0
D(雨天)=-(1/2 * log2(1/2) + 1/2 * log2(1/2)) = 1.0
在数据集中晴天有3条数据,阴天有2条数据,雨天有2条数据,对应的概率为3/7、2/7、2/7,那么作为子节点的归一化信息熵为:
3/7 * 0.918 + 2/7 * 1.0 * 2/7 * 1.0 = 0.965
其信息增益为:
Gain(天气)=0.985 - 0.965 = 0.020
信息增益率计算
天气有三个选择,晴天有3条数据,阴天有2条数据,雨天有2条数据,对应的概