结合李航老师《统计学习方法》,笔记参见【统计机器学习-李航】第5章 决策树
4.1 导入
![](https://img-blog.csdnimg.cn/1089d99715be43ddb7d148cbf0bbd4a2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAd2F5YXlhMTEy,size_16,color_FFFFFF,t_70,g_se,x_16)
从根节点 到 每个叶节点的路径对应了一个 判定测试序列。决策树学习的目的是 产生一颗泛化能力强的决策树,基本流程遵循 简单且直观的“分而治之 (divide-and-conquer)” 策略。
输入:训练集
属性集
过程:
定义 函数TreeGenerate (D, A):
生成节点node;
if D中样本全部属于同一个类别C then
将node标记为C类叶节点;return
end if
if A =
or D中样本在A上取值相同 then
将node标记为 叶节点,其类别标记为D中样本数 最多的类;return
end if
从A中 选择最优划分属性
; # 这一步是十分关键,那么如何选择最优划分属性?参见4.2
for
的每一个取值
do
为node生成一个分支;令
表示D中 在
上取值为
的样本子集;
if
为空 then
将分支结点标记为叶节点,其类别标记为 D 中样本最多的类;return
else
以 TreeGenerator (
, A \ {
}) 为分支结点
end if
end for
输出:以node为根结点的一棵决策树
决策树的生成过程是一个递归过程。过程中碰到以下三种情形,则进行递归:
- 当前结点包含的样本 全部属于同一类别,无需划分;
- 当前属性集为空,或 所有样本在所有属性上取值相同,无法划分;
- 当前结点包含的样本集合为空,不能划分
4.2 划分选择
我们希望 决策树的分支结点包含的样本尽可能属于同一个类别,即结点的纯度越高越好。
4.2.1 信息增益
信息熵 (information entropy)&#x