决策树是一种监督学习算法,它通过递归地将数据集划分为子集,构建出一个类似流程图的树形结构。每个内部节点代表一个特征的判断,每个分支代表判断的结果,每个叶节点代表最终的分类或回归值。
一、决策树基础:核心概念与数学原理
1.1 什么是决策树?
决策树具有极强的可解释性,就像一个专家系统,能够清晰地展示决策的过程。
1.2 关键评价指标:熵与信息增益
要理解决策树的构建过程,我们首先需要掌握两个核心概念:熵(Entropy)和信息增益(Information Gain)。
1.2.1 熵:衡量数据的混乱程度
熵是信息论中的基本概念,用于衡量数据集的纯度或混乱程度。对于一个包含 n 个类别的数据集,其熵的计算公式为:
H(S)=−∑i=1npilog2(pi)
其中 pi 是第 i 个类别在数据集中的比例。熵值越高,说明数据越混乱;熵值越低,说明数据越纯净。
以我们使用的天气数据集为例,14 天的记录中有 9 天去打球(Yes),5 天不去(No)。整个数据集的熵为:
H(S)=−14/9log2(14/9)−14/5log2(14/5)≈0.940
这个值表示在没有任何特征信息的情况下,我们对是否去打球的不确定性。
1.2.2 信息增益:衡量特征的区分能力
信息增益表示通过某个特征划分数据集后,熵的减少量。它反映了该特征对降低数据不确定性的贡献。信息增益的计算公式为:
IG(S,A)=H(S)−∑v∈Values(A)|S|/|Sv|H(Sv)
其中 Sv 是特征 A 取值为 v 的子集。信息增益越大,说明该特征对分类的贡献越大,越适合作为当前节点的划分特征。
二、ID3 算法:信息增益的引领者
2.1 ID3 算法原理
ID3(Iterative Dichotomiser 3)是由 Ross Quinlan 于 1986 年提出的决策树算法。它以信息增益为准则,选择最优特征作为当前节点的划分依据,递归地构建决策树。
ID3 算法的核心步骤:
- 如果当前数据集的所有样本属于同一类别,则创建叶节点并返回。
- 如果没有可用特征,则创建叶节点,标记为数据集中最常见的类别并返回。
- 计算每个特征的信息增益,选择信息增益最大的特征作为当前节点。
- 对于该特征的每个可能取值,创建一个分支,并将数据集划分为相应的子集。
- 对每个子集递归调用上述步骤,构建子树。
2.2 天气数据集实战
让我们用经典的天气数据集来演示 ID3 算法的具体实现。
2.2.1 数据集介绍
我们的数据集包含 14 条记录,每个记录包含 5 个特征:Outlook(天气状况)、Temperature(温度)、Humidity(湿度)、Windy(是否有风),以及一个目标变量 Play(是否去打球)。
2.2.2 计算信息增益
首先,我们已经知道整个数据集的熵 H (S) ≈ 0.940。接下来,我们计算每个特征的信息增益。
1. Outlook 特征的信息增益 Outlook 有三个取值:Sunny(5 天)、Overcast(4 天)、Rainy(5 天)。
- Sunny 子集:2 天去打球,3 天不去 H(Sunny)≈0.971
- Overcast 子集:4 天去打球,0 天不去 H(Overcast)=0
- Rainy 子集:3 天去打球,2 天不去 H(Rainy)≈0.971
Outlook 特征的信息增益:IG(S,Outlook)≈0.247
2. Temperature 特征的信息增益 Temperature 有三个取值:Hot(4 天)、Mild(6 天)、Cool(4 天)。
- Hot 子集:2 天去打球,2 天不去 H(Hot)=1.0
- Mild 子集:4 天去打球,2 天不去 H(Mild)≈0.918
- Cool 子集:3 天去打球,1 天不去 H(Cool)≈0.811
Temperature 特征的信息增益:IG(S,Temperature)≈0.029
3. Humidity 特征的信息增益 Humidity 有两个取值:High(7 天)、Normal(7 天)。
