Com base no TPR e no FPR, gero a curva ROC para o meu modelo de classificação binária. Eu não sei, como calcular o valor da AUC. Eu seria de grande ajuda para mim, se você puder me ajudar a calcular o valor da AUC.
machine-learning
classification
Rejaul Karim
fonte
fonte
Respostas:
Bem-vindo à comunidade!
Como você sabe, a AUC é apenas a área sob a curva ROC. Portanto, a questão é mais sobre métodos numéricos, pois você tem um conjunto de pontos e gostaria de calcular a área abaixo dele.
Soma Riemanniana
Solução trivial. Simplesmente faça retângulos a partir dos pontos que você possui. A área de cada retângulo é simplesmente o produto das arestas. Então resumi-los! Você provavelmente não gosta, não é ?!
Método trapezoidal
Depois de Riemannian, o algoritmo mais simples e ingênuo para fazer isso. Você simplesmente tem um conjunto de pontos e apenas calcula a área trapezoidal entre cada par e resume-os como você vê na figura abaixo. Possui o erro máximo de computação, pois simplifica bastante o problema.
Método Simpson (1/3)
Muito melhor quando estamos falando de curvas! Vamos mantê-lo simples e direto ao ponto. Você pode modelar sua função em cada intervalo usando um quadrático (y= ax2+ b x + c ) e com 3 pontos de dados. Usando seus três pontos de dados, você pode calcularuma , b e c . Então a área sob curva não é tão difícil, mas temos uma solução melhor! Confie em mim ou não, o valor dessa integração é simplesmente
Onde( a , f( Um ) ) e ( b , f( B ) ) são pontos finais de intervalo e ( m , f( M ) ) é o ponto médio. Veja a imagem abaixo daqui para comparar esses métodos.
Métodos de Romberg
Os métodos Simpson e / ou trapézio podem ser aplicados recursivamente para obter um cálculo mais preciso. Chama-se método Romberg . A precisão desses métodos estava na duração do intervalo. Intervalos menores fornecem uma integração mais precisa. Romberg usa esse fato para se aproximar iterativamente de respostas mais precisas.
E, claro, toneladas de mais algoritmos para fazer isso.
PS: Você certamente tem bibliotecas e funções em diferentes idiomas para calcular isso para você. O Scipy oferece para Python, por exemplo .
Espero que ajude! Boa sorte!
fonte