1. 首页 > 数码 >

随机森林参数调优 随机森林参数调优的好处

您好,今天小爱来为大家解答以上的问题。随机森林参数调优相信很多小伙伴还不知道,现在让我们一起来看看吧!

随机森林参数调优 随机森林参数调优的好处随机森林参数调优 随机森林参数调优的好处


1、(3)按照特征的重要性排序,然后剔除后面不重要的特征总结决策树之前先总结一下特征的生成和选择,因为决策树就是一种内嵌型的特征选择过程,它的特征选择和算法是融合在一起的,不需要额外的特征选择。

2、3、特征太多一、特征生成:特征生成是指在收集数据之时原始数据就具有的数据特征,这些数据特征由收集的数据决定(其实也就是在产品定型时设定的需要收集的数据特征),当然,在数据预处理时,也可以在此基础上构造一些新的数据特征,这些特征越多越好,表示你考虑问题比较周全,具体那些变量有用或没用,这要交给下一步特征选择来决定。

3、二、特征选择特征选择是指在原有数据特征的基础上,去除重要性比较低的特征变量,过滤出有用的特征变量。

4、这里比较困难的是搞清楚什么样的特征比较重要?这需要根据具体的问题具体分析,有些变量的选择可以很直观的看出来,但这种直觉也不一定正确。

5、对于常用特征选择方法主要有:过滤型、包装型、内嵌型。

6、过滤型:是指你可以根据某个统计量的大小排序来选择特征变量,如相关系数、p值、R值等包装型:是指在一个特征中选取的特征子集。

7、具体需要考虑:用什么样的算法来选取?选取的的标准是什么?常用的算法是分步回归包括向前搜索、向后删除、双向搜索向前搜索:每次选取一个能使模型预测或分类效果的特征变量进来,进来后不退出,直到模型改善效果不再明显;向后删除:是指每次从特征全集中每次删除一个特征变量能使模型预测或分类效果,退出后不进来,直到模型改善效果不再明显;这里再提一下特征变量选择的几个标准:p值、R值、AIC(越小效果越好)、BIC(越小效果越好)、熵(越小效果越好)决策的几个要点:1、如何决策?(也就是如何树如何分叉)------熵和信息增益---这里面包含的就是特征的选择?哪个特征变量包含的信息量大,就排在前面,至于树的深度就决定特征变量的个数。

8、当然不同的算法使用的衡量的标准不同,还有:信息增益比、基尼不纯系数2、如何剪枝?-----一般是事后剪枝熵:是指信息的混合程度(混乱程度),熵【0-1】越大表示该中混合的信息越多,也就表明这次的分叉效果不好还是有很多不同类的信息混在一起信息增益:熵值的减少量,越大越好决策树模型特点:模型易于解释;存储空间较小,以树的形式存储,决策树是一个弱分类器,不能完全分类,需要把多个弱分类器通过多数投票法组合在一起。

9、四、R包实现决策树library(rpart)library(rpart.plot)## rpart.control对树进行一些设置## xval是10折交叉验证## minsplit是最小分支节点数,这里指大于等于20,那么该节点会继续分划下去,否则停止## minbucket:叶子节点最小样本数## maxdepth:树的深度## cp全称为complexity parameter,指某个点的复杂度,对每一步拆分,模型的拟合优度必须提高的程度ct ## kyphosis是rpart这个包自带的数据集## na.action:缺失数据的处理办法,默认为删除因变量缺失的观测而保留自变量缺失的观测。

10、## mod:树的末端数据类型选择相应的变量分割方法:## parms用来设置三个参数:先验概率、损失矩阵、分类纯度的度量方法(gini和rmation)## cost是损失矩阵,在剪枝的时候,叶子节点的加权误与父节点的误进行比较,考虑损失矩阵的时候,从将“减少-误”调整为“减少-损失”data("Kyphosis")fit ## 作图有2种方法par(mfrow=c(1,3));plot(fit); text(fit,use.n=T,all=T,cex=0.9)## 第二种,这种会更漂亮一些:shadow.col="gray", box.col="green",border.col="blue", split.col="red",split.cex=1.2, main="Kyphosis决策树");## rpart包提供了复杂度损失修剪的修剪方法,printcp会告诉分裂到每一层,cp是多少,平均相对误是多少## 交叉验证的估计误(“xerror”列),以及标准误(“xstd”列),平均相对误=xerror±xstdprintcp(fit)## 通过上面的分析来确定cp的值##调用CP(complexity parameter)与xerror的相关图,一种方法是寻找最小xerror点所对应#的CP值,并由此CP值决定树的大小,另一种方法是利用1SE方法,寻找xerror+SE的最小点对应的CP值。

11、plotcp(fit)##利用以下方法进行修剪:## prune(fit, cp= fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"])fit2 #利用模型预测ndata=data.frame(...)predict(fit,newdata=ndata)#案例str(iris)set.seed(1234)#设置随机数种子--使每次运行时产生的一组随机数相同,便于结果的重现#抽样:从iris数据集中随机抽70%定义为训练数据集,30%为测试数据集(常用)#这里是对行抽样,ind是一个只含1和2的向量ind trainData testData f#训练数据fit#预测re#或者用其他包library(party)myFormula iris_ctree # 查看预测的结果z#可以根据以上列联表求出预测的正确率---评估模型#计算准确度q五、机器集成与随机森林法则前面说过,决策树的一个特点是:弱分类器,分类不完全,需要利用集成投票的方式来增加度和稳健性。

12、机器集成算法:对于数据集训练多个模型,对于分类问题,可以采用投票的方法,选择票数最多的类别作为最终的类别,而对于回归问题,可以采用取均值的方法,取得的均值作为最终的结果。

13、主要的集成算法有bagging和adaboost算法。

14、随机森林:随机森林就是利用机器集成多个决策树,主要有两个参数,一个是决策树的个数,一个是每棵树的特征变量个数。

15、随机森林特点:度高、稳健性好,但可解释性。

16、(可以知道各个变量的重要性)R包实现机器集成算法:#adabag包均有函数实现bagging和adaboost的分类建模libra答:如果不是有放回的抽样,那么每一棵树的训练样本是不同的,都是没有交集的,那么每棵树都是有偏的,都是片面的,树与树之间并不是完全公平的。

17、我们需要的是,没颗决策树是公平的,然后让它们投票决策得出结果,并且这样可以防止过度拟合。

18、ry(adabag)az0#计算误率barplot(a$importance)bplot(b$error,type="l",main="AdaBoost error vs number of trees") #对误演变进行画图az0#计算误率barplot(a$importance)bplot(b$error,type="l",main="AdaBoost error vs number of trees") #对误演变进行画图#5折交叉验证set.seed(1044) #设定随机种子a=boosting(Species~.,data=iris[samp,]) #利用训练集建立adaboost分类模z0E1z0E1R包实现随机森林:library(randomForest)library(foreign)data("iris")#抽样数据indtraningtesting#训练数据rf #预测table(predict(rf),traning$Species)table(predict(rf,testing),testing$Species)#查看预测的效果print(rf)plot(rf)#查看重要性varImpPlot(rf)。

本文到这结束,希望上面文章对大家有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 12345678@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息