1.引例
首先来看一个例子,这个例子是关于相亲的:
相亲的时候,我们通过比较一个一个的条件,来判断到底去不去见相亲对象,这种通过树状结构的判断就是典型的决策树。
2.决策树
决策树是一种树型结构,有节点和有向边组成。
节点:
内部节点:表示某一个属性或特征
叶结点:代表一种类别
有向边/分支:
代表一个测试输出
基本思想:采用自顶向下的递归方法,以信息熵(或其他度量条件)为度量来构造一课熵值下降最快的数,到叶子节点处的熵值为0,此时每个叶子节点中的实例都属于同一个类。
简单点理解就是:决策树本质就是一组if-then规则的集合,一个决策树将特征空间划分为不相交的单元(Cell) 或区域(Region),如下图所示:
左边的决策树将特征空间切分成右边的坐标图。每一个特征取值集合都会对应一个空间,该空间属于一个类别。
一棵决策树的构造过程如下所示:
- Step1:选取一个属性作为决策树的根结点,然后就这个属性所有的取值创建树的分支.
-
– Step2:用这棵树来对训练数据集进行分类:
* 如果一个叶结点的所有实例都属于同一类,则以该类为标记标识此叶 结点.
* 如果所有的叶结点都有类标记,则算法 终止.
– Step3:否则,选取 一个从该结点到根路径中没有出现过的属性作为标记标识该结点,然后就这个属性的所有取值继续创建树的分支;重复算法 步骤2.
建立决策树的关键,即在当前状态下选择哪个属性作为分类依据?如何判断哪个属性优先使用?
我们选取某个属性的目标是:每个分支节点的样本尽可能属于同一类别,即节点的”纯度”(Purity)越来越高,杂质度越来越低。
根据不同的目标函数,建立决策树主要由以下三种算法:
(1)ID3: 信息增益
(2)C4.5 信息增益率
(3)CART 基尼指数
3. ID3算法,信息增益
基本思想:
以信息熵为度量,用于决策树结点的属性选择,每次优先选取 信息增益最大的属性 ,即能使熵值最小的属性 ,构造一棵熵值下降最快的决策树。到叶子结点的熵值为0 ,此时对应实例集中的实例属于同一类别。
信息熵:
信息论与概率统计中,熵表示随机变量不确定性的大小,是度量样本集合纯度最常用的一种指标。令离散随机变量X概率分布为p(X=xi)=pi,则随机变量X的熵定义为:
若X为连续随机变量,则概率分布变成概率密度函数,求和负号变成积分符号即可。熵是随机变量不确定性的度量,不确定性越大,熵值越大;若随机变量退化成定值,熵为0。
经验(信息)熵:
假设当前样本集合D中第
本质上就是以每种类别出现的频率作为概率,然后计算信息熵。H(D)的值越小,则D的纯度越高。
条件熵:
对随机变量(X,Y),联合分布为p(X=xi,Y=yi)=Pij,条件熵H(Y|X)表示在一直随机变量X的条件下,随机变量
(X,Y) 发生所包含的信息熵,减去Y单独发生包含的信息熵—— 在
经验条件熵:
假设当前样本集
也就是特征a所有可能取值的条件熵之和(这个和是加权和)。反应了特征a的信息对样本D的信息的不确定性减少的程度。
信息增益:
特征a对训练数据集D的信息增益为G(D, a),定义为集合D的经验熵H(D)与特征a给定条件下D的经验条件熵H(D|a)之差,即:
ID3算法即是以信息增益为准则,对每次递归的节点属性进行选择的,选择信息增益最大的那个属性。
ID3算法流程:
输入:训练数据集D,特征集A,阈值ε
输出:决策树T
(1) 若D中所有实例属于同一类Ck ,则T为单结点树,并将类Ck作为该结点的类标记,返回T ;
(2) 若A=Φ,则T为单结点树,并将D中实例数最大类Ck作为该结点类标记,返回T ;
(3) 否则,计算A中各特征对D的信息增益,选择信息增益最大的特征Ag ;
(4) 如果Ag的信息增益小于阈值ε,则置T为单结点树,并将D中样本数最大的类Ck作为该结点的类标记,返回T ;
(5) 否则 ,对Ag的每一个可能值ai,分割D为若干非空子集Di,将Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;
(6) 对第i个子结点,以Di为训练集,A-{Ag}为特征集,递归的调用第(1)~(5) 步,得
到子树Ti,返回Ti 。
ID3举例:
数据:
计算信息熵:
计算信息增益:
选择节点属性
下一轮信息增益计算
最终树结构
ID3算法优点:
只需对 训练实例进行 较好地标注 ,就 能进行学习,从类无序、无 规则事物( 概念) 中推理 出分类规则.
分类模型是树状结构,简单直观,可将决策树中到达每个叶结点的路径转换为IF—THEN形式的分类规则,比较符合人类的理解方式.
ID3算法局限性:
- 信息增益偏好取值多的属性( 极限 趋近于均匀分布)
– 可能会受噪声或小样本影响,易出现过 拟合问题
– 无法处理连续值的属性
– 无法处理属性值不完整的训练数据
C4.5算法(信息增益率)
信息增益的问题:
--信息增益准则对可取值数目N较多的属性有所偏好.
--取值更多的 属性容易 使得数据更“纯”,其信息增益更大 。决策树会首先挑选这个属性作为树的顶结点;
结果训练出来的形状是一棵庞大且深度很浅的树,这样的划分极不合理.
信息增益率:
信息增益率表达式为:
其中
称为属性a的固有值。
N越大,H(a) 通常也越大;因此采用信息增益率,可缓解信息增益准则对可取值数目较多的属性的偏好.
C4.5算法和ID3算法类似,就是用信息增益率代替信息增益作为度量标准,其他基本类似。
CART算法
基尼指数:
假设数据集为D,数据集中类别
其中pi表示第i各类别样本的概率,计算方法为:
如果所有的样本都属于一类,则很容易得到某个pi为1,其他pi为0,则Gini指数为0,此时样本纯度越高。也就是Gini指数越小,样本纯度越高。
在CART算法中利用基尼指数构造二叉决策树(CART算法一般是构造二叉决策树,允许某个属性多次使用,这里需要注意,和ID3算法有所不同),对每个属性都会枚举其属性中的非空真子集,以属性R为例,分裂后的基尼系数为:
其中D1和D2都是D的一个非空真子集,且
我们需要寻找增量最大的那个属性R,做为下一个分裂节点。
CART算法和ID3算法类似,只是用基尼指数代替信息增益作为度量值,其他基本类似。