在机器学习领域,树模型是一类直观且实用的算法,而决策树作为其中的核心代表,因其逻辑清晰、可解释性强的特点,成为入门者的首选学习内容之一。它模拟人类决策过程,从根节点开始逐步分支,最终让数据落到叶子节点得出决策,既能处理分类任务,也能完成回归任务。今天,我们就从决策树的基本组成、训练测试逻辑、核心原理到实际构造,一步步揭开它的面纱。
一、决策树的 “骨架”:基本组成
决策树的结构就像一棵倒置的树,由三个核心部分构成,每个部分在决策过程中承担着不同角色:
- 根节点:决策的起点,是第一个需要选择的特征。比如判断 “今天是否去打球”,根节点可能是 “天气如何”。
- 非叶子节点与分支:决策的中间过程。非叶子节点代表某个特征的判断条件,分支则对应该特征的不同取值。例如非叶子节点是 “天气 = 晴天”,分支就分为 “湿度高” 和 “湿度正常”。
- 叶子节点:决策的终点,代表最终的结果。比如经过一系列判断后,叶子节点可能是 “去打球” 或 “不去打球”。所有数据最终都会落到叶子节点,从而完成分类或回归。
二、决策树的 “成长”:训练与测试
决策树的应用分为训练和测试两个阶段,两者逻辑清晰,重点在于训练阶段的 “树构造”。
- 训练阶段:核心是从给定的训练集中 “长出” 一棵决策树。这个过程需要解决两个关键问题:从哪个特征开始作为根节点?每个非叶子节点后续该选择哪个特征进行切分?这是决策树的难点,也是决定模型效果的关键。
- 测试阶段:当决策树构造完成后,测试过程就非常简单。只需将测试数据从根节点开始,按照特征的判断条件沿着分支向下走,直到抵达叶子节点,叶子节点的结果就是该数据的预测结果。
三、决策树的 “导航仪”:特征切分的衡量标准
要构造一棵优质的决策树,关键是找到 “最优特征” 进行节点切分。这里我们需要两个核心概念:熵和信息增益。
1. 熵:衡量数据的不确定性
熵是表示随机变量不确定性的度量,不确定性越高,熵值越大;不确定性越低,熵值越小。其计算公式为:
H(X) = -∑(pi * logpi)(其中 i=1,2,...,n,pi 是第 i 类数据在总数据中所占的概率)
通过两个例子能更直观理解:
- 集合 A=[1,1,1,1,1,1,1,1,2,2]:数据中 “1” 占 80%,“2” 占 20%,不确定性较低,熵值较小。
- 集合 B=[1,2,3,4,5,6,7,8,9,1]:数据类别分散,不确定性高,熵值较大。
在分类任务中,我们希望通过节点分支后,数据类别的熵值变小—— 因为熵值小意味着数据更 “纯粹”,同类数据聚集在一起,分类效果更好。
进一步看熵的极端情况:
- 当 pi=0 或 pi=1 时(所有数据都是同一类),H (p)=0,此时数据完全没有不确定性,是最理想的分类结果。
- 当 pi=0.5 时(两类数据各占一半),H (p)=1,此时数据不确定性最大,分类难度最高。
2. 信息增益:选择最优特征的依据
信息增益表示 “某个特征能让类别不确定性减少的程度”。简单来说,就是通过该特征切分后,数据的熵值下降了多少 —— 信息增益越大,说明这个特征对分类的帮助越大,越适合作为当前节点的切分特征。
我们的目标很明确:计算所有候选特征的信息增益,选择增益最大的特征作为当前节点(根节点、非叶子节点),然后在后续的子节点中重复这个过程,直到所有数据都被合理分类。
四、决策树的 “实战”:14 天打球数据构造实例
理论需要结合实践,我们以 “14 天打球情况” 数据集为例,手把手演示决策树的构造过程。
1. 数据集背景
- 数据量:14 天的记录,其中 9 天去打球(yes),5 天不去打球(no)。
- 特征:4 个环境特征 —— 天气(outlook)、温度(temperature)、湿度(humidity)、是否有风(windy)。
- 目标:构造一棵决策树,判断 “当天是否适合打球”。
2. 第一步:计算初始熵
首先,计算未进行任何特征切分时,系统的初始熵(即根节点的熵)。
总数据中,“打球(yes)” 的概率 p (yes)=9/14,“不打球(no)” 的概率 p (no)=5/14,代入熵公式:
H (初始) = -[(9/14)*log (9/14) + (5/14)*log (5/14)] ≈ 0.940
3. 第二步:计算各特征的信息增益
我们以 “天气(outlook)” 为例,其取值分为 sunny、overcast、rainy 三类:
- outlook=sunny:共 5 天(3 天 yes,2 天 no),熵值 H (sunny)≈0.971。
- outlook=overcast:共 4 天(全是 yes),熵值 H (overcast)=0。
- outlook=rainy:共 5 天(2 天 yes,3 天 no),熵值 H (rainy)≈0.971。
接下来计算 “天气” 特征的条件熵(即切分后的平均熵):
H (初始 | outlook) = (5/14)*0.971 + (4/14)*0 + (5/14)*0.971 ≈ 0.693
最后计算信息增益:
信息增益 = 初始熵 - 条件熵 = 0.940 - 0.693 = 0.247
按照同样的方法,我们可以计算出 “温度”“湿度”“是否有风” 三个特征的信息增益。假设最终 “天气” 的信息增益最大,那么它就会被选为根节点。
4. 第三步:递归构造子节点
确定根节点为 “天气” 后,我们需要对每个分支(sunny、overcast、rainy)进一步处理:
决策树作为机器学习中的 “入门利器”,不仅逻辑直观、可解释性强,还能为后续学习随机森林、梯度提升树(GBDT)等集成算法打下基础。希望通过本文,你能真正搞懂决策树的核心逻辑,从 “知道” 到 “会用”,逐步打通机器学习的入门之路。
- 对于 “outlook=overcast” 分支:所有数据都是 “yes”,熵值为 0,无需继续切分,直接作为叶子节点(结果 = yes)。
- 对于 “outlook=sunny” 和 “outlook=rainy” 分支:数据仍有 “yes” 和 “no”,需要在剩余特征(温度、湿度、有风)中,再次通过 “计算信息增益” 选择最优特征作为子节点,重复这个过程,直到所有分支的熵值为 0(数据完全分类),决策树构造完成。
7096

被折叠的 条评论
为什么被折叠?



