实验报告及分析_R中bagging回归与随机森林以及boosting回归

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、R中boosting回归

这个主要用R中的mboost包中的mboost函数来实现。但是作为铺助,还要加载party包。函数如下

mboost(formula, data = list(),baselearner = c("bbs", "bols", "btree", "bss", "bns"), ...)

其中的参数需要注意formula的输入格式。至于data也可以是数据框。我们用决策树的boosting方法。要注意查看formula的输入格式,参见下面的具体例子。

一个具体的例子

我们使用我的电脑上自带的数据,即E:\Documents\R中的mg文本文件中的数据。该数据无任何说明,知道它是由6个自变量和一个因变量构成。试验如下。

> library(party)

> library(mboost)

> w<-read.table('mg.txt',header=T)

>B1<-mboost(y~btree(x1)+btree(x2)+btree(x3)+btree(x4)+btree(x5)+btre e(x6),data=w[-1,]) #构建分类器,用除掉第一个样本的数据做训练数据。>y0<-predict(B1,w[1,]) #用第一个样本作测试。

二、bagging回归

与boosting回归想法类似,bagging回归的做法就是不断放回地对训练样本进行再抽样,对每个自助样本都建立一棵回归树,对于每一个观测,每棵树给一个预测,最后将其平均。

使用到的函数包为ipred,使用函数为bagging(),用法如下:bagging(formula, data, subset, na.action=na.rpart, ...)

主要参数介绍:

formula:回归方程形式

data:数据集(数据框)

control:对树枝的控制,使用函数rpart.control(),可以控制诸如cp值,xval等参量。(注意必须加载过rpart包,才能找到rpart.control 函数)

下面是用bagging对iris数据进行测试的例子。

> data(iris)

> ir<-iris

> set.seed(124)

> count.test<-round(runif(50,1,150))

> test<-ir[count.test,]

> library(ipred)

> reg<-bagging(Species~.,data=ir)

> pre<-predict(reg,test) #pre是一个类别标签向量。

> dim(test[test$Species!=pre,])[1]/dim(test)[1] #计算错误率

[1] 0

我们可以看到正确率为100%

三、随机森林

与bagging回归相比,随机森林则更进一步,不仅对样本进行抽样,还对变量进行抽样。

使用到的函数包为randomForest,使用函数为randomForest(),用法如下:

randomForest(formula, data=NULL, ..., subset,

na.action=na.fail,ntree=500)

注:ntree是随机森林中决策树的数目,默认为500棵

这里值得一提的是,随机森林有个十分牛逼的性质,不会出现过拟合现象,这也省去了我们确定树的分类程度等一系列麻烦的事情。而且随机森林还可以输出自变量重要性度量

一个随机森林具体的例子。依然使用iris数据集

> data(iris)

> ir<-iris

> set.seed(124)

> count.test<-round(runif(50,1,150))

> test<-ir[count.test,]

> library(randomForest)

> reg<-randomForest(Species~.,data=ir,importance=T)

> pre<-predict(reg,test) #对测试集进行分类。返回的是一个类别标签

> dim(test[test$Species!=pre,])[1]/dim(test)[1]#计算错误率

[1] 0

> reg$importance #查看自变量的重要性。分别从均方误差递减的角度

和精确度递减的角度来衡量重要程度。

正确率仍然为100%

那么,怎么估算变量的重要性分数呢?依据是这样的。第一个分数是当一次删除每个变量时,随机森林错误增加的百分比。在每个变量被删除时,通过计算树在样本外数据上的均方误差的增加来估计该指标。该指标是对随机森林中所有树得到的结果进行标准化得到的。第二个得分是与变量导致的结点杂志减少有关,当然它也是对所有树的平均值。

另外,你也可以作图来观察变量的重要性。用函数varImpPlot

语法:varImpPlot(x,type=)

其中x是randomForest得到的对象,type是作图的方式。

相关文档
最新文档