决策树是如何生长的?

决策树是如何生长的?

什么是决策树?

决策树是一种有监督的机器学习算法,可用于回归和分类问题。决策树遵循一组嵌套的 if-else 条件来进行预测。

由于决策树可用于分类和回归,用于增长它们的算法通常称为 CART(分类和回归树)。没有单一的决策树算法。已经提出了多种算法来构建决策树,但我们将重点介绍 scikit-learn 中使用的 CART 算法。

决策树是二叉树,每个节点代表一个决策。

可视化的 CART 模型

  • 根节点:这是开始图表的节点。深度为零。
  • 内部/子节点:这些是进行二元决策的子节点。
  • 叶节点:这些是树的最终节点,其中进行类别或数值的预测。

该算法的目的是从一组输入变量及其属性中预测目标变量。树结构是通过从根节点到分支的一系列二进制拆分(是/否)来构建的。当我们深入到树中时,我们会通过几个内部节点,直到我们到达叶节点。正是在这些终端节点处进行预测。

训练决策树

该算法首先将训练集分成两个子集。一旦 CART 算法成功拆分训练集,它就会使用相同的逻辑等递归拆分子集。

一旦达到最大深度或找不到裂缝以减少杂质,它就会停止分裂。这种方法使决策树成为一种贪婪算法——它贪婪地在根节点搜索最佳分裂,并在每个后续级别重复该过程。

决策树是通过使用数据中的特征递归地分割我们的训练样本来构建的。

随着树深度的增加,杂质或不确定性的水平会降低,从而导致更好的分类或每个节点的“最佳分割”。

确定一个属性的最佳值作为一个分裂点相当于分裂数据集以最小化给定的成本函数。使用的成本函数取决于我们是在解决分类问题还是回归问题。在上面的可视化示例中,我们使用误分类率作为成本函数。

分类树的另外两个常见成本函数是基尼杂质和信息增益(熵)。当算法遍历属性的所有可能值时,它会计算该点的基尼杂质或信息增益。将成本函数最小化的属性值用作分割。节点的基尼指数或熵衡量其杂质和无序度。一个节点是“纯”的,即如果它应用的所有训练实例都属于同一类,则基尼系数或熵为零。默认情况下,使用基尼杂质度量,但您可以通过更改超参数来选择熵杂质度量。

对于回归树,可以使用回归指标作为成本函数。均方误差是一个非常常见的选择。当算法遍历自变量的不同值时,它选择最大程度降低MSE的分裂。

编码示例

我们将使用来自 scikit-learn 的经典葡萄酒数据集来构建 CART 模型。该数据包含三个类,没有明显的不平衡。查找数据集。

葡萄酒数据集信息

的结果load_wine()存储在bunch一个类似地图的对象中,该对象具有六个主要组件:['data', 'target','frame', 'target_names', 'DESCR', 'feature_names'].

Pandas 可以很容易地将这组数据转换为数据帧:

葡萄酒数据

决策树的主要优点之一是,它们只需要很少的数据准备或特征扩展。

模型指标

现在可视化我们的模型。

在这个可视化中,每种颜色代表一个酒类。颜色的深浅代表纯度。每个决策节点中的第一个值表示用于从根遍历到叶子的二进制逻辑。此外,请注意样本大小从父节点拆分到子节点,展示了最佳拆分如何划分样本。

让我们用一个示例酒穿过这棵树。想象一下颜色强度为 2.0、酒精度为 12.o、灰分为 2.0 的葡萄酒。在第一个节点,我们将向左走,因为颜色强度 ≤ 3.82。按照逻辑,我们在酒精节点向左走,在灰节点离开,最终到达最左边的叶节点(class_1)。

决策树 (CART) 是功能强大的算法,与其他 ML 方法相比,它们易于解释。它们不需要太多的计算能力,让您可以快速种植树木。

虽然您需要小心不要过度拟合您的数据,但 CART 是解决许多问题的好算法。如果您希望提高模型的性能和稳健性,您还可以探索集成方法,例如随机森林或修剪

决策树的优势

  • 简单的理解和解释,易于使用,多功能和功能强大。
  • 需要很少的数据准备或特性扩展。
  • 可以处理数值和分类数据。还可以解决多输出问题。

决策树的局限性

决策树的主要问题是它们对训练数据的细微变化非常敏感。随机森林可以通过对许多树的预测进行平均来限制这种不稳定性。

没有正则化,决策树容易过拟合,因为决策树学习者可以创建过复杂的树,不能很好地一般化。随机森林还有助于防止过拟合。

树木也很不稳定。训练数据集中的一些变化可以导致一个完全不同的树。假设选择了一个不同的特征作为第一个分割特征,整个树结构发生变化。这也会给模型的可解释性带来问题。

作者:Edward Krueger

免责声明:凡未注明来源或者来源为网络的信息均转自其它平台,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。网站只负责对文章进行整理、排版、编辑,不承担任何法律责任。若有侵权或异议请联系我们删除,谢谢。

发表评论

您的电子邮箱地址不会被公开。