Вся литература по моделированию распределения видов предполагает, что при прогнозировании присутствия / отсутствия вида с использованием модели, которая выводит вероятности (например, RandomForests), важен выбор пороговой вероятности, с помощью которой можно фактически классифицировать вид как присутствие или отсутствие, и следует не всегда полагаться на значение по умолчанию 0,5. Мне нужна помощь с этим! Вот мой код:
library(randomForest)
library(PresenceAbsence)
#build model
RFfit <- randomForest(Y ~ x1 + x2 + x3 + x4 + x5, data=mydata, mytry = 2, ntrees=500)
#eventually I will apply this to (predict for) new data but for first I predict back to training data to compare observed vs. predicted
RFpred <- predict(RFfit, mydata, type = "prob")
#put the observed vs. predicted in the same dataframe
ObsPred <- data.frame(cbind(mydata), Predicted=RFpred)
#create auc.roc plot
auc.roc.plot(ObsPred, threshold = 10, xlab="1-Specificity (false positives)",
ylab="Sensitivity (true positives)", main="ROC plot", color=TRUE,
find.auc=TRUE, opt.thresholds=TRUE, opt.methods=9)
Исходя из этого, я определил, что порог, который я хотел бы использовать для классификации присутствия по прогнозируемым вероятностям, равен 0,7, а не по умолчанию 0,5. Я не совсем понимаю, что делать с этой информацией. Я просто использую этот порог при создании карты моего выхода? Я мог бы легко создать отображенный выход с непрерывными вероятностями, а затем просто переклассифицировать те, у которых значения больше 0,7, как присутствующие, и те, которые <0,7, как отсутствующие.
Или я хочу взять эту информацию и повторно запустить мое моделирование randomForests, используя параметр отсечки? Что именно делает параметр отсечки? Меняет ли это итоговое голосование? (в настоящее время говорит, что это «большинство»). Как мне использовать этот параметр отсечки? Я не понимаю документацию! Спасибо!
Ответы:
# установить порог или значение отсечки до 0,7
# все значения ниже порогового значения 0,7 будут классифицироваться как 0 (присутствует в этом случае)
# все значения, превышающие пороговое значение 0,7, будут классифицироваться как 1 (в данном случае отсутствуют)
источник
Извините, что вы не получили и попыток ответов. Рекомендую книгу Макса Куна для освещения этой проблемы. Это довольно широкий вопрос. Просто добавьте несколько битов:
Обновление,
касающееся весов классов Энди Лиу: «Текущая опция« classwt »в пакете randomForest существует там с самого начала и отличается от того, как официальный код Фортрана (версия 4 и более поздние) реализует весы классов. Он просто учитывает класс весов в расчете индекса Джини при разделении узлов, точно так же, как делается одно дерево CART при заданных весах классов Профессор Брейман придумал более новую схему весов классов, реализованную в более новой версии его кода на Фортране, после того, как мы обнаружили, что просто используя весовые коэффициенты в индексе Джини, похоже, не очень помогли в крайне несбалансированных данных (скажем, 1: 100 или хуже). Если использование взвешенного Джини помогает в вашей ситуации, непременно сделайте это. Я могу только сказать, что в прошлом это не дал нам результат, который мы ожидали ".
источник