Imagem do artigo Estratégias para Lidar com Dados Desbalanceados

29. Estratégias para Lidar com Dados Desbalanceados

Página 106 | Ouça em áudio

29. Estratégias para Lidar com Dados Desbalanceados

Em muitos problemas de aprendizado de máquina e deep learning, nos deparamos com conjuntos de dados desbalanceados. Um conjunto de dados é considerado desbalanceado quando as classes alvo estão desproporcionalmente representadas. Isso pode causar problemas significativos para o desempenho dos modelos de aprendizado, pois eles podem se tornar enviesados para a classe majoritária. Felizmente, existem várias técnicas e estratégias que podemos empregar para mitigar esse problema. Neste capítulo, vamos explorar algumas das abordagens mais eficazes para lidar com dados desbalanceados ao trabalhar com Python.

Compreendendo o Problema

Antes de mergulhar nas estratégias, é crucial entender o impacto dos dados desbalanceados. Modelos de aprendizado de máquina e deep learning são treinados para minimizar erros durante o processo de aprendizagem. Quando uma classe domina o conjunto de dados, o modelo pode simplesmente prever sempre a classe majoritária e ainda assim alcançar uma alta precisão. No entanto, isso não significa que o modelo está realizando bem na classificação das classes minoritárias, que são frequentemente as mais importantes.

Medindo o Desbalanceamento

Antes de aplicar qualquer técnica, é importante medir o grau de desbalanceamento. Isso pode ser feito simplesmente por meio da contagem de instâncias de cada classe. Em Python, podemos usar bibliotecas como Pandas para facilmente obter essa contagem:


import pandas as pd

# Carregar os dados
data = pd.read_csv('seu_dataset.csv')

# Contar as instâncias de cada classe
class_counts = data['classe_alvo'].value_counts()
print(class_counts)

Uma vez que entendemos o grau de desbalanceamento, podemos escolher a estratégia mais apropriada para lidar com o problema.

Reamostragem dos Dados

Uma das abordagens mais comuns é a reamostragem dos dados. Isso pode ser feito de duas maneiras: sobreamostragem (oversampling) da classe minoritária ou subamostragem (undersampling) da classe majoritária.

  • Sobreamostragem: A sobreamostragem envolve a duplicação de instâncias da classe minoritária ou a geração de novas instâncias sintéticas. Uma técnica popular é o SMOTE (Synthetic Minority Over-sampling Technique), que cria exemplos sintéticos a partir dos exemplos existentes da classe minoritária.
  • Subamostragem: A subamostragem, por outro lado, envolve a remoção de instâncias da classe majoritária. Isso pode ser feito de forma aleatória ou com base em certos critérios, como a remoção de instâncias que estão mais próximas da fronteira de decisão.

Em Python, a biblioteca imbalanced-learn oferece implementações prontas para essas técnicas:


from imblearn.over_sampling import SMOTE
from imblearn.under_sampling import RandomUnderSampler

# Sobreamostragem com SMOTE
smote = SMOTE()
X_resampled, y_resampled = smote.fit_resample(X, y)

# Subamostragem com RandomUnderSampler
under_sampler = RandomUnderSampler()
X_resampled, y_resampled = under_sampler.fit_resample(X, y)

Algoritmos Sensíveis ao Desbalanceamento

Alguns algoritmos de aprendizado de máquina são mais robustos a conjuntos de dados desbalanceados. Por exemplo, árvores de decisão e florestas aleatórias podem lidar melhor com desbalanceamento devido à sua estrutura de particionamento de espaço. Além disso, podemos ajustar o peso das classes durante o treinamento do modelo para torná-lo mais sensível à classe minoritária.


from sklearn.ensemble import RandomForestClassifier

# Ajustando pesos das classes
rf = RandomForestClassifier(class_weight='balanced')
rf.fit(X_train, y_train)

Mudança de Perspectiva: Avaliação de Modelos

Quando lidamos com dados desbalanceados, as métricas de avaliação tradicionais, como a acurácia, podem não ser adequadas. Métricas como a precisão, revocação (recall) e a pontuação F1 fornecem uma visão mais equilibrada do desempenho do modelo em todas as classes. A matriz de confusão também é uma ferramenta valiosa para entender o desempenho do modelo em termos de verdadeiros positivos, falsos positivos, verdadeiros negativos e falsos negativos.


from sklearn.metrics import classification_report, confusion_matrix

# Previsões do modelo
y_pred = model.predict(X_test)

# Relatório de classificação
print(classification_report(y_test, y_pred))

# Matriz de confusão
print(confusion_matrix(y_test, y_pred))

Ensemble de Modelos

Outra estratégia eficaz é a utilização de ensembles de modelos. Técnicas como bagging e boosting podem melhorar a classificação em conjuntos de dados desbalanceados. O AdaBoost, por exemplo, ajusta iterativamente os pesos das instâncias, dando mais importância aos exemplos mal classificados nas iterações anteriores.


from sklearn.ensemble import AdaBoostClassifier

# AdaBoost
ada_boost = AdaBoostClassifier(n_estimators=100)
ada_boost.fit(X_train, y_train)

Conclusão

Trabalhar com dados desbalanceados é um desafio comum em projetos de machine learning e deep learning. No entanto, com as estratégias adequadas, podemos construir modelos que são mais justos e eficazes na classificação de todas as classes. A chave é escolher a técnica apropriada para o contexto específico do problema e sempre validar o desempenho do modelo com métricas apropriadas para dados desbalanceados.

Em resumo, lidar com dados desbalanceados requer uma combinação de técnicas de reamostragem, escolha de algoritmos adequados, ajuste de hiperparâmetros, e uma avaliação cuidadosa do modelo. Ao aplicar essas estratégias, podemos garantir que nossos modelos de machine learning e deep learning realizem previsões precisas e equilibradas, independentemente do desbalanceamento dos dados.

Agora responda o exercício sobre o conteúdo:

Qual das seguintes técnicas é recomendada para lidar com conjuntos de dados desbalanceados em problemas de aprendizado de máquina e deep learning?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Interpretabilidade de Modelos de Machine Learning

Próxima página do Ebook Gratuito:

107Interpretabilidade de Modelos de Machine Learning

4 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto