Classificação em Machine Learning¶
Nesta aula, vamos aprender a treinar modelos de machine learning para problemas de classificação, passando por casos binários, múltiplas classes e múltiplos rótulos. Também vamos entender como selecionar e interpretar as métricas mais adequadas, analisando a matriz de confusão e os níveis de confiança das previsões.
Atividades Práticas¶
As seguintes atividades foram preparadas para reforçar os conceitos abordados:
- Lab 1: Flores Iris
Uma introdução aos conceitos básicos de classificação, utilizando o famoso dataset Iris para prever a espécie de uma flor. - Lab 2: Classificação digitos
Uma exploração mais aprofundada, com foco em problemas multiclasses. O objetivo é criar um modelo para identificar dígitos manuscritos (de 0 a 9) a partir de imagens. - Lab 3: classificação de renda
Um desafio de classificação binária, onde treinamos um modelo para prever se a renda de uma pessoa é superior ou inferior a 50 mil dólares por ano, com base em suas características demográficas.
Datasets¶
Os laboratórios utilizam os seguintes conjuntos de dados: - renda: Dataset de características demográficas, utilizado no Lab 3 para o problema de classificação de renda.
O que é Classificação?¶
A classificação em Machine Learning é uma tarefa em que o objetivo do modelo é prever a qual categoria ou classe um determinado exemplo pertence, a partir de suas características (também chamadas de features).
Pense nela como um processo de tomada de decisão automatizada: o modelo analisa padrões nos dados de treinamento e aprende regras internas que o ajudam a classificar novos exemplos corretamente.
Tipos de Problemas de Classificação¶
-
Classificação binária – Quando existem apenas duas classes possíveis.
Exemplo: detectar se um e-mail é “spam” ou “não spam”. -
Classificação multiclasses – Quando há mais de duas classes e cada exemplo pertence a apenas uma delas.
Exemplo: identificar o gênero de um filme como “comédia”, “drama” ou “ação”.
A classificação pode ser aplicada em diversas áreas, como:
- Saúde (diagnóstico de doenças)
- Indústria (detecção de falhas)
- Finanças (análise de risco)
- Reconhecimento de imagens
- Processamento de linguagem natural
Como Funciona o Treinamento¶
No aprendizado supervisionado de um modelo de classificação, trabalhamos com dois conjuntos de dados:
- Conjunto de Treinamento: É o conjunto de dados rotulados (com as respostas corretas) que usamos para ensinar o modelo a reconhecer padrões. O modelo "aprende" a mapear as características de entrada para suas respectivas classes de saída.
--Conjunto de Teste: É um conjunto de dados completamente novo, não utilizado durante o treinamento. Ele serve para avaliar se o modelo aprendeu bem e consegue generalizar para dados que ele nunca viu antes, simulando o uso no mundo re
Principais algoritimos de classificação¶
Existem diferentes tipos de algoritimos para classificação, entre os mais usados, temos:
- K-Nearest Neighbors (KNN) → Baseado em proximidade no espaço das features.
- Árvores de Decisão e Random Forests → Divisão hierárquica de dados com regras.
- Naive Bayes → Baseado em probabilidade condicional.
- Regressão Logística → Modelo estatístico para classificação binária.
- Support Vector Machines (SVM) → Cria hiperplanos separadores.
- Redes Neurais → Aprendem representações complexas.
Exemplo em Python¶
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Carregar dataset
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
data.data, data.target, test_size=0.3, random_state=42
)
# Treinar modelo
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
# Fazer previsões
y_pred = model.predict(X_test)
# Avaliar resultados
print(f"A classe predita é: {y_pred}")
Métricas de avaliação¶
Para saber se o nosso modelo é bom, precisamos avaliar o seu desempenho. A forma mais comum de fazer isso é usando métricas de avaliação, que nos ajudam a entender não apenas quantos acertos o modelo teve, mas também os tipos de erros que ele cometeu.
Matriz de Confusão¶
A matriz de confusão é uma ferramenta fundamental para visualizar o desempenho de um classificador. Ela resume os resultados do modelo em uma tabela, comparando as previsões com os valores reais. Para problemas binários, a matriz tem a seguinte estrutura:
Predição: Positivo | Predição: Negativo | |
---|---|---|
Real: Positivo | Verdadeiro Positivo (VP) | Falso Negativo (FN) |
Real: Negativo | Falso Positivo (FP) | Verdadeiro Negativo (VN) |
onde:
- Verdadeiro Positivo (VP): O modelo previu a classe positiva e a classe real era positiva. (Acerto)
- Verdadeiro Negativo (VN): O modelo previu a classe negativa e a classe real era negativa. (Acerto)
- Falso Positivo (FP): O modelo previu a classe positiva, mas a classe real era negativa. (Erro tipo I)
- Falso Negativo (FN): O modelo previu a classe negativa, mas a classe real era positiva. (Erro tipo II)
A partir da matriz de confusão, podemos calcular as métricas mais comuns:
1. Acurácia (Accuracy)¶
Mede a proporção total de previsões corretas. É a métrica mais simples, mas pode ser enganosa em datasets desbalanceados.
2. Precisão (Precision)¶
Mede a proporção de previsões positivas que foram realmente corretas. É importante quando o custo de um falso positivo é alto.
3. Revocação (Recall) / Sensibilidade (Sensitivity)¶
Mede a proporção de casos positivos reais que o modelo conseguiu identificar corretamente. É importante quando o custo de um falso negativo é alto.
4. F1-Score¶
É a média harmônica entre precisão e revocação. É útil quando queremos um equilíbrio entre as duas métricas, especialmente em datasets desbalanceados.
Exemplo em Python¶
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
# --------------------------------------------
# Supondo que o modelo já foi treinado
# e que temos:
# y_test -> classes reais (valores corretos)
# y_pred -> classes previstas pelo modelo
# --------------------------------------------
# 1. Calcular a Matriz de Confusão
# Mostra a contagem de acertos e erros para cada classe
conf_matrix = confusion_matrix(y_test, y_pred)
# 2. Gerar o Relatório de Classificação
# Inclui métricas por classe: Precisão, Revocação e F1-Score
report = classification_report(y_test, y_pred)
# 3. Calcular a Acurácia Global
# Mede a proporção de previsões corretas em relação ao total
acuracia = accuracy_score(y_test, y_pred)
# 4. Exibir os resultados
print("=== Matriz de Confusão ===")
print(conf_matrix)
print("\n=== Relatório de Classificação ===")
print(report)
print(f"Acurácia média de classificação: {acuracia:.2f}")
knn
Classificação KNN — ajuste k e explore a fronteira de decisão
Como funciona
O KNN prevê a classe de um ponto pela maioria entre seus k vizinhos mais próximos. A opção “ponderar por distância” dá mais peso aos vizinhos mais próximos. A região colorida mostra a previsão do classificador; os pontos são os dados reais. Ajuste k e o ruído para observar overfitting (k pequeno) vs underfitting (k grande).
Regressão logistica