决策树

决策树(DT)是一种用于分类和回归的非参数监督学习方法。 目的是创建一个模型,该模型通过学习从数据特征推断出的简单决策规则来预测目标变量的值。 一棵树可以看作是分段常数近似。

例如,在下面的示例中,决策树从数据中学习,以使用一组if-then-else决策规则来近似正弦曲线。 树越深,决策规则越复杂,模型越合适。

 决策树的一些优点是:

  • 易于理解和解释。 树木可以可视化。
  • 需要很少的数据准备。 其他技术通常需要数据规范化,需要创建虚拟变量并删除空白值。 但是请注意,此模块不支持缺少的值。
  • 使用树的成本(即预测数据)在用于训练树的数据点数量上是对数的。
  • 能够处理数字和分类数据。 但是,scikit-learn实现暂时不支持分类变量。 其他技术通常专用于分析仅具有一种类型的变量的数据集。 有关更多信息,请参见算法。
  • 能够处理多输出问题。
  • 使用白盒模型。 如果模型中可以观察到给定的情况,则可以通过布尔逻辑轻松解释条件。 相反,在黑匣子模型中(例如,在人工神经网络中),结果可能更难以解释。
  • 可以使用统计测试来验证模型。 这使得考虑模型的可靠性成为可能。
  • 即使生成数据的真实模型在某种程度上违背了它的假设,也可以表现良好。

决策树的缺点包括:

  • 决策树学习者可能会创建过于复杂的树,从而无法很好地概括数据。 这称为过度拟合。 为避免此问题,必须使用诸如修剪,设置叶节点处所需的最小样本数或设置树的最大深度之类的机制。
  • 决策树可能不稳定,因为数据中的细微变化可能会导致生成完全不同的树。 通过使用集成中的决策树可以缓解此问题。
  • 决策树的预测既不是平滑的也不是连续的,而是分段恒定的近似值,如上图所示。 因此,他们不擅长外推。
  • 在最优性的几个方面,甚至对于简单的概念,学习最优决策树的问题都被认为是NP完全的。 因此,实用的决策树学习算法基于启发式算法(例如贪婪算法),其中在每个节点上做出局部最优决策。 这样的算法不能保证返回全局最优决策树。 可以通过在整体学习器中训练多棵树来缓解这种情况,在该学习器中,特征和样本将通过替换随机抽样。
  • 有些概念很难学习,因为决策树无法轻松表达它们,例如XOR,奇偶校验或多路复用器问题。
  • 如果某些类别占主导地位,则决策树学习者会创建有偏见的树。 因此,建议在与决策树拟合之前平衡数据集。

1.10.1 分类

DecisionTreeClassifier是能够对数据集执行多类分类的类。

参考:https://scikit-learn.org/stable/modules/tree.html

原文地址:https://www.cnblogs.com/feifanrensheng/p/14546226.html