获得R中随机森林的准确性
Get the accuracy of a random forest in R
我用我的数据创建了一个 random forest
:
fit=randomForest(churn~., data=data_churn[3:17], ntree=1,
importance=TRUE, proximity=TRUE)
我可以很容易地看到我的 confusion matrix
:
conf <- fit$confusion
> conf
No Yes class.error
No 945 80 0.07804878
Yes 84 101 0.45405405
现在我需要知道随机森林的准确性。我四处搜索并意识到 caret 库有一个 confusionMatrix
方法可以获取混淆矩阵和 returns 准确性(以及许多其他值)。但是,该方法需要另一个名为 "reference"
的参数。我的问题是如何为获得随机森林准确性的方法提供参考?
而且...这是获得随机森林准确性的正确方法吗?
使用 randomForest(..., do.trace=T)
查看训练期间的 OOB 错误,class 和 ntree。
(仅供参考,你选择了 ntree=1
所以你只会得到一个 rpart 决策树,而不是森林,这种违背了使用 RF 和随机选择两个特征的子集的目的和示例。您可能想要改变 ntree
值。)
训练后,您可以从混淆矩阵最右边的列中得到每个 class 的错误,正如您已经发现的那样:
> fit$confusion[, 'class.error']
class.error
No Yes
0.07804878 0.45405405
(您可能还想设置 options('digits'=3)
以不看到那些过多的小数位)
至于将 class 错误列表(accuracies = 1 - errors)转换为一个总体准确度数字,这很容易做到。您可以使用 mean、class-weighted mean、harmonic mean(准确度,而不是错误)等。这取决于您的应用程序和 mis[=31 的相对惩罚=]化。你的例子很简单,只有两个-class.
(或者例如,有更复杂的评估者间协议措施)
我用我的数据创建了一个 random forest
:
fit=randomForest(churn~., data=data_churn[3:17], ntree=1,
importance=TRUE, proximity=TRUE)
我可以很容易地看到我的 confusion matrix
:
conf <- fit$confusion
> conf
No Yes class.error
No 945 80 0.07804878
Yes 84 101 0.45405405
现在我需要知道随机森林的准确性。我四处搜索并意识到 caret 库有一个 confusionMatrix
方法可以获取混淆矩阵和 returns 准确性(以及许多其他值)。但是,该方法需要另一个名为 "reference"
的参数。我的问题是如何为获得随机森林准确性的方法提供参考?
而且...这是获得随机森林准确性的正确方法吗?
使用 randomForest(..., do.trace=T)
查看训练期间的 OOB 错误,class 和 ntree。
(仅供参考,你选择了 ntree=1
所以你只会得到一个 rpart 决策树,而不是森林,这种违背了使用 RF 和随机选择两个特征的子集的目的和示例。您可能想要改变 ntree
值。)
训练后,您可以从混淆矩阵最右边的列中得到每个 class 的错误,正如您已经发现的那样:
> fit$confusion[, 'class.error']
class.error
No Yes
0.07804878 0.45405405
(您可能还想设置 options('digits'=3)
以不看到那些过多的小数位)
至于将 class 错误列表(accuracies = 1 - errors)转换为一个总体准确度数字,这很容易做到。您可以使用 mean、class-weighted mean、harmonic mean(准确度,而不是错误)等。这取决于您的应用程序和 mis[=31 的相对惩罚=]化。你的例子很简单,只有两个-class.
(或者例如,有更复杂的评估者间协议措施)