如何计算游侠RF模型的AUC值?

时间:2017-08-14 14:23:24

标签: r random-forest auc

如何计算游侠模型的AUC值? Ranger是R中randomForest算法的快速实现。我使用以下代码构建用于分类目的的游侠模型,并从模型中获得预测:

#Build the model using ranger() function
ranger.model <- ranger(formula, data = data_train, importance = 'impurity',   
write.forest = TRUE, num.trees = 3000, mtry = sqrt(length(currentComb)), 
classification = TRUE)
#get the prediction for the ranger model
pred.data <- predict(ranger.model, dat = data_test,)
table(pred.data$predictions)

但我不知道如何计算AUC值

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

计算AUC的关键是有一种方法可以将您的测试样本从“最有可能为正”到“最不可能为正”进行排名。修改您的培训电话以包含probability = TRUEpred.data$predictions现在应该是类概率的矩阵。记下与“正面”类对应的列。此列提供了计算AUC所需的排名。

要实际计算AUC,我们将使用Hand and Till, 2001中的公式(3)。我们可以按如下方式实现这个等式:

## An AUC estimate that doesn't require explicit construction of an ROC curve
auc <- function( scores, lbls )
{
  stopifnot( length(scores) == length(lbls) )
  jp <- which( lbls > 0 ); np <- length( jp )
  jn <- which( lbls <= 0); nn <- length( jn )
  s0 <- sum( rank(scores)[jp] )
  (s0 - np*(np+1) / 2) / (np*nn)
}   

其中scores是与pred.data$predictions对应的列,而lbls是对应的测试标签,编码为二进制向量(1为正数,0-1表示否定)。