决策树模型
- 决策树是一种基本的分类与回归的方法
- 决策树由节点和有向边组成
- 节点分为内部节点和叶节点
- 决策树的学习其实就是特征选择的过程
决策树学习
决策树学习算法包含特征选择、决策树的生成和决策树的剪枝过程
给定数据集其中为样本容量,,为特征个数;为类标记。
信息增益
统计学中,熵是随机变量不确定性的度量,即混乱程度。假设是一个取有限个值的离散随机变量,其概率分布为,那么的熵定义为条件熵可以表示为已知随机变量的条件下,随机变量的不确定性,也可以表示成其中。当熵和条件熵中的概率由数据估计得到时,则分别称之为经验熵和条件经验熵,如果出现0概率,则令。
信息增益表示在得知特征的情况下而使得的不确定性减少的程度,形式化表述为:特征对训练数据集的信息增益,定义为这里的信息增益等价于训练数据集中类与特征的互信息。计算信息增益的算法如下:
输入:数据集和特征
1 计算数据集的经验熵
2 计算特征对数据集的经验条件熵
3 计算信息增益.
输出信息增益
信息增益比
以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题,使用信息增益比可以缓解这个问题。特征对训练数据集的信息增益比定义为其增益信息与训练数据集关于特征的值的熵之比,即
其中,,是特征取值的个数。
ID3
ID3算法采用自上而下递归式的算法构建决策树,它使用信息增益作为特征选择的标准。停止条件是节点所有特征的信息增益都很小(阈值)或没有特征可以选择为止。
输入:训练数据集,特征集,阈值
1 若中所有实例属于同一类,为单节点树,为该节点的类标记,返回
2 若则为单节点树,将中实例数最大的类作为该节点的类标记,返回
3 否则,分别计算中各特征对的信息增益,选择信息增益最大的特征
4 如果,则置T为单节点树,将中实例数最大的类作为该节点的类标记,返回
5 否则,对的每一个可能值,根据将分割成若干非空子集,将中实例数最大的类作为标记,构建子节点,由节点及其子节点构成树,返回
6 对每个子节点,以为训练集,以为特征集,递归调用以上步骤
输出:决策树
C4.5
C4.5与ID3的差异在于C4.5使用信息增益比进行选择选择
基尼指数
基尼指数表示不确定程度,基尼指数越大,样本集的不确定程度就越大、纯度越低。
分类问题中,假设有个类,样本点属于第类的概率为,则概率分布的基尼指数定义为对于给定的样本集,其基尼指数为其中表示第类的样本子集。表示集合的不确定性。
假设样本集根据特征的不同取值被分成个部分,则定义在特征下集合的基尼指数为
CART
CART分类树
使用基尼指数作为划分属性的标准,每次选择基尼指数最小的属性。
CART回归模型
假设已将输入空间划分为个单元,并且在每个单元上有一个固定的输出值,回归树模型可以表示为当输入空间划分确定时,可以用平方误差表示训练误差, 输出值为对应上所有样本输出值的均值。
使用启发式的方法划分输入空间,遍历输入变量和可能的切分变量找到最优的切分变量和切分点,即找到切分后部分的误差最小:
其中是划分后部分中输出值的均值。最小二乘回归树算法描述如下:
输入:训练集
- 选择最优切分变量与最优切分点,求解
- 用选定的对划分区域并决定相应输出值:
- 继续对两个子区域调用步骤1、2直至满足停止条件
- 将输入空间划分为个区域,生成CART树
输出:
决策树的剪枝
以上方法可能会产生过拟合现象,适当剪枝会使得决策树的泛化效果变得更好
剪枝分为预剪枝和后剪枝两种,预剪枝指的是在决策树生成的过程中进行剪枝,后剪枝则是在生成决策树之后再进行剪枝。
预剪枝
大致过程描述:对于一个节点,考虑其剪枝或者不剪枝的情况,看这两种情况下哪种正确率高(一个节点的类别由其包含同类样本数最多的决定),由此决定是否剪枝。
预剪枝基于贪心本质禁止某些节点展开,而这些节点第一次展开效果可能不好,但后续表现可能显著提高,所以会带来欠拟合的风险。
后剪枝
大致过程描述:自下而上,叶节点不考虑,考虑其父节点F是否需要剪枝,可以仅仅通过父节点包含的样本,在剪枝和不剪枝的情况下分别计算准确率,然后确定是否需要剪枝。
下面是令一种后剪枝的方法(我不是很了解):
通过极小化决策树整体的损失函数来实现。设树的叶节点个数为,是树的叶节点,此叶节点上有个样本,属于类的样本有个,为叶节点上的经验熵,为参数,则决策树学习的损失函数可以定义为
其中经验熵为。表示模型对训练数据的预测误差,|T|表示模型的复杂度。剪枝算法描述如下:
输入:决策树,参数
1 计算每个节点的经验熵
2 递归地从树的节点向上回溯,如果保留子节点的损失函数更大,剪枝以父节点作为叶子
3 返回2直到不能继续为止
输出:修建后的决策树