概观
本文是有关 基于树的
回归和分类方法的。用于分割预测变量空间的分割规则可以汇总在树中,因此通常称为 决策树 方法。
树方法简单易懂,但对于解释却非常有用,但就预测准确性而言,它们通常无法与最佳监督学习方法竞争。因此,我们还介绍了装袋,随机森林和增强。这些示例中的每一个都涉及产生多个树,然后将其合并以产生单个共识预测。我们看到,合并大量的树可以大大提高预测准确性,但代价是损失解释能力。
决策树可以应用于回归和分类问题。我们将首先考虑回归。
决策树基础:回归
我们从一个简单的例子开始:
我们预测棒球运动员的 Salary 。
结果将是一系列拆分规则。第一个分割会将数据分割 Years <
4.5 为左侧的分支,其余的为右侧。如果我们对此模型进行编码,我们会发现关系最终变得稍微复杂一些。
library(tree)
library(ISLR)
attach(Hitters)
# Remove NA data
Hitters
# log transform Salary to make it a bit more normally distributed
hist(Hitters$Salary)
Hitters$Salary
hist(Hitters$Salary)
summary(tree.fit)
##
## Regression tree:
## tree(formula = Salary ~ Hits + Years, data = Hitters)
## Number of terminal nodes: 8
## Residual mean deviance: 0.271 = 69.1 / 255
## Distribution of residuals:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -2.2400 -0.2980 -0.0365 0.0000 0.3230 2.1500
现在,我们讨论通过对特征空间进行分层来构建预测树。通常,有两个步骤。
找到最能分隔响应变量的变量/拆分,从而产生最低的RSS。
将数据分为两个在第一个标识的节点上的叶子。
在每片叶子中,找到分隔结果的最佳变量/分割。
目标是找到最小化RSS的区域数。但是,考虑将每个可能的分区划分为J个区域在计算上是不可行的 。为此,我们采取了 自上而下的, 贪婪
的方法。它是自顶向下的,因为我们从所有观测值都属于一个区域的点开始。贪婪是因为在树构建过程的每个步骤中,都会在该特定步骤中选择最佳拆分,而不是向前看会在将来的某个步骤中生成更好树的拆分。
一旦创建了所有区域,我们将使用每个区域中训练观察的平均值预测给定测试观察的响应。
修剪
尽管上面的模型可以对训练数据产生良好的预测,但是基本的树方法可能会过度拟合数据,从而导致测试性能不佳。这是因为生成的树往往过于复杂。具有较少拆分的较小树通常以较小的偏差为代价,从而导致方差较低,易于解释且测试错误较