R中实现bagging和adaboost的包

R中的adabag包均有函数实现bagging和adaboost的分类建模(另外,ipred包中的bagging()函数可以实现bagging回归)。第一题就利用adabag包实现bagging和adaboost建模,并根据预测结果选择最优模型。

a)      为了描述这两种方式,先利用全部数据建立模型:

利用boosting()(原来的adaboost.M1()函数)建立adaboost分类

library(adabag)

a=boosting(Species~.,data=iris) #建立adaboost分类模型

(z0=table(iris[,5],predict(a,iris)$class))  #查看模型的预测结果

           

模型的预测结果全部正确。

(E0=(sum(z0)-sum(diag(z0)))/sum(z0))        #计算误差率

[1] 0

从结果看,预测的误差率为0。

barplot(a$importance)                       #画出变量重要性图


上图可以得知,各变量的重要性分别为:Petal.Length>Petal.Width>Sepal.Length>Sepal.Width

b<-errorevol(a,iris)                       #计算全体的误差演变

plot(b$error,type="l",main="AdaBoost error vs number of trees") #对误差演变进行画图


 上图可以得知,在第七次迭代后误差率就达到零了,实现预测零误差率。

     接下来,利用bagging()函数建立bagging分类模型:

     b=bagging(Species~.,data=iris) #建立bagging分类模型

(z0=table(iris[,5],predict(b,iris)$class))  #查看模型的预测结果

可以看出,bangging分类将3个Versicolor误分为Virginica,将4个Virginica误分为Versicolor。

(E0=(sum(z0)-sum(diag(z0)))/sum(z0))        #计算误差率

[1] 0.04666667

误差率为0.047。

barplot(b$importance)                       #画出变量重要性图


上图可以得知,各变量的重要性分别为:Petal.Length>Petal.Width>Sepal.Length>Sepal.Width

在全量建模的情况下,对比bagging和adaboost分类,adaboost分类的精确度高达100%,明显优于bagging分类。

b)      下面再做5折交叉验证,这里仅给出训练集和测试集的分类平均误差率:

利用boosting()(原来的adaboost.M1()函数)建立adaboost分类

set.seed(1044)  #设定随机种子
samp=c(sample(1:50,25),sample(51:100,25),sample(101:150,25)) #进行随机抽样
a=boosting(Species~.,data=iris[samp,]) #利用训练集建立adaboost分类模



从结果看,训练集的预测结果是100%正确,测试集的误差率是0.04,有3个实际为Versicolor误分为Virginica。

接下来,利用bagging()函数建立bagging分类模型:

b=bagging(Species~.,data=iris[samp,])  #利用训练集建立bagging分类模型


Bagging对训练集的预测结果有2个实际为Virginica的误分为Versicolor,误差率为0.027,对测试集的预测结果有2个实际为Versicolor的误分类为Virginica,有2个实际为Virginica的误分为Versicolor,误差率为0.053。

总结:从以上的预测结果对比得知,对于鸢尾花数据集,adabag分类的效果明显优于bagging分类。


  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiabiao1602

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值