Cała literatura na temat modelowania rozmieszczenia gatunków sugeruje, że przy przewidywaniu obecności / nieobecności gatunku przy użyciu modelu, który generuje prawdopodobieństwa (np. RandomForests), ważny jest wybór progowej prawdopodobieństwa, według której można faktycznie sklasyfikować gatunek jako obecność lub nieobecność i należy nie zawsze polegają na domyślnej wartości 0,5. Potrzebuję w tym pomocy! Oto mój kod:
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)
Na tej podstawie ustaliłem, że próg, który chciałbym zastosować do klasyfikacji obecności na podstawie przewidywanych prawdopodobieństw, wynosi 0,7, a nie wartość domyślna 0,5. Nie do końca rozumiem, co zrobić z tymi informacjami. Czy po prostu używam tego progu podczas tworzenia mapy wyników? Mógłbym łatwo stworzyć odwzorowane wyjście z ciągłym prawdopodobieństwem, a następnie po prostu przeklasyfikować te z wartościami większymi niż 0,7 jako obecne, a te <0,7 jako nieobecne.
Czy też chcę wziąć te informacje i ponownie uruchomić modelowanie randomForests, używając parametru odcięcia? Co dokładnie robi parametr odcięcia? Czy to zmienia wynikowy głos? (obecnie mówi, że jest to „większość”). Jak korzystać z tego parametru odcięcia? Nie rozumiem dokumentacji! Dzięki!
Odpowiedzi:
# ustawić wartość progową lub wartość odcięcia na 0,7
# wszystkie wartości niższe niż wartość odcięcia 0,7 zostaną sklasyfikowane jako 0 (obecne w tym przypadku)
# wszystkie wartości większe niż wartość odcięcia 0,7 zostaną sklasyfikowane jako 1 (w tym przypadku nieobecne)
źródło
Przepraszam, że nie dostałeś i próbuje odpowiedzi. Poleciłbym książkę Maxa Kuhna do omówienia tego wydania. To dość szeroki problem. Po prostu dodaj trochę bitów:
Aktualizacja dotycząca wag klas Andy Liaw:
„Obecna opcja„ classwt ”w pakiecie randomForest istnieje od samego początku i różni się od sposobu, w jaki oficjalny kod Fortran (wersja 4 i nowsze) implementuje wagi klas. Po prostu uwzględnia klasę wagi w obliczeniach indeksu Gini podczas dzielenia węzłów, dokładnie tak, jak robi się pojedyncze drzewo CART, gdy podane są wagi klas. Prof. Breiman wymyślił nowy schemat ważenia klas zaimplementowany w nowszej wersji swojego kodu Fortran po tym, jak stwierdziliśmy, że po prostu używa wagi w indeksie Gini nie wydają się zbytnio pomagać w skrajnie niezrównoważonych danych (powiedzmy 1: 100 lub gorzej). Jeśli użycie ważonego Gini pomaga w twojej sytuacji, z pewnością to zrób. Mogę tylko powiedzieć, że w przeszłości nie dało nam oczekiwanego rezultatu ”.
źródło