目录
3.3在 Python 中使用 Matplotlib 注解绘制树形图
一、决策树介绍
1.1什么是决策树
决策树(decision tree)是一种基本的分类与回归方法。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。
分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点有两种类型:内部结点和叶结点。内部结点表示一个特征或属性,叶结点表示一个类。
1.2决策树实例
根据以上对话我们可以画出一棵决策树:
决策过程中提出的每个判定问题都是对某个属性的“测试”
例如年龄=?、长相=?、收入=?、是否是公务员
每个测试的结果或是导出最终结论,或者导出进一步的判定问题,其考察范围是在上次决策结果的限定范围之内。
例如 年龄<=30,之后再判断长相,则仅考虑年龄小于30的对象
从根结点到每个叶结点的路径对应了一个判定测试序列
例如 年龄小于30,长相帅,收入高的路径,最终判定结果为见
决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树。
1.3决策树的优缺点
优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
缺点:可能会产生过度匹配问题。
适用数据类型:数值型和标称型。
二、划分选择
决策树学习的关键是如何选择最优划分属性。一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”(puruty)越来越高。
2.1信息增益
“信息熵”是度量样本集合纯度最常用的一种指标,假定当前样本集合D中第k类样本所占的比例为(K=1,2,……,|y|),则D的信息熵定义为
Ent(D)的值越小,则D的纯度越高
计算信息熵时约定:若p=0,则plog2p=0
Ent(D)的最小值为0,最大值为log2|y|
离散属性a有V个可能的取值{
,
, ...,
},用a来进行划分,则会产生V个分支结点,其中第v个分支结点包含了D中所有在属性a上取值为
的样本,记为
。则可计算出用属性a对样本集D进行划分所获得的信息增益:
再考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重,样本数越多的分支结点的影响越大
一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大
说了这么多可能还是有点难理解信息增益是什么,怎么用,下面我们用个例子来说明一下
这是西瓜书上的例子 ,我们根据一个西瓜的色泽、根蒂、敲声、纹理、触感等来判断它是不是一个好瓜。
该数据集包含17个训练样本,结果有两种,一是好瓜,二是坏瓜,所以|y|=2,其中正例(好瓜)占 ,反例(坏瓜)占
,可以算出根结点的信息熵为
以属性“色泽”为例其对应的3个数据子集分别为(色泽= 青绿),
(色泽=乌黑),
(色泽=浅白)
子集包含编号为{1, 4, 6, 10, 13, 17} 的6个样例,其中正例占
,反例占
,
的信息熵为:
同理、
的信息熵为: