Skip to Content

O que é pré-processamento de dados para aprendizado de máquina?

O pré-processamento de dados para aprendizado de máquina (ML ) refere-se à preparação e transformação de dados brutos em um formato adequado para treinar modelos de ML. É uma etapa essencial em um fluxo de ML (ou AI) porque afeta diretamente o desempenho e a precisão dos modelos.

O pré-processamento de dados envolve várias técnicas, como limpar os dados para lidar com valores ausentes, remover valores discrepantes, dimensionar recursos, codificar variáveis categóricas e dividir os dados em conjuntos de treinamento e teste. Essas técnicas são essenciais para garantir que os dados estejam em um formato uniforme e utilizável para os algoritmos de ML.

Este artigo aborda tudo o que você precisa saber sobre o pré-processamento de dados para aprendizado de máquina, incluindo o que é, seus benefícios, etapas e exemplos. 

O que é pré-processamento de dados? 

O pré-processamento de dados é a transformação de dados brutos em um formato mais adequado e significativo para análise e treinamento de modelos. O pré-processamento de dados desempenha um papel vital para melhorar a qualidade e a eficiência dos modelos de ML, abordando problemas como valores ausentes, ruído, inconsistências e valores discrepantes nos dados.

Benefícios do pré-processamento de dados para aprendizado de máquina

O pré-processamento de dados para aprendizado de máquina tem muitos benefícios, e esses benefícios são os mesmos das etapas envolvidas no pré-processamento de dados. Vamos dar uma olhada. 

1. Limpeza de dados

A limpeza de dados é uma parte essencial do fluxo de pré-processamento de dados no aprendizado de máquina. Ela envolve identificar e corrigir erros ou inconsistências no conjunto de dados para garantir que os dados sejam de alta qualidade e adequados para análise ou treinamento de modelo. 

A limpeza de dados normalmente inclui:

Como lidar com valores ausentes

Valores ausentes são um problema comum em conjuntos de dados do mundo real e podem afetar negativamente o desempenho dos modelos de ML. Para identificar e lidar com valores ausentes:

  • Use estatísticas descritivas ou visualizações para identificar colunas/recursos com valores ausentes. Os indicadores comuns de valores ausentes incluem valores NaN (Não é um número) ou NULL.
  • Determine o impacto de valores ausentes em sua análise ou modelo. Considere a porcentagem de valores ausentes em cada coluna e sua importância para o conjunto de dados geral.
  • Se a porcentagem de valores ausentes for pequena e essas linhas ou colunas não forem essenciais, você pode optar por removê-los usando métodos como dropna() em pandas ou funções semelhantes em outras ferramentas.
  • Para variáveis numéricas, você pode imputar valores ausentes usando técnicas como média, mediana ou método de imputação de modo (fillna() em pandas). Para recursos categóricos, você pode imputar com a categoria mais frequente.

Você também pode considerar métodos de imputação mais avançados, como imputação de regressão, imputação de vizinhos mais próximos de k ou usar modelos de ML para prever valores ausentes com base em outros recursos.

Como lidar com valores atípicos

Discrepantes são pontos de dados que diferem significativamente de outras observações no conjunto de dados e podem distorcer a análise estatística ou os modelos de aprendizado de máquina. 

Para detectar e lidar com valores discrepantes:

  • Use gráficos de caixa, histogramas ou gráficos de dispersão para visualizar a distribuição de recursos numéricos e identificar possíveis valores discrepantes visualmente.
  • Calcule estatísticas resumidas, como média, desvio padrão, quartis e intervalo interquartil (IQR, Interquartile Range). Os valores atípicos são frequentemente definidos como pontos de dados que ficam abaixo do Q1 - 1,5 * IQR ou acima do Q3 + 1,5 * IQR.
  • Em alguns casos, a remoção de valores atípicos pode ser apropriada, especialmente se for devido a erros ou anomalias na entrada de dados. Use técnicas de filtragem baseadas em limites estatísticos para remover valores discrepantes.
  • Aplique transformações como transformação de log, transformação de raiz quadrada ou transformação Box-Cox para tornar os dados mais normalmente distribuídos e reduzir o impacto de valores discrepantes.
  • Considere usar modelos robustos de aprendizado de máquina que sejam menos sensíveis a valores atípicos, como máquinas vetoriais de suporte (SVM, Support Vector Machine), florestas aleatórias ou métodos de conjunto.

Como lidar com duplicatas

Registros duplicados podem distorcer a análise e o treinamento de modelos ao inflar determinados padrões ou vieses. 

