决策树——从理论到入手
决策树
基本知识点
基本概念
定义:决策树是一类常见的机器学习方法,是一种描述对实例进行分类的树形结构。(给定的实例具有一系列特征,根据这些特征进行判断结果)
描述:决策树由结点和有向边组成。结点可分成:根结点、内部结点、叶结点
根节点:样本全集
内部结点:一个特征或一个属性测试
叶节点:决策结果
判定测试序列:从根节点到每个叶结点的路径对应了一个判定测试序列
目的:产生一颗泛化能力强,即处理未见示例能力强的决策树。
分析与思考
现以西瓜书中如何判断好瓜还是坏瓜的决策树进行理解:
西瓜数据集:
西瓜决策树图:
看到上面的数据集以及生成的决策树,我们便会发现以下的一些问题:
- 这不就是if-else吗,为什么要那么麻烦呢?
- 西瓜决策树第一次为什么是根据纹理来判断?
- 西瓜决策树为什么在第二层判断触感,在第四层树中又有判断触感这一特征呢?
- 在数据集中,有敲声和脐部这两个特征,为什么在决策树中没有体现呢?
- 西瓜数据集的大小对决策树会有怎样的影响呢?
首先先说一下第一个问题:这不就是简单的if-else就可以完成的吗?
首先,决策树的起源就是这么质朴,就是来源于数据机构中的分支结构if-else,之所以要采用树形结构是因为它带来了效率的提高,并且可以有效的让我们进行优化得到一个不错的结果。
然后,请您带着以上的问题接着往下看,我将为您竭尽全力的帮助您了解决策树。
决策树前提知识点
信息增益、增益率、基尼指数
针对上述第二问:西瓜决策树第一次为什么是根据纹理来判断?那肯定是因为纹理可以帮我们更好的辨别哪一个是好瓜还是坏瓜。
决策的目的是为了更好的分类,如果所有的特征带给我们的结果都是50%是好瓜、50%是坏瓜,那决策没有任何意义,买任何一个西瓜,都只存在这两种情况(非好即坏),所以我们的决策树从根结点到叶结点的决策类肯定是越来越低的,毕竟我们追求的就是:通过最短的判定测试序列准确的判断我们选的西瓜是好瓜还是坏瓜。
由此,我们可以知道,决策树学习的关键在于——如何选择最有划分属性。
接下来就介绍三种经典的属性划分方法:
信息增益(ID3)
想要了解信息增益,你需要先知道什么是信息熵。
信息熵
定义:度量样本集合纯度最常用的一种指标。假定当前样本集合D中第K类样本所占比为pk(K = 1,2,3,4…|y|),则D的信息熵
E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k log 2 p k Ent(D) = -\sum_{k=1}^{|y|} p_{k}\log_{2}{p_{k}} Ent(D)=−k=1∑∣y∣pklog2pk
- pk是分类的结果数,如果是二分类就是|y| = 2,在西瓜样例中就是好瓜和坏瓜
- 单位:bit
- Ent(D)值越小,D的纯度越高
- p = 0,则plogp = 0(约定)
- Ent(D)最小值为0,最大值为log|y|
当了解完信息熵,我们便可以了解一下信息增益了。
信息增益:
离散属性a有V个可能的取值{
,
, …,
},用a来进行划分,则会产生V个分支结点,其中第v个分支结点包含了D中所有在属性a上取值为
的样本,记为
。
直白的讲:哪一个特征色泽出来(以西瓜判别为例),有青绿(6/17)、乌黑(6/17)、浅白(5/17)三种,分别计算这三者的信息熵,然后进行按比例累加求和。
则可计算出用属性a对样本集D进行划分所获得的信息增益:
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D, a) = Ent(D) - \sum_{v=1}^{V}\frac{|D^{v}|}{|D|} Ent(D^{v} ) Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
一般而言:信息增益越大,实用属性a进行划分所获得的“纯度提升”越大。(直接点说就是:你的信息增益越大,那么使用它先分类的可能性越大。)
但是存在一个问题:
数据集中一般有一个“编号”(可以往上翻一下,看一些截图),如果把他也作为一个候选划分属性,那么它的信息增益会比其他属性大。
每一个编号(1、2、3…|y|)都是“编号”组中的实例,|y|个分支,故每个编号的信息熵如下:
E n t ( D v ) = ( − ( 1 log 2 1 + 0 log 2 0 ) ) Ent(D^{v}) = (-(1\log_{2}{1} + 0\log_{2}{0})) Ent(Dv)=(−(1log21+0log20))E n t ( D v ) = 0 Ent(D^{v}) = 0 Ent(Dv)=0
大家可以试着计算以下(这里不做过多赘述),由信息增益公式可知“ Ent(D) - 0 ”时,是信息增益最大的时候了。
注意:这里0不在对数函数的定义域,但是这是一个约定俗成的,所以不必太纠结其数学含义。
由此可见——信息增益对取值数目较多的属性有所偏好!
在遇到这种情况,提出了一个新的概念,叫做——增益率。
增益率(C4.5)
公式:
G a i n r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain_ratio(D, a) = \frac{Gain(D, a)}{IV(a)}