[西瓜书/机器学习] Ch4 决策树 学习笔记(1)
本文首发于ZeroVoid网站, 欢迎前来玩耍.
决策树(decision tree/判定树)是一种常见的机器学习方法.
其中最著名的代表算法便是J. Ross Quinlan(罗斯 昆兰, 1943- )提出的ID3, C4.5算法和CART(分类与回归决策树)算法.
下文简单介绍决策树算法的基础流程以及划分准则.
之后也会对剪枝, 连续值处理, 缺失值处理以及多变量决策树进行学习介绍.
最后结合代码对数据集进行处理, 提高自己对知识的理解, 掌握和使用能力.
基础流程
一般, 一颗决策树包含一个根结点, 若干个内部结点和若干个叶结点.
- 叶结点对应决策结果, 其他每个结点则对应一个属性测试
- 每个结点包含的样本集合根据属性测试的结果被划分到子结点中
- 根结点包含样本全集
- 从根结点刀每个叶结点的路径对应一个判定测试序列
决策树的目的就是为了产生一棵泛化能力强的决策树. 其基本算法流程遵循分而治之(divide-and-conquer)思想, 伪代码如下:
决策树的基本算法思路是递归的, 基本过程处理三种返回情况:
- 当前结点包含的样本全部属于同一类别
- 当前属性集为空, 或所有样本在所有属性上取值相同
- 当前结点包含的样本集合为空
划分选择
根据上述的算法流程, 可以发现如何划分对于决策树的泛化性能来说十分重要, 因为我们希望结点的"纯度"(purity)越高.
下面就简单介绍三种常见的划分指标:
- 信息增益 information entropy
- 增益率 gain ratio
- 基尼指数 gini index
信息增益
信息熵(information entropy)是度量样本集合纯度最常用的一种指标.信息熵定义: 样本集合 D D D中第 k k k类样本所占比例为 p K ( k = 1 , 2 , … , ∣ Y ∣ ) p_K(k=1,2,\dots,|\mathcal{Y}|) pK(k=1,2,…,∣Y∣), 则 D D D的信息熵为
E n t ( D ) = − ∑ k = 1 ∣ Y ∣ p k l o g 2 p k Ent(D) = - \sum_{k=1}^{|\mathcal{Y}|}p_k log_2 p_k Ent(D)=−k=1∑∣Y∣pklog2pk
Ent(D) 越小, D纯度越高. 规定 p = 0 p=0 p=0 时Ent = 0.
假设离散属性 a a a有 V V