机器学习西瓜书——第04章决策树

本文是关于周志华老师编写的机器学习书籍『西瓜书』的第四章决策树的学习.

主要的内容有: 决策树的基本流程、信息熵、信息增益(ID3决策树)、信息增益率(C4.5决策树)和基尼指数(CART决策树)等.

4.1 基本流程(模型)

决策树(decision tree)是基于树结构来进行决策的, 是符合人类习惯的一种决策机制.

其中, 叶结点对应的是决策结果, 其他结点对应的是一个属性决策『决定按照什么属性, 将结点中的样本集合划分为子结点』, 从根结点到每个叶子结点的路径对应了一个决策序列.

既然是一棵树, 那么自然就符合递归的定义, 那么什么时候停止决策呢? 有如下三种情况:

  1. 当前结点包含的样本均属于同一标记, 无需划分.
  2. 当前结点包含的样本均属于同一属性, 不可划分; 其归属标记为该结点中包含样本数量最多的标记.
  3. 当前结点样本集合为, 不可划分; 其归属标记为父结点中包含样本数量最多的标记.

其中第三种情况我的理解是:

在父结点的样本中, 不存在该属性标记, 所以结点划分的时候该结点的样本为空, 但是我们依旧需要考虑这种情况, 因为我们是针对训练集进行的训练, 但是模型在应用的新样本中, 有可能会遇到该情况, 所以也需要考虑在分支上.

那如何归类呢? 就是按照父结点中样本数量最多的标记来标记该结点!

我们的目的就是在生成树结点的过程中去做出正确的决策划分, 通过训练集构建的决策树需要能够在进行分类决策的时候泛化能力更强.

什么决策才是正确的决策呢?

4.2 划分选择

正确的划分是将决策树的分支结点所包含的样本尽可能属于同一标记. 即, 结点的纯度(purity)最高.

信息熵

想要度量结点的纯度, 我们一般使用信息熵(information entropy)这个指标.

首先, 假设当前的样本集合 D D D中包含 n n n类样本,其中,第 k k k类样本所占的比例为 p k , ( k = 1 , 2 , 3 , ⋅ ⋅ ⋅ , n ) p_k,(k=1, 2, 3, ···, n) pk,(k=1,2,3,,n)则D的信息熵定义为:

E n t ( D ) = − ∑ k = 1 n p k log ⁡ 2 p k Ent(D) = -\sum^n_{k=1} {p_k\log_2{p_k}} Ent(D)=k=1npklog2pk

其数值则表示数据的混乱程度,信息熵值越大则数据越混乱,则表示不确定性越大,所包含的信息量也就越大,也就越难决策。

这里需要注意信息熵是负数.

好嘞, 有了信息熵的基础, 那接下来我们就可以利用信息熵来构建决策树模型.

信息增益(ID3决策树)

有了信息熵的定义, 我们就可以计算当前结点对于分类信息的信息熵, 然后按照哪个属性进行划分呢? 这时候就需要使用到信息增益(information gain)了.

按照如下思路进行考虑:

  1. 目的: 我们的目的是找出最适合进行决策的属性;
  2. 计算: 那么不妨假设按照属性A进行决策, 那么当前结点中属于属性A的样本中按照 v v v属性取值计算得到的信息熵总和是多少呢?
  3. 权重: 由于属于属性A中每个属性取值的样本个数不同, 那么对于信息熵总和的影响自然也就不同, 所以在计算的时候需要赋予一定的权重, 最简单的就是第v个属性取值占该属性样本的比重 ∣ D v ∣ ∣ D ∣ \frac{|D^v|}{|D|} DDv
  4. 循环: 依次类推计算当前结点各个属性的信息熵.
  5. 结果: 所以, 信息增益就是用当前结点的信息熵, 分别减去按照各个属性决策的信息熵总和, 由于这里是, 自然是选择信息增益越大的属性越好啦!

得到的信息增益计算公式:

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=1VDDvEnt(Dv)

著名的ID3决策树就是使用信息增益来实现属性划分的.

增益率(C4.5决策树)

但是我们容易发现, 若将『编号』这种属性进行计算的时候

G a i n ( D , 编 号 ) = E n t ( D ) − ∑ v = 1 V 1 V E n t ( 1 ) = E n t ( D ) − E n t ( 1 ) = E n t ( D ) \begin{aligned} Gain(D,编号) &= Ent(D) - \sum_{v=1}^V{\frac{1}{V}Ent(1)} \\ &= Ent(D) - Ent(1) \\ &= Ent(D) \end{aligned} Gain(D,)=Ent(D)v=1VV1Ent(1)=Ent(D)Ent(1)=Ent(D)

很明显这种取值不重复的属性的信息增益极大, 换句话说, 是『属性取值很多』的属性, 但这很明显不符合我们的预期, 因为我们都知道编号这种属性基本上是没有意义的.

由此, 我们引入了信息增益率(gain ratio)的概念.

那么我们理解一下是什么是信息增益率? 信息增益自然就是上面提到的部分, 那么『率』呢? 就需要相对于某个值了.

这里引入一个属性"固有值"(intrinsic value)的概念:

I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log ⁡ 2 ∣ D v ∣ ∣ D ∣ IV(a) = -\sum_{v=1}^V {\frac{|D^v|}{|D|}\log_2{\frac{|D^v|}{|D|}}} IV(a)=v=1VDDvlog2DDv

是不是跟信息增益很相似? 类比一下: 这就是衡量该属性取值的『混乱程度』, 数值越大越混乱, 自然就越不能要.

