gpt4 book ai didi

r - 使用R中的randomForest包,如何从分类模型中获取概率?

转载 作者:行者123 更新时间:2023-11-30 08:21:33 28 4
gpt4 key购买 nike

TL;博士:

我可以在原始版本中标记一些内容 randomForest 调用以避免重新运行 预测 函数来获取预测的分类概率,而不仅仅是可能的类别?

详细信息:

我正在使用randomForest包。

我有一个类似的模型:

model <- randomForest(x=out.data[train.rows, feature.cols],
y=out.data[train.rows, response.col],
xtest=out.data[test.rows, feature.cols],
ytest=out.data[test.rows, response.col],
importance= TRUE)

其中 out.data 是一个数据框,feature.cols 是数字和分类特征的混合,而 response.col 是一个 TRUE/FALSE 二进制变量,我强制将其放入 factor 中,以便 randomForest 模型能够正确地将其视为分类变量.

一切运行良好,并且变量model已正确返回给我。但是,我似乎找不到要传递给 randomForest 函数的标志或参数,以便将 model概率 TRUEFALSE。相反,我得到的只是预测值。也就是说,如果我查看 model$predicted,我会看到类似以下内容:

FALSE
FALSE
TRUE
TRUE
FALSE
.
.
.

相反,我想看到类似的内容:

   FALSE  TRUE
1 0.84 0.16
2 0.66 0.34
3 0.11 0.89
4 0.17 0.83
5 0.92 0.08
. . .
. . .
. . .

我可以得到上述内容,但为了做到这一点,我需要执行以下操作:

tmp <- predict(model, out.data[test.rows, feature.cols], "prob")

[test.rows 捕获模型测试期间使用的行号。此处未显示详细信息,但很简单,因为测试行 ID 输出到 model 中。]

然后一切正常。 问题是模型很大,运行时间很长,甚至预测本身也需要一段时间。由于预测应该完全没有必要(我只是想计算测试数据集上的 ROC 曲线,该数据集应该已经计算过),我是希望能跳过这一步。 我可以在原始版本中标记一些内容 randomForest 调用以避免重新运行 预测 函数?

最佳答案

model$predictedpredict() 返回的内容相同。如果您想要 TRUEFALSE 类的概率,则必须运行 predict(),或传递 x,y,xtest ,ytest 就像

randomForest(x,y,xtest=x,ytest=y), 

其中x=out.data[, feature.cols], y=out.data[, response.col]

model$predicted 根据每个记录的 model$votes 中哪个类具有较大值来返回类。 投票,正如 @joran 指出的那样,是来自随机森林的 OOB(袋外)“投票”的比例,只有在 OOB 样本中选择记录时才计算投票。另一方面,predict() 根据所有树的投票返回每个类别的真实概率。

使用randomForest(x,y,xtest=x,ytest=y)功能与传递公式或简单randomForest(x,y)功能略有不同,如上面给出的例子。 randomForest(x,y,xtest=x,ytest=y) 将返回每个类别的概率,这可能听起来有点奇怪,但可以在 model$test$votes< 下找到,以及 model$test$predicted 下的预测类,它只是根据 model$test$votes 中哪个类具有较大值来选择类。此外,当使用randomForest(x,y,xtest=x,ytest=y)时,model$predictedmodel$votes具有相同的定义如上。

最后,请注意,如果使用randomForest(x,y,xtest=x,ytest=y),那么,为了使用predict()函数,keep.forest标志应该设置为 TRUE。

model=randomForest(x,y,xtest=x,ytest=y,keep.forest=TRUE). 
prob=predict(model,x,type="prob")

prob WILL 等同于 model$test$votes,因为测试数据输入都是 x

关于r - 使用R中的randomForest包,如何从分类模型中获取概率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25715502/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com