英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料
基于随机森林的分类与回归
安迪·利亚和马修·维纳
引言
最近,人们对“系综学习”产生了很大兴趣——这种方法产生了许多分类器并汇总了他们的结果。两个众所周知的方法分别为提升法(参见,例如Shapire等人,1998年)和套袋法分类树(Breiman ,1996 )。在提升法中,连续的树给分数增加了额外的权重,被早期预测者错误地预测。最后,对预测结果进行加权投票。在套袋法中,连续的树木不依赖于早期的树木--每个都是使用数据集自举样本独立构建的。最后,进行简单的多数票预测。
Breiman ( 2001 )提出了随机森林,它给装袋法增加了额外的随机性。除了构造每个树时使用不同的引导样本的数据,随机森林还会改变如何构造分类树或回归树。在标准树中,每个节点都使用所有变量中最好的分割。一个随机森林里,每个节点之间的分割使用是预测随机选择的节点的最好的一个子集。与许多其他分类器(包括判别分析、支持向量机和神经网络)相比,这种有点违反直觉的策略非常适合于每一种形式,并且对过拟合具有很强的反对性(Breiman,,2001)。此外,在这种意义上,它是非常用户友好的,即它只有两个参数(在每个节点的随机子集中的变量的数量和在森林中的树木的数量),并且通常对它们的值不太敏感。
随机森林包提供了一个面向Breiman和Cutler的Fortran程序的R接口(可从http://www.stat.berkeley.edu/users / Breiman /获得)。本文简要介绍了R函数的用法和特性。
算法
随机森林算法(分类和回归)如下:
- 从原始数据中提取ntree引导示例。
2.对于每一个引导样本,在每个节点上,创建一个未修剪的分类或回归树,在每个节点上,选择所有的预测对象,而不是选择最优的分割,随机选取mtry个预测者,然后选择最佳的分离变量。(套袋法可以认为是mtry = p时得到的随机森林的特例,即预测因子的数量)
- 通过聚合ntree树的预测来预测新的数据(即:大多数选票是用于分类,平均用于回归。)
估计的出错率,基于训练数据,如下:
1.在每个引导迭代,预测数据不是在引导样本(Breiman所说的“out-of-bag”或OOB数据)与引导样品使用树生长。
2.汇总OOB预测。(平均而言,每一个数据点大约有36%的时间是现成的,所以把这些预测汇总起来。)计算错误率,称之为错误率的OOB估计。
我们的经验是,对于错误率的OOB估计是相当准确的,因为已经构造了足够多的树(否则OOB估计会向上倾斜;参见Bylander(2002))。
来自随机森林的额外信息:
随机森林有选择地产生两个附加信息:预测变量的重要性的量度,以及数据的内部结构的量度(不同数据点之间的接近程度)。
变量的重要性 这是一个很难定义的概念,因为一个变量的重要性可能是由于它(可能是复杂的)与其他变量的交互作用。随机森林算法通过观察当(OOB)变量的数据被打乱而其他所有变量都没有改变时,该变量的预测误差会增加多少来估计变量的重要性。在构建随机森林时,需要逐树进行必要的计算。(实际上,在分类码中实现了四种不同的重要程度可变的度量方法。读者可以参考Breiman(2002)的定义。
近邻测度 随机森林产生的邻近矩阵的(i, j)元素是元素i和j落在同一个终端节点上的树的百分比。直觉告诉我们,“相似”的观测应该比不同的观测更频繁地出现在相同的终端节点上。邻近矩阵可以用于识别数据中的结构(见Breiman,2002),也可以用于随机森林中的无监督学习(见下文)。
在R中的应用
随机森林的用户界面与其他分类功能一致,比如nnet(nnet包)和svm()(e1071包)(实际上,我们从这两个函数中借用了一些接口代码。)有一个公式接口,可以通过x参数将预测器指定为矩阵或数据框架,通过y参数将响应指定为向量。如果响应是一个因子,则随机森林进行分类;如果响应是连续的(即不是一个因素),随机森林执行回归。如果响应未指定,随机森林将执行无监督学习(见下文)。目前随机森林并不处理顺序分类响应。请注意,分类预测变量也必须指定为因子(否则它们将被错误地视为连续的)。
随机森林函数返回了一个类'随机森林'的对象。在线文档中提供了此类对象的组件的详细信息。为该类提供的方法包括预测和打印。
一个分类的例子
在MASS4 (Venables and Ripley, 2002)的第12章中使用了法证玻璃数据集来说明各种分类算法。我们用它来展示随机森林是如何工作的:
- library(randomForest)
- library(MASS)
- data(fgl)
- set.seed(17)
- fgl.rf lt;- randomForest(type ~ ., data = fgl,
mtry = 2, importance = TRUE,
do.trace = 100)
100: OOB error rate=20.56 200: OOB error rate=21.03 300: OOB error rate=19.63 400: OOB error rate=19.63 500: OOB error rate=19.16
- print(fgl.rf) Call:
randomForest.formula(formula = type ~ ., data = fgl, mtry = 2, importance = TRUE, do.trace = 100)
Type of random forest: classification Number of trees: 500
No. of variables tried at each split: 2
OOB estimate of error rate: 19.16 Confusion matrix:
WinF WinNF Veh Con Tabl Head class.error
WinF |
63 |
6 |
1 |
0 |
0 |
0 |
0.1000000 |
WinNF |
9 |
62 |
1 |
2 |
2 |
0 |
0.1842105 |
Veh |
7 |
4 |
6 |
0 |
0 |
0 |
0.6470588 |
Con |
0 |
2 |
0 |
10 |
0 |
1 |
0.2307692 |
Tabl |
0 |
2 |
0 |
0 |
7 |
0 |
0.2222222 |
Head |
1 |
2 |
0 |
1 |
0 |
25 |
0.1379310 |
我们可以用ipred包中错误的函数进行10次重复的10倍交叉验证,将随机森林与支持向量机进行比较:
- library(ipred)
- set.seed(131)
- error.RF lt;- numeric(10)
- for(i in 1:10) error.RF[i] lt;-
errorest(type ~ ., data = fgl,
model = randomForest, mtry = 2)$error
- summary(error.RF)
Min. 1st Qu. Median Mean 3rd Qu. Max. 0.1869 0.1974 0.2009 0.2009 0.2044 0.2103
- library(e1071)
- set.seed(563)
- error.SVM lt;- numeric(10)
- for (i in 1:10) error.SVM[i] lt;-
errorest(type ~ ., data = fgl,
model = svm, cost = 10, gamma = 1.5)$error
- summary(error.SVM)
Min. 1st Qu. Median Mean 3rd Qu. Max. 0.2430 0.2453 0.2523 0.2561 0.2664 0.2710
结果表明,随机森林算法与支持向量机算法相比具有明显的优越性。
我们发现,由随机森林产生的可变重要性度量有时可以用于模型简化(例如,使用“重要”变量构建更简单、更容易解释的模型)。图1显示了基于上面创建的fgl对象的取证玻璃数据集的可变重要性。粗略地说,它是由
- par(mfrow = c(2, 2))
- for (i in 1:4)
plot(sort(fgl.rf$importance[,i], dec = TRUE),
type = 'h', main = paste('Measure', i))
我们可以看到测度1最清楚地区分了变量。如果我们再次运行随机森林,从模型中删除Na、K和Fe,错误率仍然低于20%。
Measure 1
10 20 30 40
Measure 2
15
No. of variables tried at each split: 4
Mean of squared residuals: 10.64615
RI Mg Al
Ca
Ba
K Na
Si
Fe
Var explained: 87.39
“ “残差平方均值”计算为:
n
RI
Mg
Ca
Ba Si
Al
Fe
K Na
5
10
MSEOOB = n {yi minus; ycirc; } ,
minus;1 OOB 2
0
0
i
Measure 3
Measure 4
1
where ycirc;OOB is the average of the OOB predictions for the ith observation. The “percent variance ex-
Al Mg RI
Ca
Na K
Si
Ba
Fe
i
plained” is computed as
RI Mg
Ca Al Ba K
Si Na Fe
0.0 0.2 0.4 0.6
0 5 10 15 20 25
y
MSEOOB
1 minus; sigma; 2 ,
circ;
where sigma;circ; 2 is computed with n as divisor (rather than
y
图1
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[18408],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。