Toute la littérature sur la modélisation de la répartition des espèces suggère que lors de la prévision de la présence / absence d'une espèce à l'aide d'un modèle qui génère des probabilités (par exemple, RandomForests), le choix de la probabilité seuil par laquelle classer réellement une espèce comme présence ou absence est important et il faut pas toujours compter sur la valeur par défaut de 0,5. J'ai besoin d'aide avec ça! Voici mon code:
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)
À partir de cela, j'ai déterminé que le seuil que j'aimerais utiliser pour classer la présence à partir des probabilités prédites est de 0,7, pas la valeur par défaut de 0,5. Je ne comprends pas totalement quoi faire de ces informations. Dois-je simplement utiliser ce seuil lors de la création d'une carte de ma sortie? Je pourrais facilement créer une sortie mappée avec des probabilités continues, puis simplement reclasser celles ayant des valeurs supérieures à 0,7 comme présentes et celles <0,7 comme absentes.
Ou, est-ce que je veux prendre ces informations et relancer ma modélisation randomForests, en utilisant le paramètre de coupure? Que fait exactement le paramètre de coupure? Cela change-t-il le vote qui en résulte? (dit actuellement qu'il est "majoritaire"). Comment utiliser ce paramètre de coupure? Je ne comprends pas la documentation! Merci!
Réponses:
# définir le seuil ou la valeur de coupure à 0,7
# toutes les valeurs inférieures à la valeur seuil 0,7 seront classées comme 0 (présentes dans ce cas)
# toutes les valeurs supérieures à la valeur seuil 0,7 seront classées comme 1 (absent dans ce cas)
la source
Désolé, vous ne l'avez pas obtenu et les tentatives de réponses. Je recommanderais le livre de Max Kuhn pour la couverture de ce problème. C'est une question assez large. Ajoutez juste quelques bits:
Mise à jour concernant les poids de classe Andy Liaw:
"L'option" classwt "actuelle dans le package randomForest existe depuis le début, et est différente de la façon dont le code Fortran officiel (version 4 et ultérieure) implémente les poids de classe. Il tient simplement compte de la classe poids dans le calcul de l'indice de Gini lors de la division des nœuds, exactement comme la façon dont un seul arbre CART est fait lorsque les poids de classe sont donnés. les pondérations de l'indice de Gini ne semblent pas avoir beaucoup aidé dans les données extrêmement déséquilibrées (disons 1: 100 ou pire). Si l'utilisation de Gini pondéré vous aide dans votre situation, faites-le par tous les moyens. Je peux seulement dire que dans le passé, cela ne nous a pas donné le résultat que nous attendions. "
la source