Мой ресурс данных: https://www.kaggle.com/mlg-ulb/creditcardfraud Набор данных сильно несбалансирован, на положительный класс (мошенничество) приходится 0,172% всех транзакций,< img src="https://i.stack.imgur.com/2l72y.png" alt="введите здесь описание изображения">
Я использовал пакет PRROC, чтобы получить кривую AUC ROC, вот мой случайный код леса:
rf.model <- randomForest(Class ~ ., data = training, ntree = 2000, nodesize = 20)
rf_pred <- predict(rf.model, test,type="prob"
поэтому, как и ожидалось, rf_pred должен возвращать вероятность каждого класса:
Затем я использовал следующий код:
fg_rf <- rf_pred[test$Class==1]
bg_rf <- rf_pred[test$Class==0]
roc_rf <- roc.curve(scores.class0 = fg_rf,scores.class1 = bg_rf,curve = T)
Однако КРИВАЯ ROC оказалась не такой, как я ожидал
Та же проблема возникла с кривой PR. Это из-за высокого дисбаланса в классе? И если предположить, что rf_pred возвращает вероятность 0/1, как я могу сделать так, чтобы fg_rf равнялась вероятности calss = 1, мой код: fg_rf <- rf_pred[test$Class==1] правильный?