R语言使用bagging方法对数据分类与交叉验证

数据分类说明

R的adabag包对bagging与boosting进行支持,其中对于bagging算法adebag包提供了Breiman bagging算法,在Breiman bagging中首次提出子多版本分类器的理念,得到聚合分类器。

操数据分类作

导入与安装算法包

library(rpart)
library(adabag)

调用bagging函数完成对数据集的训练(训练过程中可能会产生不同的结果)

set.seed(2)
churn.bagging = bagging(churn ~ .,data = trainset,mfinal = 10)

从bagging的结果评估变量的重要性:

churn.bagging$importance
           international_plan number_customer_service_calls         number_vmail_messages               total_day_calls 
                   10.4948380                    16.4260510                     0.5319143                     0.3774190 
             total_day_charge             total_day_minutes               total_eve_calls              total_eve_charge 
                    0.0000000                    28.7545042                     0.1463585                     0.0000000 
            total_eve_minutes              total_intl_calls             total_intl_charge            total_intl_minutes 
                   14.2366754                     8.7733895                     0.0000000                     9.7838256 
            total_night_calls            total_night_charge           total_night_minutes               voice_mail_plan 
                    0.4349952                     0.0000000                     2.3379622                     7.7020671 

分类模型处理好后对测试集进行预测,对测试数据集的类标号进行预测

churn.predbagging = predict.bagging(churn.bagging,newdata = testset)

根据预测结果产生分类表:

churn.predbagging$confusion
               Observed Class
Predicted Class yes  no
            no   35 866
            yes 106  11

得到bagging的平均误差

 churn.predbagging$error
[1] 0.04518664

数据分类原理

bagging的算法源于bootstrap aggregating,具体稳定、准确、易于实现的优点,常用于数据分类及回归处理。bagging算法定义如下:给定大小为N的数据集,算法采用bootstrap抽样,得到m个新的训练数据集Di,每个数据大小均为n,通过m个样本得到m模型,然后通过求平均(回归问题)或者投票方法(分类问题)来选择最优模型。
bagging算法优点在于它是一个容易理解、易于实现且功能强大的学习算法,但是所到得的结果很难解释该算法的主要缺点。

交叉验证说明

为了评测分类器预测能力。可以使用交叉验证方法来评估分类模型的鲁棒性,下面bagging.cv对bagging算法得到的模型进行验证。

交叉验证操作

首先调用bagging.cv在训练集上进行10次迭代的10折交叉验证

churn.bagging.cv = bagging.cv(churn ~ .,v = 10,data = trainset,mfinal = 10)

从交叉验证的结果生成混淆矩阵:

churn.bagging.cv$confusion
               Observed Class
Predicted Class  yes   no
            no   120 1947
            yes  222   26

从交叉验证结果生成最小估计误差:

churn.bagging.cv$error
[1] 0.06306695

交叉验证操作

R的adabag包提供了一个在bagging和boosting算法均能实现k折交叉验证的函数,我们调用了bagging.cv对bagging算法实施k折交叉验证。

你可能感兴趣的:(R语言集成学习)