机器学习笔记之决策树的特征选择

  • Post author:
  • Post category:其他


决策树常用的算法包含:ID3、C4.5和CART。其总结如下表,本章主要关注

特征选择

算法 支持模型 树结构 特征选择 连续值处理 缺失值处理 剪枝
ID3 分类 多叉树 信息增益 不支持 不支持 不支持
C4.5 分类 多叉树 信息增益比 支持 支持 支持
CART 分类、回归 二叉树 基尼系数,均方差 支持 支持 支持

首先举一个例子引出特征选择问题:

下表是一个由15个样本组成的贷款申请训练数据。数据包括贷款申请人的4个特征:第1个特征是年龄,有三个可能值:青年,中年,老年;第2个特征是有工作,有2个可能值:是,否;第3个特征是有自己的房子,有两个可能值:是,否;第四个特征是信贷情况,有3个可能值:非常好,好,一般。表的最后一列是类别,是否同意贷款,取二个值:是,否。

信息增益样本



信息增益

主要用于ID3算法决策树(其核心就是根据最大信息增益作为划分当前数据集的最好特征),用于处理离散的特征值,但不能处理特征为连续的情况。想要弄明白信息增益,首先要明白信息、信息熵和条件熵。


信息

:信息是用来消除随机不确定性的东西(引至香农的《通信的数学原理》)


信息熵

:信息熵是消除不确定性所需信息量的度量,也即未知事件可能含有的信息量。若不确定性越大,则信息量越大,熵越大;若不确定性越小,则信息量越小,熵越小。对于任意一个随机变量X,它的信息熵定义如下:

信息熵公式


条件熵

:条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。其定义为X给定条件下Y的条件概率分布的熵对X的数学期望:

条件熵公式


信息增益

:表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。其可以理解为信息熵与条件熵的差值。

根据信息增益准则的特征选择方法是:对训练数据集(或子集)D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。

信息增益计算公式:

信息增益计算公式

特征选择过程举例:

信息增益过程1

信息增益过程1



信息增益比

信息增益准则对可取值数目较多的属性有所偏好,为了减少这种偏好可能带来的不利影响,著名的C4.5决策树算法[Quinlan,1993]不直接使用信息增益,而是使用“增益率”(gain ratio)来选择最优划分属性。信息增益比本质:是在信息增益的基础之上乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。

信息增益比公式

需注意的是,增益率准则对可取值数目较少的属性有所偏好,因此,C4.5算法并不能直接选择增益率最大的候选划分属性,而是是使用了一个启发式[Quinlan,1993]:先从候选划分属性中找到信息增益高于平均水平的属性,再从中选择增益率最高的。



基尼(Gini)指数

Gini系数是一种与信息熵类似的做特征选择的方式,可以用来表示数据的不纯度。一般在CART算法中采用基尼指数构造二叉决策树(分类树)。Gini系统最早应用于经济学,用于衡量收入分配公平度的指标,基尼系数介于0-1之间,基尼系数越大,表示不平等程度越高(0-完全相等,1-完全不相等),当分布绝对均匀时候,取极值。一般取基尼指数最小的作为划分的依据。

基尼指数定义

特征选择过程举例:

首先计算各特征的基尼指数,选择最优特征以及最优切分点。分别以A1,A2,A3,A4表示年龄、有工作、有自己的房子和信贷情况4个特征,并以1,2,3表示年龄的值为青年、中年和老年,以1,2表示有工作和有自己的房子的值是和否,以1,2,3表示信贷情况的值为非常好、好和一般。

gini过程

注:

  • 为什么有了信息熵还要考虑采用基尼系数作为选择的方式?

    在ID3算法中我们使用了信息增益来选择特征,信息增益大的优先选择。在C4.5算法中,采用了信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的问题。但是无论是ID3还是C4.5,都是基于信息论的熵模型的,这里面会涉及大量的对数运算。能不能简化模型同时也不至于完全丢失熵模型的优点呢?有!CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。



均方差

均方差常用于CART回归树算法,采用样本的最小方差作为特征选择的依据。方差越大,表示该节点的数据越分散,预测的效果就越差。如果一个节点的所有数据都相同,那么方差就为0,此时可以很肯定得认为该节点的输出值;如果节点的数据相差很大,那么输出的值有很大的可能与实际值相差较大。

回归方差计算公式:

回归方差计算公式

举例说明

回归树总体流程:以年龄为例,预测值等于属于这个节点的所有人年龄的平均值。分枝时穷举每一个feature的每个阈值找最好的分割点,但衡量最好的标准不再是最大熵,而是最小化均方差。分枝直到每个叶子节点上人的年龄都唯一(这太难了)或者达到预设的终止条件(如叶子个数上限),若最终叶子节点上人的年龄不唯一,则以该节点上所有人的平均年龄做为该叶子节点的预测年龄,如唯一,则直接取这个叶子节点上人的年龄即可。

参考:

《统计学习方法》- 李航

《机器学习》- 周志华


https://blog.csdn.net/u014688145/article/details/53326910



https://www.cnblogs.com/pinard/p/6053344.html



版权声明:本文为oTengYue原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。