Toda a literatura de Modelagem de Distribuição de Espécies sugere que, ao prever a presença / ausência de uma espécie usando um modelo que gera probabilidades (por exemplo, RandomForests), é importante escolher a probabilidade de limiar pela qual classificar uma espécie como presença ou ausência é importante e deve-se nem sempre confie no padrão de 0,5. Eu preciso de ajuda com isto! Aqui está o meu código:
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)
A partir disso, determinei que o limite que gostaria de usar para classificar a presença a partir das probabilidades previstas é 0,7 e não o padrão 0,5. Não entendo totalmente o que fazer com essa informação. Simplesmente uso esse limite ao criar um mapa da minha saída? Eu poderia criar facilmente uma saída mapeada com probabilidades contínuas e simplesmente reclassificar aqueles com valores maiores que 0,7 como presentes e aqueles <0,7 como ausentes.
Ou eu quero pegar essas informações e executar novamente a modelagem randomForests usando o parâmetro cut-off? O que exatamente o parâmetro de corte está fazendo? Isso muda o voto resultante? (atualmente diz que é "maioria"). Como uso esse parâmetro de corte? Eu não entendo a documentação! Obrigado!
Respostas:
#set limiar ou valor de corte para 0,7
# todos os valores abaixo do valor de corte 0,7 serão classificados como 0 (presente neste caso)
# todos os valores maiores que o valor de corte 0,7 serão classificados como 1 (ausente neste caso)
fonte
Desculpe, você não recebeu e tenta respostas. Recomendaria o livro de Max Kuhn para a cobertura desta edição. Esta é uma questão bastante ampla. Basta adicionar alguns bits:
Atualização sobre pesos de classe Andy Liaw:
A opção "classwt" atual no pacote randomForest existe desde o início e é diferente de como o código oficial do Fortran (versão 4 e posterior) implementa pesos de classe. pesos no cálculo do índice Gini ao dividir nós, exatamente como uma única árvore CART é feita quando recebem pesos de classe.O Prof. Breiman criou o mais novo esquema de ponderação de classes implementado na versão mais recente de seu código Fortran depois que descobrimos que simplesmente usar os pesos no índice Gini não pareciam ajudar muito em dados extremamente desequilibrados (digamos 1: 100 ou pior). Se o uso de Gini ponderado ajuda na sua situação, faça-o de qualquer maneira. Só posso dizer que no passado ele não nos deu o resultado esperado. "
fonte