Preparação de dados para aprendizado de máquina: um guia passo a passo
Publicados: 2023-07-07Anos atrás, quando o Spotify estava trabalhando em seu mecanismo de recomendação, ele enfrentou desafios relacionados à qualidade dos dados usados para treinar algoritmos de aprendizado de máquina (ML). Se eles não tivessem decidido voltar ao estágio de preparação de dados e investir esforços adicionais na limpeza, normalização e transformação de seus dados, é provável que nossa experiência auditiva não fosse tão agradável.
A preparação minuciosa dos dados para ML permitiu que a plataforma de streaming treinasse um poderoso mecanismo de ML que prevê com precisão as preferências de audição dos usuários e oferece recomendações de música altamente personalizadas. O Spotify evitou um erro crucial que as empresas cometem quando se trata de preparar dados para ML - não investir esforço suficiente ou pular o estágio.
Muitas empresas assumem que a alimentação de grandes volumes de dados em um mecanismo de ML é suficiente para gerar previsões precisas. A verdade é que pode resultar em vários problemas, por exemplo, viés algorítmico ou escalabilidade limitada.
O sucesso do ML depende muito dos dados. E o triste dado é: todos os conjuntos de dados são falhos. É por isso que a preparação de dados é crucial para ML. Ele ajuda a eliminar imprecisões e vieses inerentes aos dados brutos, para que o modelo de ML resultante gere previsões mais confiáveis e precisas.
Nesta postagem do blog, destacamos a importância de preparar dados para ML e compartilhamos nossa abordagem para coletar, limpar e transformar dados. Portanto, se você é novo no ML e deseja garantir que sua iniciativa seja um sucesso, continue lendo.
Como preparar dados para aprendizado de máquina
O primeiro passo para adotar o ML com sucesso é formular claramente seu problema de negócios. Isso não apenas garante que o modelo de ML que você está construindo esteja alinhado com suas necessidades de negócios, mas também permite que você economize tempo e dinheiro na preparação de dados que podem não ser relevantes.
Além disso, uma declaração clara do problema torna o modelo de ML explicável (o que significa que os usuários entendem como ele toma decisões). É especialmente importante em setores como saúde e finanças, onde o ML tem um grande impacto na vida das pessoas.
Com o problema de negócios resolvido, é hora de iniciar o trabalho de dados.
No geral, o processo de preparação de dados para ML pode ser dividido nas seguintes etapas.
- Coleção de dados
- Limpeza de dados
- transformação de dados
- divisão de dados
Vamos dar uma olhada em cada um.
Coleção de dados
A preparação de dados para ML começa com a coleta de dados. Durante o estágio de coleta de dados, você coleta dados para treinar e ajustar o futuro modelo de ML. Ao fazer isso, tenha em mente o tipo, volume e qualidade dos dados: esses fatores determinarão a melhor estratégia de preparação de dados.
O aprendizado de máquina usa três tipos de dados: estruturados, não estruturados e semiestruturados.
- Os dados estruturados são organizados de uma maneira específica, geralmente em formato de tabela ou planilha. Os exemplos de dados estruturados abrangem a gama de informações coletadas de bancos de dados ou sistemas transacionais.
- Dados não estruturados incluem imagens, vídeos, gravações de áudio e outras informações que não seguem modelos de dados convencionais.
- Os dados semiestruturados não seguem um formato de modelo de dados tabular. Ainda assim, não é totalmente desorganizado, pois contém alguns elementos estruturais, como tags ou metadados que facilitam a interpretação. Os exemplos incluem dados nos formatos XML ou JSON.
A estrutura dos dados determina a abordagem ideal para prepará-los para ML. Dados estruturados, por exemplo, podem ser facilmente organizados em tabelas e limpos por meio de desduplicação, preenchimento de valores ausentes ou padronização de formatos de dados. Por outro lado, extrair recursos relevantes de dados não estruturados requer técnicas mais complexas, como processamento de linguagem natural ou visão computacional.
A abordagem ideal para a preparação de dados para ML também é afetada pelo volume de dados de treinamento. Um grande conjunto de dados pode exigir amostragem, que envolve a seleção de um subconjunto de dados para treinar um modelo devido a limitações computacionais. Um menor, por sua vez, pode exigir que os cientistas de dados tomem medidas adicionais para gerar mais dados com base nos pontos de dados existentes (mais sobre isso abaixo).
A qualidade dos dados coletados também é crucial. O uso de dados imprecisos ou tendenciosos pode afetar a produção de ML, o que pode ter consequências significativas, especialmente em áreas como finanças, saúde e justiça criminal. Existem técnicas que permitem que os dados sejam corrigidos quanto a erros e vieses. No entanto, eles podem não funcionar em um conjunto de dados inerentemente distorcido. Depois de saber o que torna os dados “bons”, você deve decidir como coletá-los e onde encontrá-los. Existem várias estratégias para isso.
- Coletando dados de fontes internas: se você tiver informações armazenadas em seu data warehouse corporativo, poderá usá-las para treinar algoritmos de ML. Esses dados podem incluir transações de vendas, interações com clientes, dados de plataformas de mídia social e dados de outras fontes.
- Coleta de dados de fontes externas: você pode recorrer a fontes de dados publicamente disponíveis, como portais de dados do governo, repositórios de dados acadêmicos e comunidades de compartilhamento de dados, como Kaggle, UCI Machine Learning Repository ou Google Dataset Search.
- Web scraping: esta técnica envolve a extração de dados de sites usando ferramentas automatizadas. Essa abordagem pode ser útil para coletar dados de fontes que não são acessíveis por outros meios, como análises de produtos, artigos de notícias e mídias sociais.
- Pesquisas: essa abordagem pode ser usada para coletar pontos de dados específicos de um público-alvo específico. É especialmente útil para coletar informações sobre preferências ou comportamento do usuário.
Às vezes, porém, essas estratégias não produzem dados suficientes. Quando isso ocorre, você pode compensar a falta de pontos de dados com essas técnicas.
- Aumento de dados: Isso permite que você gere mais dados de amostras existentes, transformando-os de várias maneiras, por exemplo, girando, traduzindo ou dimensionando.
- Aprendizado ativo: permite selecionar a amostra de dados mais informativa para rotulagem por um especialista humano.
- Aprendizagem por transferência: envolve o uso de algoritmos de ML pré-treinados aplicados para resolver uma tarefa relacionada como ponto de partida para treinar um novo modelo de ML, seguido pelo ajuste fino do novo modelo em novos dados.
- Compartilhamento colaborativo de dados: envolve trabalhar com outros pesquisadores e organizações para coletar e compartilhar dados para um objetivo comum.
Limpeza de dados
A próxima etapa para preparar dados para ML é limpá-los. A limpeza de dados envolve encontrar e corrigir erros, inconsistências e valores ausentes. Existem várias abordagens para a limpeza de dados.
Lidando com dados ausentes
Valores ausentes são um problema comum em ML. Ele pode ser tratado por imputação (pense: preencher valores ausentes com dados previstos ou estimados), interpolação (derivar valores ausentes de pontos de dados circundantes) ou exclusão (simplesmente remover linhas ou colunas com valores ausentes de um conjunto de dados).
Manipulando valores discrepantes
Outliers são pontos de dados que diferem significativamente do restante do conjunto de dados. Outliers podem ocorrer devido a erros de medição, erros de entrada de dados ou simplesmente porque representam observações incomuns ou extremas. Em um conjunto de dados de salários de funcionários, por exemplo, um outlier pode ser um funcionário que ganha significativamente mais ou menos do que outros. Outliers podem ser tratados removendo-os, transformando-os para reduzir seu impacto, winsorizing (pense: substituindo valores extremos pelos valores mais próximos que estão dentro do intervalo normal de distribuição) ou tratando-os como uma classe separada de dados.
Removendo Duplicatas
Outra etapa no processo de preparação de dados para ML é a remoção de duplicatas. As duplicatas não apenas distorcem as previsões de ML, mas também desperdiçam espaço de armazenamento e aumentam o tempo de processamento, especialmente em grandes conjuntos de dados. Para remover duplicatas, os cientistas de dados recorrem a uma variedade de técnicas de identificação de duplicatas (por exemplo, correspondência exata, correspondência difusa, hash ou vinculação de registros). Uma vez identificados, eles podem ser descartados ou mesclados. No entanto, em conjuntos de dados não balanceados, as duplicatas podem, de fato, ser bem-vindas para alcançar a distribuição normal.
Tratamento de dados irrelevantes
Dados irrelevantes referem-se aos dados que não são úteis ou aplicáveis para resolver um problema. O tratamento de dados irrelevantes pode ajudar a reduzir o ruído e melhorar a precisão da previsão. Para identificar dados irrelevantes, as equipes de dados podem recorrer a técnicas como análise de componentes principais, análise de correlação ou simplesmente confiar em seu conhecimento de domínio. Uma vez identificados, esses pontos de dados são removidos do conjunto de dados relevante.
Tratamento de dados incorretos
A preparação de dados para machine learning também deve incluir o tratamento de dados incorretos e incorretos. As técnicas comuns para lidar com esses dados incluem a transformação de dados (alterar os dados para que atendam aos critérios definidos) ou remover completamente os pontos de dados incorretos.
Manipulando dados desequilibrados
Um conjunto de dados desequilibrado é um conjunto de dados no qual o número de pontos de dados em uma classe é significativamente menor do que o número de pontos de dados em outra classe. Isso pode resultar em um modelo tendencioso que prioriza a classe majoritária, ignorando a classe minoritária. Para lidar com o problema, as equipes de dados podem recorrer a técnicas como reamostragem (seja superamostrar a classe minoritária ou subamostrar a classe majoritária para equilibrar a distribuição de dados), geração de dados sintéticos (gerar pontos de dados adicionais para a classe minoritária sinteticamente), custo -aprendizagem sensível (atribuindo maior peso à classe minoritária durante o treinamento) e aprendizado conjunto (combinando vários modelos treinados em diferentes subconjuntos de dados usando diferentes algoritmos).
Essas atividades ajudam a garantir que os dados de treinamento sejam precisos, completos e consistentes. Embora seja uma grande conquista, ainda não é suficiente produzir um modelo de ML confiável. Portanto, a próxima etapa na jornada de preparação de dados para ML envolve garantir que os pontos de dados no conjunto de dados de treinamento estejam em conformidade com regras e padrões específicos. E esse estágio no processo de gerenciamento de dados é chamado de transformação de dados.
Transformação de Dados
Durante o estágio de transformação de dados, você converte dados brutos em um formato adequado para algoritmos de ML. Isso, por sua vez, garante maior desempenho e precisão algorítmica.
Nossos especialistas na preparação de dados para ML citam as seguintes técnicas comuns de transformação de dados.
Dimensionamento
Em um conjunto de dados, diferentes recursos podem usar diferentes unidades de medida. Por exemplo, um conjunto de dados imobiliários pode incluir informações sobre o número de quartos em cada propriedade (variando de um a dez) e o preço (variando de $ 50.000 a $ 1.000.000). Sem dimensionamento, é um desafio equilibrar a importância de ambos os recursos. O algoritmo pode dar muita importância ao recurso com valores maiores - neste caso, o preço - e não o suficiente para o recurso com valores aparentemente menores. O dimensionamento ajuda a resolver esse problema transformando todos os pontos de dados de uma maneira que os ajuste a um intervalo especificado, geralmente entre 0 e 1. Agora você pode comparar diferentes variáveis igualmente.
Normalização
Outra técnica usada na preparação de dados para ML é a normalização. É semelhante à escala. No entanto, enquanto o dimensionamento altera o intervalo de um conjunto de dados, a normalização altera sua distribuição.
Codificação
Os dados categóricos têm um número limitado de valores, por exemplo, cores, modelos de carros ou espécies de animais. Como os algoritmos de ML geralmente funcionam com dados numéricos, os dados categóricos devem ser codificados para serem usados como entrada. A codificação, portanto, significa converter dados categóricos em um formato numérico. Existem várias técnicas de codificação para escolher, incluindo codificação one-hot, codificação ordinal e codificação de rótulo.
discretização
A discretização é uma abordagem para preparar dados para ML que permite transformar variáveis contínuas, como tempo, temperatura ou peso, em variáveis discretas. Considere um conjunto de dados que contém informações sobre a altura das pessoas. A altura de cada pessoa pode ser medida como uma variável contínua em pés ou centímetros. No entanto, para determinados algoritmos de ML, pode ser necessário discretizar esses dados em categorias, como “curto”, “médio” e “alto”. Isso é exatamente o que a discretização faz. Isso ajuda a simplificar o conjunto de dados de treinamento e reduzir a complexidade do problema. Abordagens comuns para discretização abrangem discretização baseada em cluster e baseada em árvore de decisão.
Redução de dimensionalidade
A redução de dimensionalidade significa limitar o número de recursos ou variáveis em um conjunto de dados e preservar apenas as informações relevantes para resolver um problema. Considere, por exemplo, um conjunto de dados contendo informações sobre o histórico de compras dos clientes. Ele apresenta as datas de compra, os itens comprados, os preços dos itens e o local onde as compras ocorreram. Reduzindo a dimensionalidade desse conjunto de dados, omitimos tudo menos os recursos mais importantes, digamos, um item comprado e seu preço. A redução de dimensionalidade pode ser feita com uma variedade de técnicas, algumas delas sendo análise de componentes principais, análise discriminante linear e incorporação de vizinhança estocástica com distribuição t.
Transformação de registro
Outra forma de preparar dados para ML, a transformação de log, refere-se à aplicação de uma função logarítmica aos valores de uma variável em um conjunto de dados. Geralmente é usado quando os dados de treinamento são altamente distorcidos ou possuem uma grande variedade de valores. A aplicação de uma função logarítmica pode ajudar a tornar a distribuição de dados mais simétrica.
Falando em transformação de dados, também devemos mencionar a engenharia de recursos. Embora seja uma forma de transformação de dados, a engenharia de recursos é mais do que uma técnica ou uma etapa no processo de preparação de dados para ML. Significa selecionar, transformar e criar recursos em um conjunto de dados. A engenharia de recursos envolve uma combinação de técnicas estatísticas, matemáticas e computacionais, incluindo o uso de modelos de ML, para criar recursos que capturam as informações mais relevantes nos dados.
Geralmente é um processo iterativo que requer testar e avaliar diferentes técnicas e combinações de recursos para encontrar a melhor abordagem para resolver um problema.
Divisão de Dados
A próxima etapa no processo de preparação de dados para ML envolve a divisão de todos os dados coletados em subconjuntos — um processo conhecido como divisão de dados. Normalmente, os dados são divididos em um conjunto de dados de treinamento, validação e teste.
- Um conjunto de dados de treinamento é usado para realmente ensinar um modelo de ML a reconhecer padrões e relacionamentos entre variáveis de entrada e de destino. Esse conjunto de dados geralmente é o maior.
- Um conjunto de dados de validação é um subconjunto de dados usado para avaliar o desempenho de um modelo durante o treinamento. Ele ajuda a ajustar o modelo ajustando hiperparâmetros (pense: parâmetros do processo de treinamento que são definidos manualmente antes do treinamento, como a taxa de aprendizado, força de regularização ou o número de camadas ocultas). O conjunto de dados de validação também ajuda a evitar o ajuste excessivo aos dados de treinamento.
- Um conjunto de dados de teste é um subconjunto de dados usado para avaliar o desempenho de um modelo treinado. Seu objetivo é avaliar a precisão do modelo em dados novos e não vistos. O conjunto de dados de teste é usado apenas uma vez — depois que o modelo foi treinado e ajustado nos conjuntos de dados de treinamento e validação.
Ao dividir os dados, podemos avaliar o desempenho de um modelo de ML em dados que nunca viu antes. Sem divisão, é provável que o modelo tenha um desempenho ruim em novos dados. Isso pode acontecer porque o modelo pode ter apenas memorizado os pontos de dados em vez de aprender padrões e generalizá-los para novos dados.
Existem várias abordagens para a divisão de dados, e a escolha da ideal depende do problema a ser resolvido e das propriedades do conjunto de dados. Nossos especialistas em preparação de dados para ML dizem que muitas vezes requer alguma experimentação da equipe de dados para determinar a estratégia de divisão mais eficaz. A seguir estão as estratégias mais comuns.
- Amostragem aleatória: Com esta estratégia, os dados são divididos aleatoriamente. Essa abordagem geralmente é aplicada a grandes conjuntos de dados representativos da população que está sendo modelada. Como alternativa, é usado quando não há relacionamentos conhecidos em um conjunto de dados, o que pode exigir uma abordagem mais especializada.
- Amostragem estratificada: nesta estratégia, os dados são divididos em subconjuntos com base em rótulos de classe ou outras características, seguidos de amostragem aleatória desses subconjuntos. Essa estratégia é aplicada a conjuntos de dados desbalanceados com o número de valores em uma classe excedendo significativamente o número de valores em outras. Nesse caso, a amostragem estratificada ajuda a garantir que os conjuntos de dados de treinamento e teste tenham uma distribuição semelhante de valores de cada classe.
- Amostragem baseada em tempo: Esta estratégia é usada onde os dados coletados até um certo ponto no tempo formam um conjunto de dados de treinamento, enquanto os dados coletados após o ponto de ajuste são formados em um conjunto de dados de teste. Essa abordagem é usada quando os dados são coletados por um longo período de tempo, por exemplo, em conjuntos de dados financeiros ou médicos, pois permite garantir que o modelo possa fazer previsões precisas sobre dados futuros.
- Validação cruzada: com essa estratégia, os dados são divididos em vários subconjuntos ou dobras. Algumas dobras são usadas para treinar o modelo, enquanto as demais são usadas para avaliação de desempenho. O processo é repetido várias vezes, com cada dobra servindo como dados de teste pelo menos uma vez. Existem várias técnicas de validação cruzada - por exemplo, validação cruzada k-fold e validação cruzada leave-one-out. A validação cruzada geralmente fornece uma estimativa mais precisa do desempenho de um modelo do que a avaliação em um único conjunto de dados de teste.
Em uma nota final
A preparação adequada de dados para ML é essencial para o desenvolvimento de soluções de aprendizado de máquina precisas e confiáveis. Na ITRex, entendemos os desafios da preparação de dados e a importância de ter um conjunto de dados de qualidade para um processo de ML bem-sucedido.
Se pretende maximizar o potencial dos seus dados através do ML, contacte a equipa ITRex. Nossos especialistas fornecerão assistência na coleta, limpeza e transformação de seus dados.
Este artigo foi originalmente publicado no site itrex.