[R - ml]函数实现 bagging

ipred包提供是了决策树的一个bagging实现

library(ipred)
set.seed(300)
mybag = bagging(Good.Loan ~. , data = credit, nbagg = 25)
credit_pred = predict(mybag, credit)
table(credit_pred, credit$Good.Loan)

训练数据的模型已经相当好了!
不过还是要用CV的方法,检验对未来数据的性能。

我们考虑用10-fold CV 下的 bagged tree 方式。

library(caret)
set.seed(300)
ctrl = trainControl(method = 'cv', number = 10) # number 相当于 10-fold
train(Good.Loan ~., data = credit, method = 'treebag', trControl = ctrl)

kappa 值 0.3669041

除了决策树的bag, caret 包还提供了通用的bag()函数。
该函数利用一个控制对象来配置bagging的过程,该对象定义了三个函数,用于适配(fitting)的函数,
预测函数,
聚合函数(aggregrating the votes)

以SVM为例,kernlab包提供了ksvm()函数
那么bag()函数要求我们提供 训练svm, 预测以及统计votes的功能。
caret包提供了svmBag对象用于这一目的:

str(svmBag) # 一个list 包含了三个函数
svmBag$fit

因此我们可以从用如下方法构建bag 的控制对象:

bagctrl <- bagControl(fit = svmBag$fit,  # 训练
                      predict = svmBag$pred, # 预测
                      aggregate = svmBag$aggregate) # 聚集

利用该对象来控制 bagging 过程

set.seed(300)
svmbag = train(Good.Loan ~., data = credit,
               method = 'bag', trControl = ctrl, bagControl = bagctrl)
svmbag
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容