《机器学习西瓜书》学习笔记——第四章_决策树

1. 基本概念

决策树是一类常见的机器学习算法,是一种简单但是广泛使用的分类器。顾名思义,决策树基于树结构进行决策。一般的,一颗决策树包含一个根结点、若干个内部结点和若干个叶结点;叶结点对应于决策结果,其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根结点包含样本全集。从根结点到每个叶结点的路径对应一个判定测试序列。
决策树学习的目的是为了产生一颗泛化能力强,即处理未见示例能力强的决策树。

  • 决策数有两大优点:
    1)决策树模型可以读性好,具有描述性,有助于人工分析;
    2)效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。

2. 划分选择

决策树学习的关键是如何选择最优划分属性,一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能的属于同一类别,即结点的"纯度"越来越高。这里介绍三个划分准则:

2.1 信息增益

“信息熵”是度量样本集合纯度最常用的一种指标。假定当前样本集合 D D 中第 k k 类样本所占的比例为 p k ( k = 1 , 2 , 3 , . . . Y ) p_k(k=1,2,3,...|\mathcal{Y}|) ,z则 D D 的信息熵定义为

E n t ( D ) = k = 1 Y p k l o g 2 p k Ent(D)=-\sum_{k=1}^{|\mathcal{Y}|} p_k log_2^{p_k}

约定:若 p = 0 p=0 ,则 p l o g 2 p = 0 plog_2^p=0

E n t ( D ) Ent(D) 的值越小,则 D D 的纯度越高。

假定离散属性 a a 有V个可能的取值 { a 1 , a 2 , . . . a V } \{a^1,a^2,...a^V\} ,若使用a来对样本集 D D 进行划分,则会产生 V V 个分支结点,其中第 v v 个分支结点包含了 D D 中所有在属性 a a 上取值为 a v a^v 的样本,记为 D v D^v .根据上式计算出 D v D^v 的信息熵,考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重 D v / D |D^v|/|D| ,即样本数越多的分支结点的影响越大,于是可计算出用属性 a a 对样本集进行划分所获得的“信息增益”。

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{|D^v|\over|D|} Ent(D^v)}

一般而言,信息增益越大,意味着使用属性 a a 来进行划分所获得的“纯度提升”越大,因此,可用信息增益来进行决策树的划分属性选择,即选用 a = arg a_*=\arg maxGain(D,a), ID3决策树学习算法就是用此准则来选择划分属性。

2.2 增益率

信息增益准则对可取数值数目较多的属性有所偏好,为减少这种偏好带来的不利影响,著名的C4.5决策树算法不直接使用信息熵,而是使用“增益率”来选择最优划分属性。增益率定义为:
G a i n _ r a t i o ( D , a ) Gain\_ratio(D,a) = G a i n ( D , a ) I V ( a ) Gain(D,a)\over IV(a)
其中
I V ( a ) = v = 1 V D v D l o g 2 D v D IV(a)= - {\sum_{v=1}^V{|D^v|\over|D|} log_2 ^{|D^v|\over|D|}}
称为属性 a a 的固有值,属性 a a 的可能取值数目越大(V越大), I V ( a ) IV(a) 的值通常会越大。

增益率准则对可取数值数目较少的属性有所偏好,所以,C4.5算法并不是直接选择增益率最大额划分属性,而是使用启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

扫描二维码关注公众号,回复: 3514241 查看本文章

2.3 基尼指数

CART决策树使用“基尼指数”来选择划分属性,数据集 D D 的纯度可用基尼指指来度量:
G i n i ( D ) = k = 1 Y k k p k p k Gini(D)=\sum_{k=1}^{|\mathcal{Y}|}\sum_{k'\neq k} p_kp_{k'} =1- k = 1 Y p k 2 \sum_{k=1}^{|\mathcal{Y}|}p_k^2
直观上, G i n i ( D ) Gini(D) 反应了从数据集 D D 中随机抽取两个样本,其类别标记不一致的概率,因此 G i n i ( D ) Gini(D) 越小,数据集 D D 的纯度越高。

属性 a a 的基尼指数定义为

Gini_index ( D , a ) (D,a) = v = 1 V D v D G i n i ( D v ) \sum_{v=1}^V {|D^v|\over|D|}Gini(D^v)

于是,我们在候选属性集合A中,选择使得划分后基尼指数最小的属性作为最优划分属性,即 a = arg a_*=\arg min G i n i _ i n d e x ( D , a ) Gini\_index(D,a) .

猜你喜欢

转载自blog.csdn.net/weixin_38278334/article/details/82961504