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.