挂在树上的骷髅 发表于 2019-10-12 14:57:27

对于决策树的了解与介绍


决策树,随机森林,bagging,boosting的介绍以及背后的原理

基于树的方法可以用于回归或分类。它们涉及到将预测空间分割成几个简单的区域。分割规则集可以总结在树中,因此名为决策树方法。

单个决策树的性能通常不如线性回归、logistic回归、LDA等。但是它可以损失一些可解释性,大幅度提高预测精度。

将介绍关于决策树、bagging、随机森林和boosting算法的所有知识。

决策树基础

回归树
在讨论理论之前,我们需要一些基本的术语。
树是倒着画的。最后的区域称为叶子,树中发生分割的点是一个分割节点。最后,连接节点的段是“分支”。

回归树示意图

创建一个回归树:
1.将预测空间划分为J个不同且不重叠的区域
2.对于一个区域内的每一个样本值,将该区域内响应值的平均值作为预测值
每个区域都通过最小化RSS(Root-Sum-Squares)进行分割。为此,它采用自顶向下的贪婪方法,也称为递归二元分割。

为什么自顶向下?
因为所有的样本在第一次分裂之前都在同一个区域。

为什么是贪婪的方法?
因为最好的分割发生在特定的步骤中,而不是向前看并进行分割,从而在未来的步骤中得到更好的预测。
数学上,我们将这对半平面定义为:

我们要求j和s最小化:

然而,这可能导致过拟合。修剪树将产生一个更小的子树,我们可以使用交叉验证进行验证。

未修剪的树的示意图

分类树
分类树与回归树非常相似。但是,我们不能使用响应的平均值,因此我们现在预测一个区域中最常见的类。当然,RSS不能用作标准。相反,每次分割都是为了最小化分类错误率。

分类错误率就是在区域中不属于最常见类的训练样本的比例。

分类错误率公式
不幸的是,这对树的生长来说不够敏感。在实践中,还使用了另外两种方法。
基尼指数:

基尼指数
这是对所有类的总方差的度量。如你所见,如果比例接近0或1,则基尼指数会很小,因此它是衡量节点纯度的一个很好的指标。

类似的原理也适用于另一种称为交叉熵的方法:

交叉熵
现在已经了解了基本决策树的工作原理,可以看看如何改进它的性能。

Bagging, 随机森林和Boosting

Bagging
之前已经看到bootstrap可以计算任意数量的标准差。对于决策树,方差很大。因此,通过bootstrap聚合或bagging,可以减少方差,提高决策树的性能。

Bagging包括从数据集中反复取样。这会生成B个不同的引导训练集。然后,我们对所有的bootstrap训练集进行训练,得到每个集合的预测,并对预测进行平均。

数学上的平均预测为:

将其应用到决策树中,意味着我们可以构造大量的具有高方差和低偏差的树。然后,我们可以对他们的预测进行平均,以减少方差,以提高决策树的性能。

随机森林

随机森林相比Bagging树提供了一种改进,方法是对树进行“装饰”。

就像Bagging一样,建立了多个决策树。然而,在每次拆分时,从所有p个预测中随机选择m个随机样本。通常分割只允许使用m个预测中的一个

换句话说,在每次拆分时,算法都不允许考虑大多数可用的预测器。

为什么?

假设数据集中有一个非常强的预测器,以及其他中等强的预测器。然后,在bagging树的集合中,它们都将在顶部分割中使用这个强大的预测器。因此,所有的bagging树都是非常相似的,平均它们的预测不会减少方差,因为预测是高度相关的。

随机森林通过强制每个分割只考虑有效地“装饰”树的预测子集来克服这个问题。

当然,如果m等于p,这就像bagging。通常,p的平方根给出的结果最好,如下所示。

分类错误是树的数量的函数。每行表示每个分割中可用的预测的数量。

Boost

boost的工作方式与bagging类似,但树是按顺序生长的:每棵树使用以前生长的树的信息。

这意味着算法学习速度很慢。每个树都拟合模型的残差,而不是目标变量。因此,每棵树都很小,在它表现不佳的地方,它会慢慢地提高预测能力。

Boost有三个调优参数:

树的数量(B):与bagging和随机森林不同,如果B太大,boost可能会过适合。使用交叉验证来选择正确数量的树。
收缩参数(alpha):控制boost学习速率的小正数。它通常设置为0.01或0.001。
每个树的分割数(d):它控制增强的集成的复杂性。通常,单个分割(d = 1)效果很好。它也被称为交互深度。

分类错误是树的数量的函数。每一行表示不同的交互深度。

正如你在上面所看到的,交互深度为1似乎提供了最好的结果。

现在你知道了决策树、随机森林、提升和bagging的一切。决策树既可以用于回归,也可以用于分类,当结合使用boost、bagging时,它们的表现非常好。
页: [1]
查看完整版本: 对于决策树的了解与介绍