【机器学习】决策树

2018-10-26 17:49:02 浏览数 (1)

笔者邀请您,先思考:

1 决策树算法的原理?

2 决策树算法的优劣?

一棵树在现实生活中有许多类比,并且结果表明它广泛地影响机器学习,包括分类和回归。 在决策分析中,决策树可用于在视觉上和明确地表示决策和作出决策。 顾名思义,它是使用树状的决策模型。 虽然它是数据挖掘中常用的工具以用于推导达到特定目标的策略,但它也广泛用于机器学习,这将是本文的重要关注点。

如何将算法表示为树?

在此,我们考虑一个非常基本的例子,它使用泰坦尼克数据集来预测乘客是否能够幸存。 下面的模型使用数据集中的3个特征/属性/列,即sex,age和sibsp(配偶或子女的数量)。

决策树是倒置的,其根位于顶部。 在上图中,黑色粗体文本表示条件/内部节点,树基于该节点/内部节点分割成分支/边缘。 分支的末端不再分裂是决定/叶子,在这种情况下,乘客是否死亡或幸存,分别表示为红色和绿色文本。

虽然,真实的数据集将具有更多的特征,这只是一个更大的树中的分支,但你不能忽视这个算法的简单性。 特征重要性很清楚,也容易查看关系。这种方法通常被称为来自数据的学习决策树和上面树称为分类树,因为目标是将乘客分类为幸存者或死亡者。 回归树以相同的方式表示,只是它们预测像房子价格这样的连续值。 通常,决策树算法称为CART或分类和回归树

那么,背后究竟发生了什么? 生成树涉及决定选择哪些特征以及用于分割的条件,以及知道何时停止。 由于树木通常会随意生长,因此您需要将其修剪下来才能看起来很漂亮。 让我们从用于分裂的常用技术开始。

递归二叉分裂

在此过程中,将考虑所有函数,并使用成本函数尝试和测试不同的分割点。 选择具有最佳成本(或最低成本)的分割。

考虑从泰坦尼克号数据集中学习的树的早期例子。在第一个分割或根中,考虑所有属性/特性,然后根据这个分割将训练数据分成组。我们有3个特征,所以将有3个候选分割。现在,我们将使用一个函数来计算每次拆分的精度。选择成本最低的分割方式,在我们的例子中是乘客的性别。这种算法本质上是递归的,因为组成的组可以使用相同的策略进行细分。由于这个过程,这个算法又被称为贪心算法,因为我们有一个过高的降低成本的愿望。这使得根节点成为最好的预测器/分类器。

分割代价

让我们仔细看看用于分类和回归的成本函数。 在这两种情况下,成本函数试图找到最均匀的分支,或者具有相似响应的组的分支。 这是有道理的,我们可以更确定测试数据输入将遵循某个路径。

可以说,我们正在预测房屋的价格。 现在,决策树将通过考虑训练数据中的每个特征开始分裂。 特定组的训练数据输入的响应平均值被认为是该组的预测。 上述函数应用于所有数据点,并计算所有候选分割的成本。 再次选择成本最低的分割。 另一个成本函数涉及降低标准差,更多关于它的信息可以在这里找到

基尼分数通过分裂创建的组中响应类的混合程度,可以了解分割的好坏程度。 这里,pk是特定组中存在的相同类输入的比例。 当一个组包含来自同一类的所有输入时,就会出现完美的类纯度,在这种情况下,pk为1或0且G = 0,其中作为一个组中50-50分类的节点具有最差的纯度, 所以对于二元分类,它将具有pk = 0.5和G = 0.5。

什么时候停止分裂?

你可能会问什么时候停止生长树? 由于问题通常具有大量特征,因此会导致大量分裂,从而产生巨大的树。 这种树很复杂,可能导致过度拟合。 那么,我们需要知道何时停止? 这样做的一种方法是设置每个叶子上使用的最小数量的训练输入。 例如,我们可以使用至少10名乘客来做出决定(死亡或幸存),并忽略任何少于10名乘客的叶子。 另一种方法是设置模型的最大深度。 最大深度是指从根到叶子的最长路径的长度。

剪枝

通过剪枝可以进一步提高树的性能。 它涉及删除使用具有低重要性的特征的分支。 这样,我们降低了树的复杂性,从而通过减少过度拟合来提高其预测能力。

Pruning can start at either root or the leaves. The simplest method of pruning starts at leaves and removes each node with most popular class in that leaf, this change is kept if it doesn't deteriorate accuracy. Its also called reduced error pruning. More sophisticated pruning methods can be used such as cost complexity pruning where a learning parameter (alpha) is used to weigh whether nodes can be removed based on the size of the sub-tree. This is also known as weakest link pruning.

CART的优点

  • 易于理解,解释,可视化。
  • 决策树隐式执行变量筛选或特征选择。
  • 可以处理数字和分类数据,还可以处理多输出问题。
  • 参数之间的非线性关系不会影响树性能。

CART的缺点

  • 决策树学习者可以创建过于复杂的树,这些树不能很好地推广数据。 这称为过度拟合。
  • 决策树可能不稳定,因为数据中的小变化可能导致生成完全不同的树。 这称为方差,需要通过套袋和提升等方法降低。
  • 贪心算法无法保证返回全局最优决策树。 这可以通过训练多个树来减轻,其中特征和样本随机替换。
  • 如果某些类占主导地位,决策树学习者会创建偏向它的树。 因此,建议在拟合决策树之前平衡数据集。

这是所有的基本知识,让你与决策树学习平起平坐。对决策树学习方法进行了改进。实现这些算法的流行库是Scikit-Learn。它有一个很好的api,可以用python中的几行代码让您的模型运行起来。

原文链接: https://towardsdatascience.com/decision-trees-in-machine-learning-641b9c4e8052

0 人点赞