RandomForest()返回正结果的概率以及分类

时间:2017-11-14 15:14:04

标签: r random-forest

我正在建立一个随机福雷斯特分类器,我想返回分类和相关概率。我的结果变量是10,1是我要跟踪的正类。

no_of_trees <- 50
rf.under <- randomForest(as.factor(result) ~ . ,
                         data=data_balanced_under,
                         importance=TRUE,
                         ntree=no_of_trees) 

prediction <- predict(rf.under, df.test)
probability <- predict(rf.under, df.test, type="prob")
submit <- data.frame( predicted = prediction, actual = df.test$result)

我希望概率能够返回正面结果的概率,但是我得到了:

> probability
           0    1
242339  1.00 0.00
3356431 1.00 0.00
138327  1.00 0.00
111327  1.00 0.00
3307151 1.00 0.00
222414  1.00 0.00
1817297 1.00 0.00
3860922 1.00 0.00
1710532 1.00 0.00

在我的输出中。这些数字在左边是什么?我不确定它们是什么?我以为它们是行号,但是,为什么它们不是从1,2,3开始索引的? 我与probability[,2]相关联,我假设给出了结果的概率,但也没有效果。

理想情况下,我希望将概率包含在submit数据框中,但目前无法这样做。

另外,混淆矩阵给了我:

confusionMatrix(data = submit$predicted, reference = df.test$result , positive="1")

#Reference
Prediction      0      1
         0 913730    160
         1  50872   8219

是否可以切换它?因此,它显示积极的等级&#34; 1&#34;第一λ

1 个答案:

答案 0 :(得分:1)

probability按类返回概率(这里有两个类,因此有两列)。 这是以这种方式建立的,以实现多类分类。

如果您想要result == 1的概率,只需取probability

的第二列

由于你有非常不平衡的类(0.8%的类),你的分类器倾向于预测它总是0 ...因此,对于大多数例子,result==1的概率接近于0。这就是为什么你的概率看起来不像概率。

关于probability的索引,rownames(df.test)的索引为df.test。我猜您从df.test随机分割df。所以索引不是从1开始。