Para detectar e lidar com duplicatas:

  • Use funções como duplicated() em pandas para identificar linhas duplicadas com base em colunas específicas ou em toda a linha.
  • Se os registros duplicados forem redundantes e não fornecerem informações adicionais, você poderá removê-los usando a função drop_duplicates() em pandas ou métodos semelhantes em outras ferramentas.
  • Em alguns casos, duplicatas podem ocorrer devido a várias entradas, mas têm identificadores exclusivos. Certifique-se de manter identificadores exclusivos ou colunas-chave que diferenciem entre registros duplicados.

Ao seguir essas etapas e usar técnicas adequadas, você pode limpar e pré-processar com eficácia seus dados para tarefas de aprendizado de máquina, melhorando a qualidade e a confiabilidade das previsões dos seus modelos.

2. Normalização de dados

A normalização é uma técnica de pré-processamento de dados usada para dimensionar e padronizar os valores dos recursos em um conjunto de dados. O principal objetivo da normalização é colocar todos os valores de variáveis em um intervalo semelhante sem distorcer as diferenças nos intervalos de valores. Isso é importante porque muitos algoritmos de aprendizado de máquina têm melhor desempenho ou convergem mais rapidamente quando os recursos de entrada estão em uma escala semelhante e têm uma distribuição semelhante.

Os benefícios da normalização incluem:

  • Ajudar a evitar que recursos com grandes escalas dominem aqueles com menores escalas durante o treinamento do modelo. 
  • Algoritmos como descida de gradiente convergem mais rapidamente quando os recursos são normalizados, levando a tempos de treinamento mais rápidos. 
  • Redução do impacto de valores discrepantes ao colocar todos os valores dentro de um intervalo limitado. Os dados normalizados podem ser mais fáceis de interpretar e comparar entre diferentes recursos.

Técnicas de normalização

Dimensionamento mínimo e máximo 

  • Fórmula:Xnorm =Xmax −Xmin /Xmax −Xmin
  • Faixa: Transforma valores para um intervalo entre 0 e 1.

 

Exemplo:

