决策树(2)

C4.5算法

基础概念

  1. C4.5 算法是对ID3 算法的改进。
  2. 用信息增益率来选择属性。
  3. 在决策树构造过程中进行剪枝。
  4. 对非离散数据也能处理。
  5. 能够对不完整数据进行处理。

通过对ID3的学习,可以知道ID3存在一个问题,那就是越细小的分割分类错误率越小,所以ID3会越分越细,分割太细了,训练数据的分类可以达到0错误率,但是因为新的数据和训练数据不同,所以面对新的数据分错率反倒上升了。决策树是通过分析训练数据,得到数据的统计信息,而不是专为训练数据量身定做。

比如给人做衣服,叫来10个人做参考,做出一件10个人都能穿的衣服,然后叫来另外5个和前面10个人身高差不多的,这件衣服也能穿。但是当你为10个人每人做一件正好合身的衣服,那么这10件衣服除了那个量身定做的人,别人都穿不了。

因此引入信息增益率来作为分类标准。

信息增益率

为信息增益(信息熵 - 条件熵) 为特征A的固有值

信息熵 k是类别,是类别k下的数据集

条件熵

A是特征,i是特征取值, 是为当取第i个特征时分类的信息熵

计算示例

信息熵:

信息增益:

天气的固有值:

信息增益率:

剪枝

为了尽可能正确分类训练样本,节点的划分过程会不断重复直到不能再分,这样就可能对训练样本学习的"太好"了,把训练样本的一些特点当做所有数据都具有的一般性质,从而导致过拟合。我们可以通过剪枝处理去掉一些分支来降低过拟合的风险。

预剪枝

预剪枝不仅可以降低过拟合的风险而且还可以减少训练时间,但另一方面它是基于"贪心"策略,会带来欠拟合风险。
预剪枝表示在构造树的过程中,对一个节点考虑是否分支时,首先计算决策树不分枝时在测试集上的性能,再计算分支之后的性能,若分支对性能没有提升,则选择不分支(即剪枝)。

后剪枝

后剪枝在构造好一颗完整的决策树后,从最下面的节点开始,考虑该节点分支对模型的性能是否有提升,若无则剪枝,即将该节点标记为叶子节点,类别标记为其包含样本最多的类别。
后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情况下,后剪枝的欠拟合风险更小,泛化性能往往优于预剪枝决策树。

根据错误率降低剪枝是最简单的后剪枝方法之一,不过在数据量比较少的情况下,该方法却是较少使用。因为训练数据集合中的特性在剪枝过程中被忽略,所以在验证数据集合比训练数据集合小的多时,要注意这个问题。而且数据量较少的话,我们还要分出训练集好验证集,这也是个考验。

缺点

  • 剪枝策略可以再优化;
  • C4.5 用的是多叉树,用二叉树效率更高;
  • C4.5 只能用于分类;
  • C4.5 使用的熵模型拥有大量耗时的对数运算,连续值还有排序运算;
  • C4.5 在构造树的过程中,对数值属性值需要按照其大小进行排序,从中选择一个分割点,所以只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时,程序无法运行。

CART算法

基础概念

  • 用基尼指数来选择属性(分类),或用均方差来选择属性(回归)。
  • 顾名思义,CART算法既可以用于创建分类树,也可以用于创建回归树,两者在构建的过程中稍有差异。
  • 如果目标变量是离散的,称为分类树。
  • 如果目标变量是连续的,称为回归树。
  • 分类树可以处理离散数据,也就是数据种类有限的数据,它输出的是样本的类别,而回归树可以对连续型的数值进行预测,也就是数据在某个区间内都有取值的可能,它输出的是一个数值。

分类

基尼系数

表示从数据集D中随机抽取两个样本,标记其不一致的概率。因此,基尼系数越小,数据集纯度越高。特别的,如果是一个二分类,则;

集合D在特征A的条件下分为D1和D2两个部分,则集合D的基尼系数表示经过A=a划分后集合D的不确定性,公式如下:

回归

对于连续值的处理,CART 分类树采用基尼系数的大小来度量特征的各个划分点。对于任意划分特征 A,对应的任意划分点s 两边划分成的数据集 ,求出使各自集合的均方差最小,同时 的均方差之和最小所对应的特征和特征值划分点。

表达式为:

其中,数据集的样本输出均值, 数据集的样本输出均值。

预测方式 对于决策树建立后做预测的方式,上面讲到了 CART 分类树采用叶子节点里概率最大的类别作为当前节点的预测类别。 而回归树输出不是类别,它采用的是用最终叶子的均值或者中位数来预测输出结果。

剪枝

CART算法采用一种"基于代价复杂度的剪枝"方法进行后剪枝,这种方法会生成一系列树,每个树都是通过将前面的树的某个或某些子树替换成一个叶节点而得到的,这一系列树中的最后一棵树仅含一个用来预测类别的叶节点。然后用一种成本复杂度的度量准则来判断哪棵子树应该被一个预测类别值的叶节点所代替。 这种方法需要使用一个单独的测试数据集来评估所有的树,根据它们在测试数据集熵的分类性能选出最佳的树。

决策树总结

划分标准的差异:ID3 使用信息增益偏向特征值多的特征,C4.5 使用信息增益率克服信息增益的缺点,偏向于特征值小的特征,CART 使用基尼指数克服 C4.5 需要求 log 的巨大计算量,偏向于特征值较多的特征。

使用场景的差异:ID3 和 C4.5 都只能用于分类问题,CART 可以用于分类和回归问题;ID3 和 C4.5 是多叉树,速度较慢,CART 是二叉树,计算速度很快;

样本数据的差异:ID3 只能处理离散数据且缺失值敏感,C4.5 和 CART 可以处理连续性数据且有多种方式处理缺失值;从样本量考虑的话,小样本建议 C4.5、大样本建议 CART。C4.5 处理过程中需对数据集进行多次扫描排序,处理成本耗时较高,而 CART 本身是一种大样本的统计方法,小样本处理下泛化误差较大 ;

样本特征的差异:ID3 和 C4.5 层级之间只使用一次特征,CART 可多次重复使用特征;

剪枝策略的差异:ID3 没有剪枝策略,C4.5 是通过悲观剪枝策略来修正树的准确性,而 CART 是通过代价复杂度剪枝。

相关推荐
边疆.23 分钟前
C++类和对象 (中)
c语言·开发语言·c++·算法
binqian36 分钟前
【K8S】kubernetes-dashboard.yaml
算法·贪心算法
Wils0nEdwards1 小时前
Leetcode 合并 K 个升序链表
算法·leetcode·链表
Tisfy1 小时前
LeetCode 3211.生成不含相邻零的二进制字符串:二进制枚举+位运算优化
算法·leetcode·二进制·题解·枚举·位运算
好看资源平台1 小时前
深入理解所有权与借用——借用与生命周期管理
开发语言·算法·rust
qiaoxinyu19892 小时前
线性代数(1)——线性方程组的几何意义
线性代数·算法·机器学习
爱吃饭团的饭桶2 小时前
【附源码】Python :哈密顿回路
开发语言·python·算法
TNTLWT2 小时前
算法:查找
算法
feilieren2 小时前
leetcode - 684. 冗余连接
java·开发语言·算法