Как рассчитать значение AUC для модели Ranger RF?

Как я могу рассчитать значение AUC для модели рейнджера? Ranger — это быстрая реализация алгоритма randomForest в R. Я использую следующий код для построения модели рейнджера для целей классификации и получения прогноза из модели:

#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

Есть идеи ?


person user2947767    schedule 14.08.2017    source источник


Ответы (1)


Ключом к вычислению AUC является способ ранжировать ваши тестовые образцы от «наиболее вероятно, что они будут положительными» до «наименее вероятно, что они будут положительными». Измените свой обучающий звонок, чтобы включить probability = TRUE. pred.data$predictions теперь должно быть матрицей вероятностей классов. Обратите внимание на столбец, соответствующий вашему «положительному» классу. В этом столбце представлен рейтинг, необходимый для вычисления AUC.

Чтобы фактически вычислить AUC, мы будем использовать уравнение (3) из Hand and Till , 2001. Мы можем реализовать это уравнение следующим образом:

## 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 для отрицательного).

person Artem Sokolov    schedule 14.08.2017