决策树之构造生成

本文详细介绍了决策树的构造过程,包括ID3、C4.5、CART算法,以及信息熵、信息增益、信息增益率和基尼系数等关键概念。通过示例数据展示了如何选择最佳分割属性,最终形成一个完整的决策树。在构建过程中,讨论了决策树可能存在的重复属性选择问题及其对决策效率的影响。

决策树之构造生成


参考说明

    这篇文档展示一个完整的决策树的生成过程,希望对学习过程中的我们有所帮助:

示例数据表格

    文章所使用的数据集如下,来源于《数据分析实战45讲》17讲中

天气 温度 湿度 刮风 是否打篮球
小雨
小雨
晴天
阴天

相关概念阐述

决策树

    以上面的表格数据为例,比如我们考虑要不要去打篮球,先看天气是不是阴天,是阴天的话,外面刮风没,没刮风我们就去,刮风就不去。决策树就是把上面我们判断背后的逻辑整理成一个结构图,也就是一个树状结构。

ID3、C4.5、CART

    在决策树构造中有三个著名算法:ID3、C4.5、CART,ID3算法计算的是信息增益,C4.5计算使用的是增益率、CART计算使用的是基尼系数,下面简单介绍下其算法,这里也不要求完全看懂,扫一眼有个印象就行,在后面的例子中有计算示例,回过头结合看应该就懂了。

信息熵

    在信息论中,随机离散事件的出现的概率存在不确定性,为了衡量这种信息的不确定性,信息学之父香农引入了信息熵的概念,并给出了计算信息熵的数学公式。

Entopy(t)=-Σp(i|t)log2p(i|t)
信息增益

    信息增益指的是划分可以带来纯度的提高,信息熵的下降。它的计算公式是父亲节点的信息熵减去所有子节点的信息熵。信息增益的公式可以表示为:

Gain(D,a)=Entropy(D)- Σ|Di|/|D|Entropy(Di)
信息增益率

    信息增益率 = 信息增益 / 属性熵。属性熵,就是每种属性的信息熵,比如天气的属性熵的计算如下,天气有晴阴雨,各占3/7,2/7,2/7:

H(天气)= -(3/7 * log2(3/7) + 2/7 * log2(2/7) + 2/7 * log2(2/7)) 
基尼系数

    基尼系数在经济学中用来衡量一个国家收入差距的常用指标.当基尼指数大于0.4的时候,说明财富差异悬殊.基尼系数在0.2-0.4之间说明分配合理,财富差距不大.扩展阅读下基尼系数

    基尼系数本身反应了样本的不确定度.当基尼系数越小的时候,说明样本之间的差异性小,不确定程度低.

    CART算法在构造分类树的时候,会选择基尼系数最小的属性作为属性的划分.

    基尼系数的计算公式如下:

Gini = 1 – Σ (Pi)2 for i=1 to number of classes

举例说明

    下面是一个完整的决策树的构造生成过程,已完整开头所给的数据为例

根节点的选择

    在上面的列表中有四个属性:天气,温度,湿度,刮风.需要先计算出这四个属性的信息增益、信息增益率、基尼系数

    数据集中有7条数据,3个打篮球,4个不打篮球,不打篮球的概率为4/7,打篮球的概率为3/7,则根据信息熵的计算公式可以得到根节点的信息熵为:

Ent(D)=-(4/7 * log2(4/7) + 3/7 * log2(3/7))=0.985
天气

    其数据表格如下:

天气状态 打篮球数量 不打篮球数量 总数
1 2 3
1 1 2
小雨 1 1 2
信息增益计算

    如果将天气作为属性划分,分别会有三个叶节点:晴天、阴天、小雨,其中晴天2个不打篮球,1个打篮球;阴天1个打篮球,1个不打篮球;小雨1个打篮球,1个不打篮球,其对应相应的信息熵如下:

D(晴天)=-(1/3 * log2(1/3) + 2/3 * log2(2/3)) = 0.981
D(阴天)=-(1/2 * log2(1/2) + 1/2 * log2(1/2)) = 1.0
D(雨天)=-(1/2 * log2(1/2) + 1/2 * log2(1/2)) = 1.0

    在数据集中晴天有3条数据,阴天有2条数据,雨天有2条数据,对应的概率为3/7、2/7、2/7,那么作为子节点的归一化信息熵为:

3/7 * 0.918 + 2/7 * 1.0 * 2/7 * 1.0 = 0.965

    其信息增益为:

Gain(天气)=0.985 - 0.965 = 0.020
信息增益率计算

    天气有三个选择,晴天有3条数据,阴天有2条数据,雨天有2条数据,对应的概

### 决策树构造方法与原理 决策树是一种常见的机器学习算法,其目标是根据给定的训练数据集构建一个模型,使该模型能够对新的实例进行正确的分类。决策树的学习过程通常包括三个主要步骤:特征选择、决策树生成和剪枝[^2]。 #### 特征选择 在决策树构造过程中,特征选择是一个关键步骤。通过特征选择,可以确定在每个节点上使用哪个属性来进行分裂。常用的特征选择标准包括信息增益(Information Gain)、信息增益率(Gain Ratio)和基尼系数(Gini Index)。例如,ID3算法使用信息增益来选择分裂属性,而C4.5则改进了这一方法,引入了信息增益率以减少对具有较多值的属性的偏好[^4]。 #### 决策树生成 决策树生成是从根节点开始,递归地选择最佳特征并进行分裂,直到满足某种停止条件为止。停止条件可能包括:当前节点的所有样本属于同一类别、没有剩余特征可用于进一步划分,或者达到预设的最大树深度。在这个过程中,决策树会尝试捕捉训练数据中的模式,并尽可能正确地分类训练样本。 #### 剪枝 尽管决策树生成过程旨在尽可能正确地分类训练样本,但有时会导致分支过多,从而引发过拟合问题。过拟合意味着模型对训练数据过于敏感,以至于无法很好地泛化到新的数据。为了解决这一问题,可以通过剪枝操作主动去掉一些分支,降低模型复杂度,从而提高其泛化能力。剪枝分为预剪枝和后剪枝两种方式,其中后剪枝更为常用,因为它通常能提供更好的性能[^1]。 #### 多变量决策树 除了传统的单变量决策树外,还存在多变量决策树(Multi-variate Decision Tree),这类决策树在选择分裂规则时,不是简单地依赖于某个单一特征,而是考虑一组特征的线性组合。这种方法能够更准确地捕捉数据中的复杂关系,但计算成本较高[^3]。 ```python # 示例代码:基于Scikit-learn的决策树分类器 from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split # 加载数据集 data = load_iris() X, y = data.data, data.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 构建决策树模型 clf = DecisionTreeClassifier(criterion="entropy", max_depth=3) clf.fit(X_train, y_train) # 输出模型在测试集上的表现 print(f"Test Accuracy: {clf.score(X_test, y_test):.2f}") ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值