在机器学习领域,ID3(Iterative Dichotomiser 3)算法是一种经典的决策树分类方法,由Ross Quinlan提出。它通过信息增益(Information Gain)来选择最优的特征进行划分,从而构建一棵决策树。为了更好地理解ID3算法的运作过程,我们可以通过一个具体的例题来进行分析。
一、问题描述
假设我们有一个关于天气的样本数据集,用于判断某天是否适合户外活动。该数据集包含以下属性:
- 天气:晴朗、多云、雨
- 温度:高、中、低
- 湿度:高、低
- 风速:强、弱
- 是否适合外出:是、否
具体的数据如下表所示:
| 天气 | 温度 | 湿度 | 风速 | 是否适合外出 |
|------|------|------|------|--------------|
| 晴 | 高 | 高 | 弱 | 否 |
| 晴 | 高 | 高 | 强 | 否 |
| 多云 | 高 | 高 | 弱 | 是 |
| 雨 | 中 | 高 | 弱 | 是 |
| 雨 | 低 | 低 | 弱 | 是 |
| 雨 | 低 | 低 | 强 | 否 |
| 多云 | 低 | 低 | 强 | 是 |
| 晴 | 中 | 高 | 弱 | 否 |
| 晴 | 中 | 低 | 弱 | 是 |
| 雨 | 中 | 低 | 弱 | 是 |
| 晴 | 中 | 低 | 强 | 是 |
| 多云 | 中 | 高 | 强 | 是 |
| 多云 | 高 | 低 | 弱 | 是 |
| 雨 | 高 | 高 | 强 | 否 |
我们的目标是使用ID3算法根据上述数据构建一个决策树,以预测“是否适合外出”。
二、步骤解析
1. 计算整体信息熵(Entropy)
首先,我们需要计算整个数据集的信息熵,作为初始的不确定性。
设:
- 正类(是)的数量为:8
- 负类(否)的数量为:6
总样本数 = 14
信息熵公式为:
$$
H(S) = -\sum_{i=1}^{n} p_i \log_2 p_i
$$
其中 $p_i$ 表示第i类样本的比例。
所以:
$$
H(S) = -\left(\frac{8}{14} \log_2 \frac{8}{14} + \frac{6}{14} \log_2 \frac{6}{14}\right)
$$
计算得:
$$
H(S) ≈ 0.985
$$
2. 计算每个特征的信息增益
接下来,我们依次计算每个特征(天气、温度、湿度、风速)的信息增益,并选择信息增益最大的特征作为根节点。
(1)天气特征
天气有三个取值:晴、多云、雨。
分别计算每个子集的信息熵:
- 晴:出现次数为5次,其中“否”3次,“是”2次
$$
H(晴) = -\left(\frac{3}{5} \log_2 \frac{3}{5} + \frac{2}{5} \log_2 \frac{2}{5}\right) ≈ 0.971
$$
- 多云:出现次数为4次,其中“是”4次
$$
H(多云) = 0
$$
- 雨:出现次数为5次,其中“是”3次,“否”2次
$$
H(雨) = -\left(\frac{3}{5} \log_2 \frac{3}{5} + \frac{2}{5} \log_2 \frac{2}{5}\right) ≈ 0.971
$$
加权平均:
$$
H_{天气} = \frac{5}{14} \times 0.971 + \frac{4}{14} \times 0 + \frac{5}{14} \times 0.971 ≈ 0.693
$$
信息增益:
$$
Gain(天气) = H(S) - H_{天气} ≈ 0.985 - 0.693 = 0.292
$$
(2)温度特征
温度有三个取值:高、中、低。
分别计算:
- 高:出现次数为5次,其中“否”3次,“是”2次
$$
H(高) ≈ 0.971
$$
- 中:出现次数为5次,其中“是”4次,“否”1次
$$
H(中) = -\left(\frac{4}{5} \log_2 \frac{4}{5} + \frac{1}{5} \log_2 \frac{1}{5}\right) ≈ 0.722
$$
- 低:出现次数为4次,其中“是”2次,“否”2次
$$
H(低) = 1
$$
加权平均:
$$
H_{温度} = \frac{5}{14} \times 0.971 + \frac{5}{14} \times 0.722 + \frac{4}{14} \times 1 ≈ 0.865
$$
信息增益:
$$
Gain(温度) = 0.985 - 0.865 = 0.120
$$
(3)湿度特征
湿度有两个取值:高、低。
- 高:出现次数为8次,其中“否”4次,“是”4次
$$
H(高) = 1
$$
- 低:出现次数为6次,其中“是”4次,“否”2次
$$
H(低) = -\left(\frac{4}{6} \log_2 \frac{4}{6} + \frac{2}{6} \log_2 \frac{2}{6}\right) ≈ 0.918
$$
加权平均:
$$
H_{湿度} = \frac{8}{14} \times 1 + \frac{6}{14} \times 0.918 ≈ 0.956
$$
信息增益:
$$
Gain(湿度) = 0.985 - 0.956 = 0.029
$$
(4)风速特征
风速有两个取值:强、弱。
- 强:出现次数为6次,其中“是”3次,“否”3次
$$
H(强) = 1
$$
- 弱:出现次数为8次,其中“是”5次,“否”3次
$$
H(弱) = -\left(\frac{5}{8} \log_2 \frac{5}{8} + \frac{3}{8} \log_2 \frac{3}{8}\right) ≈ 0.954
$$
加权平均:
$$
H_{风速} = \frac{6}{14} \times 1 + \frac{8}{14} \times 0.954 ≈ 0.974
$$
信息增益:
$$
Gain(风速) = 0.985 - 0.974 = 0.011
$$
三、确定根节点
比较各特征的信息增益:
- 天气:0.292
- 温度:0.120
- 湿度:0.029
- 风速:0.011
因此,天气是信息增益最大的特征,应作为根节点。
四、继续递归构建子树
接下来,对“天气”为“晴”、“多云”、“雨”的子集分别递归地重复上述过程,直到所有子集都属于同一类别或没有更多特征可用。
例如,对于“多云”这一分支,所有样本都为“是”,可以直接终止;而对于“晴”和“雨”则需要进一步划分。
五、总结
通过本例题可以看出,ID3算法的核心在于通过信息增益选择最佳划分特征,逐步构建决策树。虽然该算法简单有效,但在处理连续值或缺失数据时存在局限性,后续发展出C4.5等改进版本。
如果你希望进一步了解其他特征的划分过程或如何生成最终的决策树结构,可以继续提问。