机器学习——决策树

文章详细介绍了决策树学习的过程,包括基本流程(遵循“分而治之”策略),划分选择(如信息增益、信息增益率和基尼指数的选择标准),以及剪枝处理(预剪枝与后剪枝的区别及对过拟合风险的影响)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本流程决策树

  一颗决策树包含一个根结点、若干个内部结点和若干个叶结点。叶结点对应于决策结果,其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果划分到子结点中;根结点包含样本全集。
  从根结点到每个叶结点的路径对应了一个判定测试序列。决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树。
  决策树构建遵循的基本流程是“分而治之”策略和递归思想
  显然,决策树的生成是一个递归过程,在决策树的
基本算法中,有3中情况会导致递归返回:(1)当前结点包含的样本全属于同一类别,无需划分。(2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分。(3)当前结点包含的样本集合为空,不能划分。
决策树学习基本算法  2—4行是递归返回的第1种情况。5—7行是递归返回的第2种情况,把当前结点标记为叶结点,并将其类别设定为该结点所含样本最多的类别,利用的是当前节点的后验分布。11—14行是递归返回的第3种情况,把当前结点标记为叶结点,但是将其类别设定为其父结点所含样本最多的类别,第3种情况是将父结点的样本分布作为当前结点的先验分布

二、划分选择

  决策树学习的关键是第8行,即如何选择最优划分属性。一般而言,希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”越来越高。

2.1 信息增益

  “信息熵”是度量样本集合纯度最常用的一种指标,假设当前样本集合DDD中第kkk类样本所占的比例为pk(k=1,2,…,∣χ∣)p_k(k=1,2,…,|\chi|)pk(k=1,2,,χ),则DDD信息熵定义为
Ent(D)=−∑k=1∣χ∣pklog⁡2pk Ent(D)=-\sum_{k=1}^{|\chi|}p_k\log_2{p_k} Ent(D)=k=1χpklog2pk

Ent(D)的最小值为0,最大值为log⁡2∣χ∣\log_2{|\chi|}log2χ
Ent(D)的值越小,则D的纯度越高

  假定离散属性aaaVVV个可能得取值{a1,a2,⋯ ,aV}\{a^1,a^2,\cdots,a^V\}{a1,a2,,aV},若使用aaa来对样本集DDD进行划分,则会产生VVV个分支结点,其中第vvv个分支结点包含了DDD中所有在属性aaa上取值为ava^vav的样本,记为DvD^vDv。可以计算出DvD^vDv的信息熵,再考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重∣Dv∣/∣D∣|D^v|/|D|Dv∣/∣D,即样本数越多的分支结点影响越大,于是可以计算出用属性aaa对样本集DDD进行划分所获得的“信息增益”。
Gain(D,a)=Ent(D)−∑v=1V∣Dv∣∣D∣Ent(Dv) Gain(D,a)=Ent(D)-\sum_{v=1}^V \frac {|D^v|} {|D|} Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

信息增益=划分前的信息熵 — 权重*划分后的信息熵。一般而言,信息增益越大,则意味着使用属性aaa来进行划分所获得的“纯度提升”越大。可用信息增益来进行决策树的划分属性选择。

2.2 信息增益率

  假定将每一行数据的标号作为划分属性,则每个分支结点仅包含一个样本,这些分支结点的纯度已经达到最大。然而,这样的决策树显然不具有泛化能力,无法对新样本进行有效预测。
  实际上,信息增益准则对可取值数据较多的属性有所偏好,为减少这种偏好可能带来的不利影响,著名的C4.5决策树算法不直接使用信息增益,而是使用“增益率”来选择最优划分属性。增益率定义为:
Gain_ratio(D,a)=Gain(D,a)IV(a) Gain\_ratio(D,a)=\frac {Gain(D,a)} {IV(a)} Gain_ratio(D,a)=IV(a)Gain(D,a)
其中,IV(a)=−∑v=1V∣DV∣Dlog⁡2∣DV∣D 其中,IV(a)=-\sum_{v=1}^V\frac {|D^V|} {D} \log_2 \frac {|D^V|} {D} 其中,IV(a)=v=1VDDVlog2DDV

IV(a)称为属性a的“固有值”,属性a的可能取值数目越多(即V越大),则IV(a)的值通常会变大。IV(a)称为属性a的“固有值”,属性a的可能取值数目越多(即V越大),则IV(a)的值通常会变大。IV(a)称为属性a固有值,属性a的可能取值数目越多(即V越大),则IV(a)的值通常会变大。
需要注意的是,增益率准则对可取值数目较少的属性有所偏好,因此,C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找到信息增益高于平均水平的属性,再从中选择增益率最高的。没有办法对信息增益和分支数目两者间做绝对正确的匹配。

2.3 基尼指数

  CART决策树使用“基尼指数”来选择划分属性,数据集DDD的纯度可以用基尼值来度量:
Gini(D)=∑k=1∣χ∣∑k′≠kpkpk′=1−∑k=1∣χ∣pk2 Gini(D)=\sum_{k=1}^{|\chi|}\sum_{k'\neq k} p_kp_k'=1-\sum_{k=1}^{|\chi|}{p_k}^2 Gini(D)=k=1χk=kpkpk=1k=1χpk2

从直观意义上看,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。因此,Gini(D)越小,则数据集D的纯度越高。

  属性aaa的基尼指数定义为
Giniindex(D,a)=∑v=1V∣Dv∣DGini(Dv) Gini_index(D,a)=\sum_{v=1}^V \frac {|D^v|} {D} Gini(D^v) Giniindex(D,a)=v=1VDDvGini(Dv)
  因此,在候选属性集合A中,选择那个使得划分后基尼指数最小的属性作为最优划分属性。

三、剪枝处理

  剪枝是决策树学习算法中对付“过拟合”的主要手段。在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这可能是因为因训练样本学得“太好了”,导致把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合。因此,主动去掉一些分支来降低过拟合的风险。单使用决策树时,一般都需要使用剪枝。
  决策树剪枝的基本策略有“预剪枝”和“后剪枝”。预剪枝是指在决策树生成过程中,对每个结点在划分前进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶节点;后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。

测试性能开销训练时间开销
预剪枝下降下降
后剪枝下降上升
过拟合风险欠拟合风险
预剪枝下降上升
后剪枝下降基本不变

  后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情形下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但是后剪枝过程是在生成完全决策树之后进行的,并且要自底向上地对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多。

决策树算法是一种广泛应用于分类和回归的机器学习算法,它基于树形结构对样本进行分类或预测。决策树算法的主要思想是通过一系列的判断来对样本进行分类或预测。在决策树中,每个节点表示一个属性或特征,每个分支代表该属性或特征的一个取值,而每个叶子节点代表一个分类或预测结果。 决策树算法的训练过程主要包括以下步骤: 1. 特征选择:根据某种指标(如信息增益或基尼系数)选择最优的特征作为当前节点的分裂属性。 2. 决策树生成:根据选择的特征将数据集分成若干个子集,并递归地生成决策树。 3. 剪枝:通过剪枝操作来提高决策树的泛化性能。 决策树算法的优点包括易于理解和解释、计算复杂度较低、对缺失值不敏感等。但是,决策树算法也存在一些缺点,如容易出现过拟合、对离散数据敏感等。 下面是一个决策树算法的案例:假设我们要根据一个人的年龄、性别、教育程度和职业预测其收入水平(高于或低于50K)。首先,我们需要将这些特征进行编码,将其转换为数值型数据。然后,我们可以使用决策树算法对这些数据进行训练,并生成一个决策树模型。最后,我们可以使用该模型对新的数据进行分类或预测。例如,根据一个人的年龄、性别、教育程度和职业,我们可以使用决策树模型预测该人的收入水平。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

解忧AI铺

你一打赏我就写得更来劲儿了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值