Avaliação de Modelo
Divisão dos Dados
Após treinar uma rede neural, é fundamental avaliar o desempenho em dados não vistos. Essa avaliação permite determinar se o modelo aprendeu padrões relevantes ou apenas memorizou os exemplos de treinamento. Para isso, o conjunto de dados é dividido em duas partes:
- Conjunto de treinamento — utilizado para treinar a rede neural, ajustando seus pesos e vieses por meio do backpropagation;
- Conjunto de teste — utilizado após o treinamento para avaliar a capacidade de generalização do modelo em novos dados não vistos.
Uma divisão comum é 80% para treinamento e 20% para teste, embora essa proporção possa variar conforme o tamanho e a complexidade do conjunto de dados.
A divisão dos dados geralmente é realizada com a função train_test_split() do módulo sklearn.model_selection:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=...)
O parâmetro test_size determina a proporção de dados reservados para teste. Por exemplo, ao definir test_size=0.1, 10% dos dados serão usados para teste, enquanto 90% serão usados para treinamento.
Se o modelo apresentar bom desempenho no conjunto de treinamento, mas desempenho ruim no conjunto de teste, pode estar ocorrendo overfitting — aprendizado de padrões muito específicos dos dados de treinamento, sem generalização para novos exemplos. O objetivo é obter bom desempenho em ambos os conjuntos, garantindo que o modelo generalize adequadamente.
Após a divisão dos dados e o treinamento do modelo, o desempenho deve ser medido utilizando métricas de avaliação apropriadas, que dependem da tarefa de classificação específica.
Métricas de Classificação
Para problemas de classificação, diversas métricas principais podem ser utilizadas para avaliar as previsões do modelo:
- Acurácia;
- Precisão;
- Revocação;
- F1-score.
Como o perceptron realiza classificação binária, a criação de uma matriz de confusão auxilia na compreensão dessas métricas.
Uma matriz de confusão é uma tabela que resume o desempenho da classificação do modelo ao comparar os rótulos previstos com os rótulos reais. Ela fornece informações sobre a quantidade de previsões corretas e incorretas para cada classe (1 e 0).
Acurácia mede a proporção de amostras classificadas corretamente em relação ao total. Se um modelo classifica corretamente 90 de 100 imagens, sua acurácia é 90%.
accuracy=allcorrect=TP+TN+FP+FNTP+TNEmbora a acurácia seja útil, ela pode não fornecer uma visão completa—especialmente para conjuntos de dados desbalanceados. Por exemplo, em um conjunto onde 95% das amostras pertencem a uma classe, um modelo pode atingir 95% de acurácia apenas prevendo sempre a classe majoritária—sem realmente aprender algo útil. Nesses casos, precisão, recall ou F1-score podem ser métricas mais informativas.
Precisão é a porcentagem de casos positivos corretamente previstos em relação a todos os positivos previstos. Essa métrica é especialmente útil quando falsos positivos têm alto custo, como em detecção de spam ou fraude.
precision=predicted positivecorrect positive=TP+FPTPRecall (sensibilidade) mede quantos dos casos realmente positivos o modelo identifica corretamente. Um alto recall é essencial em cenários onde falsos negativos devem ser minimizados, como em diagnósticos médicos.
recall=all positivecorrect positive=TP+FNTPF1-score é a média harmônica de precisão e recall, fornecendo uma medida equilibrada quando tanto falsos positivos quanto falsos negativos são relevantes. Isso é útil quando o conjunto de dados é desbalanceado, ou seja, uma classe aparece significativamente mais do que a outra.
F1=precision+recall2×precision×recall1. Qual é o principal objetivo de dividir seu conjunto de dados em conjuntos de treinamento e teste?
2. Por que o F1-score pode ser preferido em relação à acurácia em um conjunto de dados desbalanceado?
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 what a confusion matrix is and how to interpret it?
How do I choose which evaluation metric to use for my classification problem?
Can you give examples of when to prioritize precision over recall, or vice versa?
Awesome!
Completion rate improved to 4
Avaliação de Modelo
Deslize para mostrar o menu
Divisão dos Dados
Após treinar uma rede neural, é fundamental avaliar o desempenho em dados não vistos. Essa avaliação permite determinar se o modelo aprendeu padrões relevantes ou apenas memorizou os exemplos de treinamento. Para isso, o conjunto de dados é dividido em duas partes:
- Conjunto de treinamento — utilizado para treinar a rede neural, ajustando seus pesos e vieses por meio do backpropagation;
- Conjunto de teste — utilizado após o treinamento para avaliar a capacidade de generalização do modelo em novos dados não vistos.
Uma divisão comum é 80% para treinamento e 20% para teste, embora essa proporção possa variar conforme o tamanho e a complexidade do conjunto de dados.
A divisão dos dados geralmente é realizada com a função train_test_split() do módulo sklearn.model_selection:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=...)
O parâmetro test_size determina a proporção de dados reservados para teste. Por exemplo, ao definir test_size=0.1, 10% dos dados serão usados para teste, enquanto 90% serão usados para treinamento.
Se o modelo apresentar bom desempenho no conjunto de treinamento, mas desempenho ruim no conjunto de teste, pode estar ocorrendo overfitting — aprendizado de padrões muito específicos dos dados de treinamento, sem generalização para novos exemplos. O objetivo é obter bom desempenho em ambos os conjuntos, garantindo que o modelo generalize adequadamente.
Após a divisão dos dados e o treinamento do modelo, o desempenho deve ser medido utilizando métricas de avaliação apropriadas, que dependem da tarefa de classificação específica.
Métricas de Classificação
Para problemas de classificação, diversas métricas principais podem ser utilizadas para avaliar as previsões do modelo:
- Acurácia;
- Precisão;
- Revocação;
- F1-score.
Como o perceptron realiza classificação binária, a criação de uma matriz de confusão auxilia na compreensão dessas métricas.
Uma matriz de confusão é uma tabela que resume o desempenho da classificação do modelo ao comparar os rótulos previstos com os rótulos reais. Ela fornece informações sobre a quantidade de previsões corretas e incorretas para cada classe (1 e 0).
Acurácia mede a proporção de amostras classificadas corretamente em relação ao total. Se um modelo classifica corretamente 90 de 100 imagens, sua acurácia é 90%.
accuracy=allcorrect=TP+TN+FP+FNTP+TNEmbora a acurácia seja útil, ela pode não fornecer uma visão completa—especialmente para conjuntos de dados desbalanceados. Por exemplo, em um conjunto onde 95% das amostras pertencem a uma classe, um modelo pode atingir 95% de acurácia apenas prevendo sempre a classe majoritária—sem realmente aprender algo útil. Nesses casos, precisão, recall ou F1-score podem ser métricas mais informativas.
Precisão é a porcentagem de casos positivos corretamente previstos em relação a todos os positivos previstos. Essa métrica é especialmente útil quando falsos positivos têm alto custo, como em detecção de spam ou fraude.
precision=predicted positivecorrect positive=TP+FPTPRecall (sensibilidade) mede quantos dos casos realmente positivos o modelo identifica corretamente. Um alto recall é essencial em cenários onde falsos negativos devem ser minimizados, como em diagnósticos médicos.
recall=all positivecorrect positive=TP+FNTPF1-score é a média harmônica de precisão e recall, fornecendo uma medida equilibrada quando tanto falsos positivos quanto falsos negativos são relevantes. Isso é útil quando o conjunto de dados é desbalanceado, ou seja, uma classe aparece significativamente mais do que a outra.
F1=precision+recall2×precision×recall1. Qual é o principal objetivo de dividir seu conjunto de dados em conjuntos de treinamento e teste?
2. Por que o F1-score pode ser preferido em relação à acurácia em um conjunto de dados desbalanceado?
Obrigado pelo seu feedback!