机器学习实战笔记(决策树)

 决策树

  决策树(decision tree)是一种基本的分类与回归方法。在分类问题中,表示基于特征对实例进行分类的过程,它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。决策树学习的经典算法:ID3,C4.5,CART

决策树的概念很简单,下图所示的流程图是一个简单的决策树 

这里写图片描述 
图1.1 流程图


其中,长方形代表判断模块(decision block),椭圆形成代表终止模块(terminating block),表示已经得出结论,可以终止运行。从判断模块引出的左右箭头称作为分支(branch),它可以达到另一个判断模块或者终止模块。用专业的术语讲,分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。图中的决策树,长方形和椭圆形都是结点。长方形的结点属于内部结点,椭圆形的结点属于叶结点,从结点引出的左右箭头就是有向边。而最上面的结点就是决策树的根结点(root node)。

  用决策树分类时,从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子节点;这时每一个子节点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶节点。最后将实例分到叶节点的类中。

使用决策树的一般流程:

    • 收集数据:可以使用任何方法。
    • 准备数据:对收集完的数据进行整理,注意:树构造算法只适用于标称型数据,因此数值型数据必须离散化。
    • 分析数据:可以使用任何方法,决策树构造完成之后,我们可以检查决策树图形是否符合预期。
    • 训练算法:这个过程也就是构造决策树,同样也可以说是决策树学习,就是构造一个决策树的数据结构。
    • 测试算法:使用经验树计算错误率。
    • 使用算法:此步骤可以使用适用于任何监督学习算法,而使用决策树可以更好地理解数据的内在含义。

总结

1、 决策树的优点:

  • 数据形式易于理解。
  • 计算复杂度不高,对中间值的确实不敏感,可以处理不相关特征数据。
  • 需要准备的数据量不大,而其他的技术往往需要很大的数据集,需要创建虚拟变量,去除不完整的数据,但是该算法对于丢失的数据不能进行准确的预测。
  • 决策树算法的时间复杂度(即预测数据)是用于训练决策树的数据点的对数
  • 可以同时处理数值变量和分类变量。其他方法大都适用于分析一种变量的集合。
  • 可以处理多值输出变量问题。
  • 使用白盒模型。如果一个情况被观察到,使用逻辑判断容易表示这种规则。相反,如果是黑盒模型(例如人工神经网络),结果会非常难解释。
  • 即使对真实模型来说,假设无效的情况下,也可以较好的适用。

2、 决策树的缺点:

  • 决策树算法学习者可以创建复杂的树,但是没有推广依据,这就是所谓的过拟合,为了避免这种问题,出现了剪枝的概念,即设置一个叶子结点所需要的最小数目或者设置树的最大深度
  • 决策树的结果可能是不稳定的,因为在数据中一个很小的变化可能导致生成一个完全不同的树,这个问题可以通过使用集成决策树来解决
  • 众所周知,学习一个最优决策树是NP-完全问题。因此,实际决策树学习算法是基于启发式算法,如贪婪算法,寻求在每个节点上的局部最优决策。这样的算法不能保证返回全局最优决策树。对样本和特征的随机抽样可以防止整体效果偏差。
  • 概念难以学习,因为决策树没有很好的解释他们,例如,XOR。
  • 分类任务时,不能解决类别不平衡问题。

猜你喜欢

转载自www.cnblogs.com/luchun666/p/9416267.html