É fácil encontrar uma área de cálculo de pacotes no ROC, mas existe um pacote que calcula a área sob a curva de precisão de recuperação?
14
É fácil encontrar uma área de cálculo de pacotes no ROC, mas existe um pacote que calcula a área sob a curva de precisão de recuperação?
Respostas:
Em julho de 2016, o pacote PRROC funciona muito bem para calcular o ROC AUC e o PR AUC.
Supondo que você já tenha um vetor de probabilidades (chamado
probs
) calculado com seu modelo e os rótulos de classe verdadeiros estejam no seu quadro de dados, poisdf$label
(0 e 1) esse código deve funcionar:PS: A única coisa desconcertante é que você usa
scores.class0 = fg
quandofg
é calculado para o rótulo 1 e não 0.Aqui estão os exemplos de curvas ROC e PR com as áreas sob elas:
As barras à direita são as probabilidades de limite nas quais um ponto na curva é obtido.
Observe que, para um classificador aleatório, o ROC AUC será próximo de 0,5, independentemente do desequilíbrio da classe. No entanto, a AUC do PR é complicada (consulte O que é "linha de base" na curva de recall de precisão ).
fonte
Um pouco pesquisando no Google retorna um pacote bioc, qpgraph (
qpPrecisionRecall
), e um pacote cran, minet (auc.pr
). Eu não tenho experiência com eles, no entanto. Ambos foram criados para lidar com redes biológicas.fonte
Depois de obter uma curva de recall de precisão
qpPrecisionRecall
, por exemplo:você pode calcular sua AUC fazendo o seguinte:
a página de ajuda
qpPrecisionRecall
fornece detalhes sobre o que a estrutura de dados espera em seus argumentos.fonte
AUPRC()
é uma função noPerfMeas
pacote que é muito melhor do que apr.curve()
função noPRROC
pacote quando os dados são muito grandes.pr.curve()
é um pesadelo e leva uma eternidade para terminar quando você tem vetores com milhões de entradas.PerfMeas
leva segundos em comparação.PRROC
está escrito em R ePerfMeas
está escrito em C.fonte