R语言-随机森林整理(自留)

randomForest重要参数解释

Ntree:森林中树的个数,默认500
Mtry:每棵树(每个节点?)使用的特征个数,默认为2
Importance:默认false,是否计算变量的特征重要性
Proximity:是否计算各观测之间的相似性

set.seed(71)
iris.rf <- randomForest(Species ~ ., data=iris, importance=TRUE
                        ,mtry=3, proximity=TRUE) 
#importance参数是看样本重要性的,proximity是样本之间距离

print(iris.rf)

其他参数

这里参考原文

  • formula指定模型的公式形式,类似于y~x1+x2+x3…;
  • data指定分析的数据集;
  • subset以向量的形式确定样本数据集;
  • na.action指定数据集中缺失值的处理方法,默认为na.fail,即不允许出现缺失 值,也可以指定为na.omit,即删除缺失样本;
  • x指定模型的解释变量,可以是矩阵,也可以是数据框;
  • y指定模型的因变量,可以是离散的因子,也可以是连续的数值,分别对应于随机森林的分类模型和预测模型。这里需要说明的是,如果不指定y值,则随机森林将是一个无监督的模型;
  • xtest和ytest用于预测的测试集;
  • ntree指定随机森林所包含的决策树数目,默认为500;
  • mtry指定节点中用于二叉树的变量个数,默认情况下数据集变量个数的二次方根(分类模型)或三分之一(预测模型)。一般是需要进行人为的逐次挑选,确定最佳的m值;
  • replace指定Bootstrap随机抽样的方式,默认为有放回的抽样
  • classwt指定分类水平的权重,对于回归模型,该参数无效;
  • strata为因子向量,用于分层抽样;
  • sampsize用于指定样本容量,一般与参数strata联合使用,指定分层抽样中层的样本量;
  • nodesize指定决策树节点的最小个数,默认情况下,判别模型为1,回归模型为5;
  • maxnodes指定决策树节点的最大个数;
  • importance逻辑参数,是否计算各个变量在模型中的重要性,默认不计算,该参数主要结合importance()函数使用;
  • proximity逻辑参数,是否计算模型的临近矩阵,主要结合MDSplot()函数使用;
    -oob.prox是否基于OOB数据计算临近矩阵;
  • norm.votes显示投票格式,默认以百分比的形式展示投票结果,也可以采用绝对数的形式;
  • do.trace是否输出更详细的随机森林模型运行过程,默认不输出;
  • keep.forest是否保留模型的输出对象,对于给定xtest值后,默认将不保留算- 法的运算结果

变量的重要性

变量的重要性:
在随机森林中变量的重要性计算时通过将相应变量替换成一列随机的数后,计算模型准确率或者GINI系数的降低。
上图的意思是(0,1分类):0:表示变量替换后对分类为0的数据的影响;1:表示表示变量替换后对分类为1的数据的影响;MeanDecreaseAccuracy:表示变量替换后准确率的下降;MeanDecreaseGini:表示变量替换后GINI系数的降低。数值越大表示变量越重要。
像下图,如果是iris数据集有三类,那么就是一共5列,前三列是对每一列的影响。
在这里插入图片描述

round(importance(iris.rf), type=2)
#type=1是以准确率递减方法得到维度重要性值。type=2为基尼系数方法
#直方图直观查看系数重要性,下边两个好像没啥区别
varImpPlot(iris.rf, main = "variable importance")
varImpPlot(iris.rf, sort=TRUE,n.var=nrow(iris.rf$importance),
           main = "variable importance")

在这里插入图片描述

Do MDS on 1 - proximity

调用cmdscale 函数进行样本之间的距离,proximity 是样本之间的相似度矩阵,所以用1减去之后得到样本的类似距离矩阵的一个矩阵。

iris.mds <- cmdscale(1 - iris.rf$proximity, eig=TRUE)

在iris.mds 中points可以看做每个样本映射到2维空间中的坐标

head(iris.mds$points)
#画散点图可以看一下分类情况
plot(iris.mds$points, col = rep(c("red", "blue", "green"), each = 50))

注意:在iris.mds 中points可以看做每个样本映射到2维空间中的坐标,每一维空间是一个分类特征,但是不是最原始的4个特征,而是由4个特征衍生得到的新的分类特征,根据这个坐标,可以画一张散点图,得到每个样本基于两个分类变量的分组情况。

查看节点数

 #展示随机森林模型中每棵决策树的节点数
hist(treesize(iris.rf))  
max(treesize(iris.rf))
min(treesize(iris.rf))

预测

# 检测(需要训练集和测试集)
pred<-predict(iris.rf,newdata=test)  #输出类别
head(pred)
pred_out_1<-predict(iris.rf,newdata=test,type="prob")  #输出概率
head(pred_out_1)
table <- table(pred,test$Species)  
sum(diag(table))/sum(table)  #预测准确率
plot(margin(iris.rf,test$Species),main="观测值被判断正确的概率图")

ROC曲线

#二分类问题可以画一个roc,也可以通过这个调整ntree和mtry参数
ran_roc <- roc(test$Species,pred_out_1)
plot(ran_roc, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2),grid.col=c("green", "red"), max.auc.polygon=TRUE,auc.polygon.col="skyblue", print.thres=TRUE,main='随机森林模型ROC曲线,mtry=3,ntree=500')

但是这个多分类问题画roc也可以,之后再补充。

  • 5
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值