决策树原理与常用方式

        说到树,可能第一时间就会想到——回归,是的,决策树就是依靠一次次的回归从而是实现分类。另外决策树由如下优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。

  • 构建决策树的一般流程如下:
(1) 收集数据:可以使用任何方法。
(2) 准备数据:树构造算法只适用于标称型数据,因此数值型数据必须离散化。
(3) 分析数据:可以使用任何方法,构造树完成之后,应该检查图形是否符合预期。
(4) 训练算法:构造树的数据结构。
(5) 测试算法:使用经验树计算错误率。
(6) 使用算法
 
 

1.准备数据

 

       在构造决策树时,我们需要解决的第一个问题就是,当前数据集上哪个特征在划分数据分类时起决定性作用。为了找到决定性的征,划分出最好的结果,就必须先评估每个特征。完成测试之后,原始数据集就被划分为几个数据子集。这些数据子集会分布在第一个决策点的所有分支,如果某个分支下的数据属于同一类型,则当前已经正确地划分数据分类, 无需进一步对数据集进行分割。如果数据子集内的数据不属于同一类型,则需要重复划分数据子集的过程。如何划分数据子集的算法和划分原始数据集的方法相同,直到所有具有相同类型的数据均在一个数据子集内。

创建分支的伪代码函数如下所示:

检测数据集中的每个子项是否属于同一分类: 
If 
   so return 类标签
Else 
   寻找划分数据集的最好特征
   划分数据集
   创建分支节点
       for 每个划分的子集
          调用函数createBranch并增加返回结果到分支节点中
   return 分支节点

另外划分数据的方法通常有:二分法、ID3算法、C4.5算法等,下面主要介绍ID3与C4.5算法。

其中,ID3 算法是建立在奥卡姆剃刀(用较少的东西,同样可以做好事情)的基础上,越是小型的决策树越优于大的决策树,ID3 算法的核心思想就是以信息增益来度量特征选择,选择信息增益最大的特征进行分裂。算法采用自顶向下的贪婪搜索遍历可能的决策树空间。

ID3实现步骤为

  • 初始化特征集合和数据集合;
  • 计算数据集合信息熵和所有特征的条件熵,选择信息增益最大的特征作为当前决策节点;
  • 更新数据集合和特征集合(删除上一步使用的特征,并按照特征值来划分不同分支的数据集合);
  • 重复 2,3 两步,若子集值包含单一特征,则为分支叶子节点。

 

当然了,ID3算法也有相应的缺点:

  • ID3 没有剪枝策略,容易过拟合;
  • 信息增益准则对可取值数目较多的特征有所偏好,类似“编号”的特征其信息增益接近于 1;
  • 只能用于处理离散分布的特征;
  • 没有考虑缺失值。

 

C4.5 相对于 ID3 的缺点对应有以下改进方式:

  • 引入悲观剪枝策略进行后剪枝;
  • 引入信息增益率作为划分标准;
  • 将连续特征离散化,假设 n 个样本的连续特征 A 有 m 个取值,C4.5 将其排序并取相邻两样本值的平均数共 m-1 个划分点,分别计算以该划分点作为二元 分类点时的信息增益,并选择信息增益最大的点作为该连续特征的二元离散分类点;
  • 对于缺失值的处理可以分为两个子问题:1. 在特征值缺失的情况下进行划分特征的选择?(即如何计算特征的信息增益率)2. 选定该划分特征,对于缺失该 特征值的样本如何处理?(即到底把这个样本划分到哪个结点里) 针对问题一,C4.5 的做法是:对于具有缺失值特征,用没有缺失的样本子集所占比重来折算; 针对问题二,C4.5 的做法是:将样本同时划分到所有子节点,不过要调整样本的权重值,其实也就是以不同概率划分到不同节点中。

 

剪枝策略: 过拟合的树在泛化能力的表现非常差,而剪枝策略则可以在一定程度上避免过拟合。

  1. 预剪枝: 在节点划分前来确定是否继续增长,及早停止增长的主要方法有:

    预剪枝不仅可以降低过拟合的风险而且还可以减少训练时间,但另一方面它是基于“贪心”策略,会带来欠拟合风险。

    • 节点内数据样本低于某一阈值;
    • 所有节点特征都已分裂;
    • 节点划分前准确率比划分后准确率高。
  2. 后剪枝: 在已经生成的决策树上进行剪枝,从而得到简化版的剪枝决策树。

    C4.5 采用的悲观剪枝方法,用递归的方式从低往上针对每一个非叶子节点,评估用一个最佳叶子节点去代替这课子树是否有益。如果剪枝后与剪枝前相比其 错误率是保持或者下降,则这棵子树就可以被替换掉。C4.5 通过训练数据集上的错误分类数量来估算未知样本上的错误率。

    后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但同时其训练时间会大的多。

C4.5的缺点

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值