【R的机器学习】模型性能提升探索:随机森林

本文探讨了如何利用R语言实现随机森林模型,通过对比决策树和随机森林,解释了bagging与boosting的区别。介绍了随机森林中特征的选择和抽样策略,以及在R中的randomForest函数应用,讨论了参数调整对模型性能的影响,包括特征参数mtry的选择和抽样次数的优化。通过实验发现,随机森林模型的准确率可达96%,并且在10折交叉验证下,Kappa值为0.93,表现优秀。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于上一节探索了调整决策树的参数进行优化,看到我们训练的模型具备更强的预测性:http://blog.csdn.net/yunru_yang/article/details/73873667

但是迄今为止,我们仍然是在决策树这个模型中进行优化,正如如果我们想跳的更高,更改了很多训练方式,可是我们的弹跳力仍然属于人的范畴;而我们想要有更大的飞跃,则需要做一个螳螂,在黑客帝国中,Neo被训练的就是在母体中,我们的思想禁锢了我们自己的潜能,而如何释放模型的潜能,当然就是从更大维度去探索,这一章介绍下决策树的升级版:随机森林。

顾名思义,森林应该就是很多树,所以随机森林也就是很多决策树的组合;还记得上一章进行了boosting算法的介绍,在这里再举一个通俗的例子:

一个简单的判断这个人是否有信用的决策树,遇到了一个小麻烦,因为每一次的分类,总有一些人分不干净,这个特征假设就是这个人的工资水平(假设银行只知道基本工资),因为在很多互联网公司中,有很多人不只有工资,还有股票(这个是隐含条件),但是银行不知道,所以隐隐感觉会有什么东西在工资背后作祟;那么基于此,对于那些工资低而且偿还能力好的用户(错误分类的对象),在迭代过程中提高这部分人的分类权重,我们看下,如果这个人的工资是1000元/月,理论上这个人是属于信用低下的用户,但是他每次都按期还贷,那么我们把这个人的分类权重调整更高,也就是默认了这个人是2000元/月的工资;在这里,我们看到boosting算法的一个优势:通过调整权重的方式进行了隐藏条件的过滤和预测。但是这是个串行方法:也就是说,我们只有先跑一次决策树,才能知道异常人在哪里,然后基于这个异常去调整权重。

而随机森林应用的方法主要是bagging,和boosting方法有点区别。关于这两个的区别,

http://blog.csdn.net/jlei_apple/article/details/8168856

这个博客已经说得非常明白,我再补充下,一般boosting方法应用的手段是gradient boosting,通俗来看就是这个权重赋值的大小是有一套规则的,而bagging方法比较简单,就是大家用投票的方式,比如三个决策树,第一个说这个条件信用高,第二个和第三个都说他信用低,那么这个人的信用就是低,这是一个并行方法,每个决策树都是独立的,不依赖其他决策树,也就是说,如果有三个人一起判断,boosting是第一个人判断完了,第二个人对第一个人修正,第三个人最后修正加审核,最后结果以第三个人最终审核完成为准–类似于工作流程;而bagging则更加民主,大家做同一件事,最后投票进行判断。

说了这么多,下面用R的决策树来模拟下随机森林,不是很准确,但是大概看到一个意思就可以。

随机森林一般情况下对于变量不会取完整的,经验上每一个决策树都是取sqrt(m)个特征,比如iris数据集有四个特征,那么每一个决策树取两个特征进行训练;而数据是有放回抽样,抽不中的理论上作为测试集。

set.seed(1234)
rn<-sample(nrow(iris),nrow(iris),replace=T)
train_1<-iris[rn,c(1:2,5)]
train_2<-iris[rn,c(2:3,5)]
train_3<-iris[rn,c(3:4,5)]
train_4<-iris[rn,c(1,3,5)]
train_5<-iris[rn,c(2,4,5)]
train_6<-iris[rn,c(1,4,5)]
test<-iris[-rn,]
m1<-C5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值