所以将信息增益率定义为:

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)} Gainratio(D,a)=IV(a)Gain(D,a)

由于固有值在分母, 所以信息增益率整体会偏好选择属性数目较少的属性.

著名的C4.5决策树就是利用了信息增益率的方法来实现决策树的, 但不是直接选择增益率最大的属性, 而是使用启发式的方法: 先选择信息增益高于平均水平的属性, 再从中选择出增益率最高的.

基尼指数(CART决策树)

最后要提的就是基尼指数(Gini index)了, 这是使用了一个与信息熵类似的概念——基尼值, 它们都是来衡量数据集的纯度.

G i n i ( D ) = ∑ i = 1 n ∑ j ≠ i p i p j = 1 − ∑ i = 1 n p i 2 \begin{aligned} Gini(D) &= \sum^n_{i=1}\sum_{j\neq{i}}{p_ip_j} &= 1 - \sum^n_{i=1}{p_i^2} \end{aligned} Gini(D)=i=1nj=ipipj=1i=1npi2

正如公式表示的, 基尼值反映了在样本中随机抽取两个样本, 其标记不一致的概率. 反过来就是用1减去一致的概率, 同样考虑样本个数权重的影响, 得到基尼指数计算公式:

G i n i i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini_index(D, a) = \sum^V_{v=1}{\frac{|D^v|}{|D|}Gini(D^v)} Giniindex(D,a)=v=1VDDvGini(Dv)

著名的CART决策树就是使用了基尼指数来划分属性的.

个人收获

学习了决策树模型的三种建模方式, 起码知道了ID3有比较明显的缺陷, 所以一般可以使用C4.5或CART决策树.

决策树一般不会直接使用, 多使用在森林等集成算法中, 之后再进一步学习.

关于后续的剪枝处理也会抽空尽快学习.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《机器学习西瓜书机器学习领域的一本经典教材,其中的决策树算法机器学习中的一种重要分类算法决策树算法可以用于决策问题,将问题分解成多个子问题,通过构造决策树来递归地进行分类。 决策树算法的构建过程可以分为两个步骤,即特征选择和决策树生成。在特征选择过程中,需要根据某个评估指标对不同特征进行排序,选择最优的特征作为节点进行分割。常用的评估指标包括信息增益、信息增益比和基尼系数等。在决策树生成过程中,需要递归地生成决策树的各个节点,通过特征选择将训练样本不断划分成子集,并为每个子集生成一个新的节点,直到满足停止条件。 决策树算法具有易理解、易实现的特点,同时对部分异常数据具有一定的鲁棒性。但是,在处理高维数据或特征较多的数据集时,决策树算法可能会存在过拟合等问题。为了解决这些问题,可以使用剪枝算法、随机森林等方法进行优化和改进。 在实际应用中,决策树算法被广泛应用于数据挖掘、信用评估、医学诊断、文本分类等领域。在学习和应用决策树算法时,需要注意特征选择和决策树生成的各种细节和算法选择,以及如何利用决策树算法解决实际问题。 ### 回答2: 《机器学习》这本西瓜书机器学习领域的经典教材之一,其中涉及了决策树算法决策树是一种基于树形结构的分类方法,可以用于处理离散型和连续型数据集。使用决策树算法建立模型的过程,可以理解为递归地将数据切割成小的子集,使得每个子集的纯度尽可能地提高,最终生成一棵有序的树型结构。 决策树算法的训练过程,通常分为三个步骤:选择最优特征、建立决策树以及剪枝。其中选择最优特征的目的是在当前样本集合中,找到对样本分类最有帮助的特征,通过衡量每个特征的信息增益或信息增益比,选出最优特征作为节点。根据节点特征将数据集分成若干互斥的子集,然后递归地对子集进行划分,生成决策树。最后,通过剪枝减少决策树的复杂度和泛化误差,得到最终的模型。 决策树算法在实际应用中具有很高的灵活性和可解释性,相对简单的分类问题中具有很好的性能。但是,当数据集过大或过于复杂时,决策树算法的计算复杂度会显著增加,生成的决策树容易过拟合,泛化能力较差。因此,在进行模型训练时需要进行特征选择、代码优化以及剪枝等操作。 ### 回答3: 决策树机器学习中一种常用的算法,它采用树状结构来进行分类和预测。在《机器学习西瓜书中,决策树被归为监督学习中的分类算法决策树算法的主要思想是将数据按照特征属性分为不同的类别。决策树有三个关键的概念:节点、分支、叶子节点。节点包括根节点、内部节点和叶子节点。根节点代表数据集,内部节点表示特征属性,叶子节点代表不同的数据类别。 在决策树算法中,有两种常用的构建方式:ID3算法和C4.5算法。这里我们简要介绍一下C4.5算法。C4.5算法决策树算法中的一种改进算法,它不仅考虑了信息熵,还考虑了各个特征属性之间的相关性,从而提高了决策树算法的准确率。 C4.5算法主要分为三个步骤:特征选择、决策树的生成和决策树的剪枝。在特征选择阶段,C4.5算法采用信息增益比来选择最优划分属性。在决策树的生成阶段,C4.5算法采用递归方法,依次生成决策树的各个节点。在决策树的剪枝阶段,C4.5算法通过比较剪枝前后的错误率来确定是否进行剪枝。 总的来说,决策树算法是一种简单且常用的分类算法,它不仅易于理解和解释,还具有较高的分类准确率。当然,在实际应用中,我们需要根据实际情况选择合适的决策树算法,并对模型进行调参和优化,提高算法的性能和实用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值