决策树
- 决策树
- 定义
- 决策树
- 概念
- 熵
- 条件熵
- 经验熵, 经验条件熵
- 信息增益
- 算法
- 信息增益算法
- ID3算法
- C4.5生成
- 树的剪枝
- 最小二乘回归树生成
- CART分类树生成
- 实现以及统计学习书上实例
- 信息增益
- 算法实现
- 训练数据
- 打印树
决策树
定义
决策树
- 分类决策树模型是表示基于特征对实例进行分类的树形结构。决策树可以转换成一个if-then规则的集合,也可以看作是定义在特征空间划分上的类的条件概率分布。
- 决策树学习旨在构建一个与训练数据拟合很好,并且复杂度小的决策树。因为从可能的决策树中直接选取最优决策树是NP完全问题。现实中采用启发式方法学习次优的决策树。决策树学习算法包括3部分:特征选择、树的生成和树的剪枝。常用的算法有ID3、 C4.5和CART。
- 特征选择的目的在于选取对训练数据能够分类的特征。特征选择的关键是其准则。常用的准则如下:
- 样本集合 𝐷 对特征 𝐴 的信息增益(ID3)
- 其中,
- 是数据集
- 的樀,
- 是数据集
- 的熵,
- 是数据集
- 对特征
- 的条件熵。
- 是
- 中特征
- 取第
- 个值的样本子集,
- 是
- 中属于第
- 类 的样本子集。
- 是特征
- 取 值的个数,
- 是卖的个数。
2.样本犨合 - 对特征
- 的信自增益比 (C4.5)
- 其中,
- 是信自增益,
- 是数据集
- 的熵。
3.样本集合 - 的基尼指数 (CART)
- 特征
- 条件下集合
- 的基尼指数:
- 4.决策树的生成。通常使用信息增益最大、信息增益比最大或基尼指数最小作为特征选择的准则。决策树的生成往往通过计算信息增益或其他指标,从根结点开 始,递归地产生决策树。这相当于用信自增益或其他准则不断地选取局部最优的特征,或将圳练集分割为能够基本正确分类的子集。
5.决策树的剪枝。由于生成的决策树存在过拟合问题,需要对它进行剪枝,以简化学到的决策树。决策树的剪枝,往往从已生成的树上剪掉一些叶结点或叶结点 以上的子树,并将其父结点或根结点作为新的叶结点,从而简化生成的决策树。
概念
熵
熵只与
的分布有关,与
取值无关**,这句注意理解
定义
,熵是非负的。
条件熵
随机变量
的联合概率分布为
条件熵
表示在已知随机变量
的条件下随机变量
的不确定性
其中
经验熵, 经验条件熵
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵和经验条件熵
就是从已知的数据计算得到的结果。
信息增益
特征
对训练数据集
的信息增益
,定义为集合
的经验熵
与特征
给定的条件下
的经验条件熵
之差。
熵与条件熵的差称为互信息.
决策树中的信息增益等价于训练数据集中的类与特征的互信息。
考虑ID这种特征, 本身是唯一的。按照ID做划分, 得到的经验条件熵为0, 会得到最大的信息增益。所以, 按照信息增益的准则来选择特征, 可能会倾向于取值比较多的特征。
算法
信息增益算法
输入:训练数据集
和特征
输出:特征
对训练数据集
的信息增益
- 数据集
- 的经验樀
- 特征
- 对数据集
- 的经验条件樀
- 信息增益
ID3算法
输入:训练数据集
, 特征集
,阈值
输出: 决策树
- 如果
- 属于同一类
- 为单节点树,类
- 作为该节点的类标记,返回
- 如果
- 是空集,置
- 为单节点树,实例数最多的类作为该节点类标记,返回
- 计算
- , 选择信息增益最大的特征
- 如果
- 的信息增益小于
- 为单节点树,
- 中实例数最大的类
- 作为类标记,返回
- 划分若干非空子集
- 训练集,
- 为特征集,递归调用前面步骤,得到
- ,返回
C4.5生成
输入:训练数据集
, 特征集
,阈值
输出:决策树
- 如果
- 属于同一类
- ,
- 为单节点树,类
- 作为该节点的类标记,返回
- 如果
- 是空集, 置
- 为单节点树,实例数最多的作为该节点类标记,返回
- 计算
- , 选择信息增益比最大的特征
- 如果
- 的信息增益比小于
- ,
- 为单节点树,
- 中实例数最大的类
- 作为类标记,返回
- 划分若干非空子集
- ,
- 训练集,
- 为特征集,递归调用前面步骤,得到
- ,返回
- ID3和C4.5在生成上,差异只在准则的差异。
树的剪枝
决策树损失函数摘录如下:
树
的叶结点个数为
,
是树
的叶结点,该结点有
个样本点,其中
类的样本点有
个,
为叶结点
上的经验熵,
为参数,决策树学习的损失函数可以定义为
其中
这时有 其中表示模型对训练数据的误差,表示模型复杂度,参数控制两者之间的影响。 上面这组公式中,注意红色部分,下面插入一个图:
这里面没有直接对
求和,系数
使得
和
的大小可比拟。这个地方再理解下。
输入:生成算法生成的整个树
,参数
输出:修剪后的子树
- 计算每个结点的经验熵
- 递归的从树的叶结点向上回缩
假设一组叶结点回缩到其父结点之前与之后的整体树分别是 - 和
- ,其对应的损失函数分别是
- 和
- ,如果
- 则进行剪枝,即将父结点变为新的叶结点
- 返回2,直至不能继续为止,得到损失函数最小的子树
最小二乘回归树生成
输入:训练数据集
输出: 回归树
步骤:
- 遍历变量
- ,对固定的切分变量
- 扫描切分点
- ,得到满足上面关系的
- 用选定的
- , 划分区域并决定相应的输出值
- 对两个子区域调用(1)(2)步骤,直至满足停止条件
- 将输入空间划分为
- 个区域
- ,生成决策树:
CART分类树生成
策略是基尼系数,所以是分类树的生成算法。
概率分布的基尼指数定义:
基尼系数是一个来源于经济学的指标. 范围(0, 1), 有很多中表示形式, 比如衡量收入分布的基尼系数.
经济学基尼系数的解释,基尼系数为
实现以及统计学习书上实例
信息增益
算法实现
训练数据
打印树
链接: DataWhale.