У меня возникают странные результаты кривой ROC при построении случайной модели леса для сильно несбалансированного двухклассного предсказания. Исходная частота событий в выборке составляет ~ 2%, и я использую взвешивание для борьбы с дисбалансом классов.
В этом случае я взвешенный мой образец так, что частота событий составляет 1: 4 (25%)
Моей модель настройка в следующем виде:Странная кривая ROC
forest <- ranger(data = sample[,c('fraud', features)]
, num.trees = 350
, case.weights = sample$wt
, probability = T
, importance = 'impurity'
, write.forest = T
, sample.fraction = 0.5
, seed = 98
, dependent.variable.name = 'fraud')
Я получаю очень хорошие результаты с этим как вы можете видеть в матрице путаницы ниже
predicted
true 0 1
0 815800 11391
1 13283 5503
True negative rate - 29%
Negative predictive value - 33%
Однако, когда я рисую кривую ROC я получаю следующий сюжет
perf <- prediction(forest$predictions[,2], sample$fraud)
pred3 <- performance(perf, "tnr", "fnr")
plot(pred3, main="ROC Curve for Random Forest", col="blue", lwd=2)
abline(a=0,b=1,lwd=2,lty=2,col="gray")
настройки
Я не могу понять, почему мой прогноз начинает выполнять только после 50% интервала принятия решения. У вас есть ключ или какой-либо предыдущий опыт?
Ну, это действительно неважно, если я поменяю классы, не так ли? У меня такая же история, если я рисую кривую для другого класса ... – MiksL