2
respostas

[Dúvida] ROC a partir das previsões

Boa tarde pessoal. Tudo bem?

Sempre pensei que a curva ROC era calculada a partir da confiança do modelo sobre determinada previsão. Ou sejaa, em um problema de classificação binário, se o modelo retornasse 0.6 isso seria considerado 1 e 0.4 seria considerado 0 (uma regressão logística com limiar 0.5, por exemplo).

No caso do exemplo do vídeo, não temos esses valores probabilísticos do modelo, então como é possível calcular os pontos da curva ROC só com a previsão final sem poder trabalhar alterando os limiares?

Agradeço desde já!

2 respostas

Olá, Gustavo, tudo bem?

Como você bem mencionou, a curva ROC é geralmente calculada a partir das probabilidades previstas pelo modelo. Mas destaco que também é possível calcular a curva ROC com previsões binárias, embora geralmente essa forma não forneça uma visão tão rica das capacidades do modelo.

A curva ROC é criada variando o limiar de decisão do modelo, ou seja, o valor a partir do qual uma previsão é considerada como classe 1 ou classe 0. Ao variar esse limiar, é possível calcular diferentes taxas de falsos positivos e verdadeiros positivos, que são utilizadas para construir a curva ROC.

Resumindo, embora seja possível calcular a curva ROC com previsões binárias, isso pode não ser tão informativo quanto usar as probabilidades previstas.

Espero ter esclarecido à dúvida.

Qualquer coisa é só perguntar. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá, Gustavo! Tudo bem?

Que bom que você está engajado e questionando os processos de aprendizado, isso é muito importante para o seu desenvolvimento em Machine Learning!

O código apresentado na aula faz o seguinte:

from sklearn.metrics import RocCurveDisplay
RocCurveDisplay.from_predictions(y_test, preds);

Ele utiliza o método .from_predictions da classe RocCurveDisplay() do scikit-learn para gerar e exibir a curva ROC a partir das previsões do seu modelo. Aqui, y_test são as etiquetas verdadeiras dos dados de teste, e preds são as previsões feitas pelo seu modelo.

Quanto à sua pergunta sobre os valores probabilísticos e os limiares, normalmente, para calcular a curva ROC, de fato, você precisa das probabilidades preditas pelo modelo, não apenas das previsões finais (classes preditas).

Porém, utilizar RocCurveDisplay.from_predictions do scikit-learn é uma opção válida em certos contextos, especialmente quando se deseja uma solução rápida para visualizar a curva ROC a partir das previsões finais de um modelo. O método foi projetado para ser conveniente e direto, permitindo a visualização da curva ROC sem necessitar das probabilidades de classificação.

A escolha entre usar RocCurveDisplay.from_predictions e métodos baseados em probabilidades, como roc_curve, depende do seu objetivo e das informações disponíveis. Se o seu interesse é uma análise rápida e você só tem acesso às previsões finais,RocCurveDisplay.from_predictions é uma ótima ferramenta. Se você deseja uma compreensão mais profunda sobre o desempenho do modelo em vários limiares ou se precisa otimizar o ponto de corte, trabalhar com probabilidades e roc_curve seria mais apropriado.

Você pode ver com mais detalhes sobre esse método utilizado em: sklearn.metrics.RocCurveDisplay

Espero que essa explicação tenha esclarecido suas dúvidas! Se tiver mais perguntas, fique à vontade para perguntar.