Normalização do Z-score (Padronização):

  • Fórmula: Xstd = (X/μ
  • Faixa: Transforma valores para ter uma média de 0 e desvio padrão de 1.

 

Exemplo:

Diretrizes para aplicar a normalização

Dimensionamento mínimo e máximo: O dimensionamento mínimo e máximo é adequado para algoritmos que exigem recursos de entrada dentro de um intervalo específico, como redes neurais e máquinas de vetor de suporte. Certifique-se de que os valores discrepantes sejam tratados adequadamente, pois podem afetar a expansão.

Normalização da pontuação Z: Isso é adequado para algoritmos como cluster k-means, regressão linear e regressão logística. Ela resulta em uma distribuição centrada em torno de 0 com um desvio padrão de 1, tornando-a ideal para algoritmos que assumem dados normalmente distribuídos.

Dados esparsos: Para conjuntos de dados esparsos (onde a maioria dos valores é zero), considere usar técnicas como MaxAbsScaler ou RobustScaler para normalização.

Dados categóricos: Para recursos categóricos, considere técnicas como codificação one-hot antes da normalização para garantir expansão significativa.

É importante observar que a escolha da técnica de normalização depende das características específicas dos seus dados e dos requisitos do algoritmo de aprendizado de máquina que você planeja usar. A experimentação e a compreensão do impacto no desempenho do modelo são aspectos essenciais da aplicação eficaz da normalização.

3. Dimensionamento de recursos

O dimensionamento de recursos é uma técnica de pré-processamento de dados usada para padronizar o intervalo de variáveis ou recursos independentes de um conjunto de dados. O objetivo do dimensionamento de recursos é levar todos os recursos a uma escala ou faixa semelhante para evitar que um recurso domine sobre outros durante o treinamento ou a análise do modelo. O dimensionamento de recursos pode melhorar a velocidade de convergência dos algoritmos de otimização e evitar que certos recursos tenham influência indevida no modelo.

Função do dimensionamento de recursos no pré-processamento de dados

Os recursos de expansão garantem que os algoritmos de ML tratem todos os recursos igualmente, evitando a tendência a recursos com escalas maiores. Ele também melhora as convergências, pois muitos algoritmos de otimização (por exemplo, descida de gradiente) convergem mais rapidamente quando os recursos são dimensionados, levando a um treinamento de modelo mais rápido. Ele também pode evitar problemas de instabilidade numérica que podem surgir devido a grandes diferenças nas magnitudes dos recursos. Por fim, a expansão horizontal pode facilitar a interpretação do impacto das variáveis nas previsões do modelo.

Métodos de expansão de recursos

Além do dimensionamento mínimo e máximo descrito acima e da normalização da pontuação Z, também há:

MaxAbsScaler: Isso dimensiona cada variável pelo seu valor absoluto máximo, de modo que os valores resultantes variam entre -1 e 1. Ele é adequado para dados escassos em que a preservação de zero entradas é importante, como em sistemas de classificação ou recomendação de texto.

RobustScaler: Isso usa estatísticas que são robustas para valores discrepantes, como a faixa mediana e interquartil (IQR, Median and Interquartile Range), para dimensionar recursos. É adequado para conjuntos de dados que contêm valores atípicos ou distribuições distorcidas.

Diretrizes para aplicar a expansão de recursos

Para aplicar o dimensionamento de recursos:

  • Aplique a padronização (normalização de pontuação Z) quando os dados seguirem uma distribuição normal ou quando usarem algoritmos como regressão linear, regressão logística ou clustering k-means.
  • Aplique a normalização (escala mínima e máxima) quando precisar que os dados estejam dentro de um intervalo específico, como redes neurais ou máquinas de vetor de suporte.
  • Use o MaxAbsScaler ao lidar com dados esparsos, como dados de texto ou recursos esparsos de alta dimensão.
  • Use o RobustScaler ao lidar com conjuntos de dados que contêm valores atípicos ou recursos distribuídos de maneira não normal.

Tenha em mente que os recursos categóricos podem precisar de codificação (por exemplo, codificação one-hot) antes de aplicar o dimensionamento de recursos, especialmente se forem nominais (categorias não ordenadas).

4. Como lidar com dados categóricos

Variáveis categóricas representam grupos ou categorias e muitas vezes são de natureza não numérica, apresentando desafios durante o treinamento do modelo, incluindo:

  • Representação não numérica: As variáveis categóricas normalmente são representadas usando strings ou rótulos, que a maioria dos algoritmos de aprendizado de máquina não consegue processar diretamente. Algoritmos exigem entradas numéricas para treinamento e previsões.
  • Variáveis ordinais vs. nominais: As variáveis categóricas podem ser ordinais (com uma ordem significativa) ou nominais (sem uma ordem específica). Tratar as variáveis ordinais como nominais ou vice-versa pode levar a interpretações incorretas do modelo ou previsões tendenciosas.
  • Maldição de dimensionalidade: A codificação a quente, uma técnica comum para lidar com dados categóricos, pode levar a um aumento na dimensionalidade do conjunto de dados, especialmente com um grande número de categorias exclusivas. Isso pode afetar o desempenho do modelo e aumentar a complexidade computacional.

Técnicas para codificar variáveis categóricas

As técnicas para codificar variáveis categóricas incluem:

Codificação de rótulos: A codificação de rótulos atribui um rótulo numérico exclusivo a cada categoria em uma variável categórica. É adequado para variáveis ordinais em que há uma ordem significativa entre as categorias.

Veja um exemplo usando o aprendizado de scikit da Python:

de importação sklearn.preprocessing LabelEncoder

le = LabelEncoder()

Rótulos_codificados = le.fit_transform(['cat', 'cachorro', 'coelho', 'cachorro'])

Codificação única: A codificação one-hot cria colunas binárias para cada categoria em uma variável categórica, onde cada coluna indica a presença ou ausência dessa categoria. É adequado para variáveis nominais sem uma ordem específica entre as categorias.

Veja um exemplo usando pandas:

importar pandas como pd

df = pd.DataFrame({'category': ['A', 'B', 'C', 'A']})

one_hot_encoded = pd.get_dummies(df['category'], prefixo='category')

Codificação simulada: A codificação simulada é semelhante à codificação one-hot, mas descarta uma das colunas binárias para evitar problemas de multicolinearidade em modelos lineares. Ela é comumente usada em modelos de regressão em que uma categoria serve como categoria de referência.

Veja um exemplo usando pandas:

dummy_encoded = pd.get_dummies(df['category'], prefix='category', drop_first=True)

Diretrizes para lidar com dados categóricos

Para lidar corretamente com dados categóricos, você deve:

Entenda os tipos de variáveis: Determine se as variáveis categóricas são ordinais ou nominais para escolher a técnica de codificação apropriada.

Evite interpretações errôneas ordinais: Tenha cuidado ao usar a codificação de rótulos para variáveis nominais, pois isso pode introduzir ordinalidade não intencional nos dados.

Lide com alta cardinalidade: Para variáveis categóricas com um grande número de categorias exclusivas, considere técnicas como codificação de frequência, codificação de destino ou técnicas de redução de dimensionalidade, como PCA.

Tudo isso além do tratamento já mencionado de valores ausentes e da normalização de dados numéricos. 

5. Como lidar com dados desequilibrados

Lidar com dados desequilibrados é um desafio comum no aprendizado de máquina, especialmente em tarefas de classificação em que o número de instâncias em uma classe (classe minoritária) é significativamente menor do que nas outras classes (classes majoritárias). Os dados desequilibrados podem ter um impacto profundo no treinamento e avaliação de modelos, levando a modelos tendenciosos que favorecem a classe majoritária e têm um desempenho ruim nas classes minoritárias. 

Aqui estão alguns pontos-chave sobre dados desequilibrados e técnicas para lidar com eles:

Impacto de dados desequilibrados no desempenho do modelo

Os modelos treinados em dados desequilibrados tendem a priorizar a precisão na classe majoritária enquanto negligenciam a classe minoritária. Isso pode levar a um desempenho ruim nas previsões de classe minoritária. Além disso, métricas como precisão podem ser enganosas em conjuntos de dados desequilibrados, pois uma alta precisão pode resultar da previsão correta da classe majoritária enquanto ignora a classe minoritária. As métricas de avaliação, como precisão, recall, F1-score e área sob a curva ROC (AUC-ROC), são mais informativas para conjuntos de dados desequilibrados em comparação com a precisão isoladamente.

Técnicas para lidar com dados desequilibrados

As técnicas mais comuns para lidar com dados desequilibrados são sobreamostragem e subamostragem. A sobreamostragem envolve aumentar o número de instâncias na classe minoritária para equilibrá-la com a classe majoritária. A subamostragem envolve reduzir o número de instâncias na classe majoritária para equilibrá-la com a classe minoritária. Você também pode adotar uma abordagem híbrida combinando sobreamostragem e subamostragem.

Há também a ponderação de classes, em que você ajusta os pesos das classes durante o treinamento do modelo para penalizar erros na classe minoritária mais do que erros na classe majoritária. Isso só é útil para algoritmos que suportam a ponderação de classe, como regressão logística ou máquinas de vetor de suporte.

Diretrizes para lidar com dados desequilibrados

Para lidar com dados desequilibrados, você deve:

Entenda a distribuição de dados: Analise a distribuição de classes no seu conjunto de dados para determinar a gravidade do desequilíbrio.

Escolha a técnica apropriada: Selecione a técnica de sobreamostragem, subamostragem ou híbrida com base no tamanho do conjunto de dados, na taxa de desequilíbrio e nos recursos computacionais.

Avalie as métricas: Use métricas de avaliação adequadas, como precisão, recall, F1-score ou curva AUC-ROC, para avaliar o desempenho do modelo em ambas as classes.

Validação cruzada: Aplique técnicas em pastas de validação cruzada para evitar vazamento de dados e obter estimativas confiáveis de desempenho do modelo.

Conclusão

O pré-processamento de dados ajuda a garantir que os modelos de ML sejam treinados em dados de alta qualidade e formatados adequadamente, o que afeta diretamente o desempenho, a precisão e a capacidade de generalização do modelo. Ao abordar problemas como valores ausentes, valores discrepantes, variáveis categóricas e desequilíbrio de classe, o pré-processamento de dados permite que os modelos façam previsões mais informadas e precisas, levando a uma melhor tomada de decisão em aplicativos do mundo real.

Com o pré-processamento adequado de dados, os profissionais de ML podem aproveitar todo o potencial de seus dados e criar modelos preditivos mais precisos e confiáveis para vários aplicativos em vários domínios.

No entanto, para realmente fazer isso no mundo real, primeiro você precisa ter uma solução flexível de armazenamento de dados, como a Pure Storage, que ajude a acelerar a AI e o aprendizado de máquina e a avançar com suas iniciativas de AI corporativa.

09/2024
Seven Key Storage Considerations for Digital Pathology
Explore 7 key considerations your organization should consider when choosing data storage for digital pathology.
Whitepaper
4 páginas
ENTRE EM CONTATO
Dúvidas ou comentários?

Tem dúvidas ou comentários sobre produtos ou certificações da Pure?  Estamos aqui para ajudar.

Agende uma demonstração

Agende uma demonstração ao vivo e veja você mesmo como a Pure pode ajudar a transformar seus dados em resultados poderosos. 

Telefone: 55-11-2844-8366

Imprensa: pr@purestorage.com

 

Sede da Pure Storage

Av. Juscelino Kubitschek, 2041

Torre B, 5º andar - Vila Olímpia

São Paulo, SP

04543-011 Brasil

info@purestorage.com

FECHAR
Seu navegador não é mais compatível.

Navegadores antigos normalmente representam riscos de segurança. Para oferecer a melhor experiência possível ao usar nosso site, atualize para qualquer um destes navegadores mais atualizados.