Métricas
Até este ponto, utilizamos a acurácia como principal métrica para avaliar o desempenho do modelo. No entanto, a acurácia possui algumas limitações. Agora, vamos discutir suas desvantagens e apresentar métricas adicionais – baseadas em VP, VN, FP e FN – que ajudam a abordar essas questões.
Acurácia
Acurácia representa a proporção de previsões corretas:
acuraˊcia=corretas+incorretascorretas=VP+VN+FP+FNVP+VNNo entanto, a acurácia possui suas desvantagens. Por exemplo, imagine que você está tentando prever se um paciente possui uma doença rara. O conjunto de dados contém 99,9% de pacientes saudáveis e apenas 0,1% com a doença. Nesse caso, sempre prever que o paciente está saudável resultaria em uma acurácia de 0,999 – mesmo que tal modelo seja completamente inútil.
Conjuntos de dados como esse são chamados de desequilibrados e, nesses casos, a acurácia balanceada é uma métrica mais adequada.
Acurácia balanceada
Acurácia balanceada calcula separadamente a proporção de predições positivas corretas e a proporção de predições negativas corretas, depois faz a média entre elas. Essa abordagem atribui igual importância para cada classe, independentemente do desequilíbrio do conjunto de dados.
balanced_accuracyaccuracy=21⋅PTP+21⋅NTN=P+NTP+TNOnde
- P=TP+FN - número total de instâncias positivas (classe 1);
- N=TN+FP - número total de instâncias negativas (classe 0).
No exemplo de doença rara, a acurácia balanceada de um modelo que sempre prevê "saudável" seria 0,5 - destacando efetivamente o problema. Assim, essa questão é abordada.
No entanto, a acurácia balanceada ainda não diferencia entre erros do tipo 1 e do tipo 2 - assim como a acurácia comum. É nesse ponto que entram precisão e revocação.
Precisão
A métrica de precisão indica quantos dos valores que o modelo previu como positivos eram realmente positivos. É a proporção de predições verdadeiramente positivas em relação a todas as predições positivas feitas pelo modelo:
precision=TP+FPTPAo utilizar a métrica de precisão, é possível compreender com que frequência ocorre um erro do tipo 1. Alta precisão indica que erros do tipo 1 são raros, enquanto baixa precisão indica que esses erros acontecem com frequência.
Revocação
A métrica de revocação mostra a proporção de casos positivos reais que o modelo previu corretamente:
revocac¸a˜o=precisa˜o=TP+FNTPA métrica de revocação auxilia na compreensão da frequência com que ocorre um erro do tipo 2. Alta revocação significa que erros do tipo 2 são raros, enquanto baixa revocação indica que eles acontecem com frequência.
No entanto, tanto precisão quanto revocação possuem limitações. Por exemplo, um modelo que prevê apenas a classe positiva (1) alcançará revocação perfeita, mas sua precisão será baixa. Por outro lado, um modelo que prevê corretamente apenas uma instância positiva e classifica todo o restante como negativo terá precisão perfeita, mas revocação péssima.
Isso demonstra que, embora seja fácil construir um modelo com precisão perfeita ou revocação perfeita, é muito mais difícil obter bom desempenho em ambas. Por esse motivo, é importante considerar ambas as métricas – e, felizmente, existe uma métrica que as combina.
Pontuação F1
A pontuação F1 é a média harmônica de precisão e revocação. A média harmônica é preferida em relação à média aritmética porque penaliza situações em que um dos valores (precisão ou revocação) é baixo, tornando-se uma medida mais equilibrada do desempenho do modelo.
F1=precision1+recall12=precision+recall2⋅precision⋅recallA pontuação F1 combina tanto precisão quanto revocação em uma única métrica. Ela só será alta se ambos, precisão e revocação, forem relativamente altos, tornando-se uma métrica útil quando é necessário equilibrar ambos os tipos de erro.
A escolha da métrica adequada depende da tarefa específica. Acurácia (ou acurácia balanceada para conjuntos de dados desbalanceados) é intuitiva e fornece uma noção geral do desempenho global do modelo. Para obter uma visão mais detalhada sobre os tipos de erro cometidos pelo modelo, precisão auxilia na identificação de erros do tipo 1, enquanto revocação destaca erros do tipo 2. A pontuação F1 indica o quão equilibrado o modelo está em relação aos erros do tipo 1 e tipo 2.
Outro métrica comumente utilizada é o ROC/AUC, sobre a qual você pode ler mais em este artigo.
Métricas em Python
O Scikit-learn fornece implementações para todas essas métricas no módulo sklearn.metrics:
from sklearn.metrics import accuracy_score, balanced_accuracy_score, precision_score, recall_score, f1_score
accuracy = accuracy_score(y_true, y_pred)
balanced_accuracy = balanced_accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)
Se desejar obter métricas como precisão, recall e F1-score de uma só vez, o sklearn oferece a função classification_report():
12345678910111213import pandas as pd import seaborn as sns from sklearn.metrics import classification_report from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Display a classification report print(classification_report(y_test, y_pred))
Suporte refere-se ao número de ocorrências reais de cada classe no conjunto de teste. Média macro calcula a média de cada métrica (precisão, recall, F1) igualmente entre todas as classes, sem considerar o desbalanceamento das classes. Média ponderada também faz a média das métricas entre todas as classes, mas atribui mais peso às classes com mais instâncias (com base em seu suporte).
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain the difference between precision and recall in more detail?
When should I use F1 score instead of accuracy?
How do I interpret the classification report output in scikit-learn?
Awesome!
Completion rate improved to 4.17
Métricas
Deslize para mostrar o menu
Até este ponto, utilizamos a acurácia como principal métrica para avaliar o desempenho do modelo. No entanto, a acurácia possui algumas limitações. Agora, vamos discutir suas desvantagens e apresentar métricas adicionais – baseadas em VP, VN, FP e FN – que ajudam a abordar essas questões.
Acurácia
Acurácia representa a proporção de previsões corretas:
acuraˊcia=corretas+incorretascorretas=VP+VN+FP+FNVP+VNNo entanto, a acurácia possui suas desvantagens. Por exemplo, imagine que você está tentando prever se um paciente possui uma doença rara. O conjunto de dados contém 99,9% de pacientes saudáveis e apenas 0,1% com a doença. Nesse caso, sempre prever que o paciente está saudável resultaria em uma acurácia de 0,999 – mesmo que tal modelo seja completamente inútil.
Conjuntos de dados como esse são chamados de desequilibrados e, nesses casos, a acurácia balanceada é uma métrica mais adequada.
Acurácia balanceada
Acurácia balanceada calcula separadamente a proporção de predições positivas corretas e a proporção de predições negativas corretas, depois faz a média entre elas. Essa abordagem atribui igual importância para cada classe, independentemente do desequilíbrio do conjunto de dados.
balanced_accuracyaccuracy=21⋅PTP+21⋅NTN=P+NTP+TNOnde
- P=TP+FN - número total de instâncias positivas (classe 1);
- N=TN+FP - número total de instâncias negativas (classe 0).
No exemplo de doença rara, a acurácia balanceada de um modelo que sempre prevê "saudável" seria 0,5 - destacando efetivamente o problema. Assim, essa questão é abordada.
No entanto, a acurácia balanceada ainda não diferencia entre erros do tipo 1 e do tipo 2 - assim como a acurácia comum. É nesse ponto que entram precisão e revocação.
Precisão
A métrica de precisão indica quantos dos valores que o modelo previu como positivos eram realmente positivos. É a proporção de predições verdadeiramente positivas em relação a todas as predições positivas feitas pelo modelo:
precision=TP+FPTPAo utilizar a métrica de precisão, é possível compreender com que frequência ocorre um erro do tipo 1. Alta precisão indica que erros do tipo 1 são raros, enquanto baixa precisão indica que esses erros acontecem com frequência.
Revocação
A métrica de revocação mostra a proporção de casos positivos reais que o modelo previu corretamente:
revocac¸a˜o=precisa˜o=TP+FNTPA métrica de revocação auxilia na compreensão da frequência com que ocorre um erro do tipo 2. Alta revocação significa que erros do tipo 2 são raros, enquanto baixa revocação indica que eles acontecem com frequência.
No entanto, tanto precisão quanto revocação possuem limitações. Por exemplo, um modelo que prevê apenas a classe positiva (1) alcançará revocação perfeita, mas sua precisão será baixa. Por outro lado, um modelo que prevê corretamente apenas uma instância positiva e classifica todo o restante como negativo terá precisão perfeita, mas revocação péssima.
Isso demonstra que, embora seja fácil construir um modelo com precisão perfeita ou revocação perfeita, é muito mais difícil obter bom desempenho em ambas. Por esse motivo, é importante considerar ambas as métricas – e, felizmente, existe uma métrica que as combina.
Pontuação F1
A pontuação F1 é a média harmônica de precisão e revocação. A média harmônica é preferida em relação à média aritmética porque penaliza situações em que um dos valores (precisão ou revocação) é baixo, tornando-se uma medida mais equilibrada do desempenho do modelo.
F1=precision1+recall12=precision+recall2⋅precision⋅recallA pontuação F1 combina tanto precisão quanto revocação em uma única métrica. Ela só será alta se ambos, precisão e revocação, forem relativamente altos, tornando-se uma métrica útil quando é necessário equilibrar ambos os tipos de erro.
A escolha da métrica adequada depende da tarefa específica. Acurácia (ou acurácia balanceada para conjuntos de dados desbalanceados) é intuitiva e fornece uma noção geral do desempenho global do modelo. Para obter uma visão mais detalhada sobre os tipos de erro cometidos pelo modelo, precisão auxilia na identificação de erros do tipo 1, enquanto revocação destaca erros do tipo 2. A pontuação F1 indica o quão equilibrado o modelo está em relação aos erros do tipo 1 e tipo 2.
Outro métrica comumente utilizada é o ROC/AUC, sobre a qual você pode ler mais em este artigo.
Métricas em Python
O Scikit-learn fornece implementações para todas essas métricas no módulo sklearn.metrics:
from sklearn.metrics import accuracy_score, balanced_accuracy_score, precision_score, recall_score, f1_score
accuracy = accuracy_score(y_true, y_pred)
balanced_accuracy = balanced_accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)
Se desejar obter métricas como precisão, recall e F1-score de uma só vez, o sklearn oferece a função classification_report():
12345678910111213import pandas as pd import seaborn as sns from sklearn.metrics import classification_report from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Display a classification report print(classification_report(y_test, y_pred))
Suporte refere-se ao número de ocorrências reais de cada classe no conjunto de teste. Média macro calcula a média de cada métrica (precisão, recall, F1) igualmente entre todas as classes, sem considerar o desbalanceamento das classes. Média ponderada também faz a média das métricas entre todas as classes, mas atribui mais peso às classes com mais instâncias (com base em seu suporte).
Obrigado pelo seu feedback!