Unidade 2 / 11

Pipeline de dados: coleta, limpeza, marcação e controle de versão

Ganhos:

  • Capacidade de configurar um pipeline de dados (coleta, validação, limpeza, transformação, divisão, controle de versão) e colocar a validação do esquema no início do pipeline
  • Capacidade de tomar decisões de valor faltante e rotulagem com base no significado e divisão do campo para evitar vazamento de dados (grupo e temporal)
  • Capacidade de criar um banco de dados reproduzível, corrigindo a versão dos dados e a semente aleatória

O verdadeiro poder de todo sistema de aprendizado de máquina está nos dados, não no modelo. Engenheiros experientes sabem: “entra lixo, sai lixo” – mesmo o modelo mais avançado alimentado com dados ruins produzirá resultados ruins. Nesta unidade, estabelecemos o data pipeline (pipeline de dados: a cadeia de etapas que prepara os dados brutos para o treinamento do modelo) de ponta a ponta e aprendemos em qual etapa dessa linha podemos usar inteligência artificial com segurança.

Etapas da linha de dados

Uma linha de dados normalmente passa por estas paradas:

  1. Coleta (ingestão): Extração de dados de fontes (banco de dados, API, arquivos de log, fluxos de eventos).
  2. Validação: verificar se os dados estão em conformidade com o esquema, tipos e intervalos esperados.
  3. Limpeza: Tratamento de valores ausentes, registros duplicados, valores discrepantes e inconsistências.
  4. Transformação: Transformar dados brutos em atributos — como converter uma variável categórica em um número, produzindo um “dia da semana” a partir de uma data.
  5. Divisão: Separação em conjuntos de treinamento, validação e teste.
  6. Versionamento: Registrando qual modelo foi treinado com quais dados.

A inteligência artificial economiza tempo ao gerar rascunhos de código e ideias, especialmente nas etapas 2, 3 e 4. Mas decisões como qual registro descartar, qual valor faltante preencher e como, pertencem ao engenheiro que conhece os dados; porque a limpeza inadequada pode injetar um viés oculto no modelo.

Verificação de dados: defesa antecipada da linha

Os erros mais caros não começam na produção, mas onde a etapa de verificação é ignorada. A validação do esquema verifica automaticamente se cada lote de dados recebido está em conformidade com a estrutura esperada. Por exemplo, a coluna idade está entre 0-120, o campo de email está vazio, o número de colunas foi alterado?

Dica: Coloque a verificação no início da linha. Quanto mais cedo os dados corrompidos forem detectados, mais barato será corrigi-los. Um erro de esquema detectado na produção é muitas vezes mais caro do que um detectado na fase de treinamento.

Escreva um esquema de validação com pandera (ou Grandes Esperanças) para o esquema de dados a seguir. Colunas e regras: - user_id: inteiro, não pode ser nulo, único - idade: inteiro, não pode ser de 0 a 120 - signup_date: data, não pode ser no futuro - país: categórico, do conjunto {TR, DE, US, UK} - saldo: decimal, não pode ser negativo Produza uma mensagem de erro significativa para cada violação de regra. Mostre o teste com um exemplo de linha quebrada no final do código.

Limpeza: quem decide é o humano

Valores ausentes são uma realidade em todos os conjuntos de dados. Maneiras de lidar:

  • Exclusão: Descartar uma linha/coluna com uma taxa de falta muito alta. Mas existe o risco de perda e parcialidade de informações.
  • Imputação: Imputação com média, mediana, valor mais frequente ou previsão baseada em modelo.
  • Sinalizador: Armazenar informações “faltadas” em uma coluna de sinalizador separada – às vezes, a própria falta é o sinal.

Qual deles está correto depende do problema. Num conjunto de dados médicos, a informação “valor sanguíneo não medido” deve ser preservada em vez de eliminada; Porque até a recusa do médico em fazer medições é um sinal. A IA pode fornecer opções e códigos; Você escolhe qual se adapta à realidade do campo.

Alerta fraco / Alerta forte

Prompt fraco: "Preencha os valores ausentes."

Prompt forte: "Há valores ausentes nas seguintes colunas: renda (12% ausentes, distribuição distorcida à direita), last_login (30% ausentes). Sugira preencher a renda com mediana, mas explique por que mediana e não significa. Para last_login, suponha que o valor ausente pode ser significativo (o usuário pode nunca ter feito login); considere gerar um sinalizador never_logged_in em vez de exclusão. Anote o viés que qualquer abordagem adicionaria ao modelo. "

Diferença: um prompt forte fornece informações de distribuição e significado da área; a inteligência artificial produz suporte à decisão em vez de preenchimento mecânico.

Rotulagem: a qualidade é medida

Na aprendizagem supervisionada (aprendizado em que são dados exemplos com as respostas corretas), o que o modelo aprende são rótulos (rótulos: a resposta correta para cada exemplo). A qualidade do rótulo estabelece um limite – se as pessoas rotularem de forma inconsistente, o modelo aprende de forma inconsistente.

O acordo entre anotadores mede a taxa com que diferentes pessoas atribuem o mesmo rótulo à mesma amostra; É expresso por um coeficiente como o Kappa de Cohen. A baixa conformidade indica que a tarefa não é clara ou a instrução é fraca.

A inteligência artificial auxilia na rotulagem de duas maneiras: (1) redigindo a diretriz de anotação, (2) pré-rotulagem e fazendo com que apenas o ser humano a corrija. Mas a pré-rotulagem com LLM tem uma armadilha: o erro sistemático do modelo pode vazar para todo o conjunto de etiquetas. É por isso que os humanos sempre verificam alguns dos rótulos do LLM.

Atenção: Não considere os rótulos produzidos pela LLM como “verdades básicas”. Verifique uma amostra com um humano e meça o ajuste LLM-humano. Se a conformidade for baixa, a pré-rotulagem causará mais danos do que benefícios.

Partição de dados: evite vazamentos

O erro mais perigoso ao dividir dados em treinamento/validação/teste é o vazamento de dados: a mistura de informações de teste com treinamento. Exemplos:

  • Os registros do mesmo usuário se enquadram tanto no treinamento quanto no teste (vazamento de grupo).
  • Utilizar o futuro em treinamento e o passado em testes em séries temporais (vazamento temporal).
  • Calcular parâmetros de escala (normalização) de todos os dados e depois dividir.

A divisão temporal é essencial para problemas que envolvem tempo: treinar com o passado, testar no futuro. A divisão aleatória oferece um benefício "futuro" que nunca acontecerá na produção e aumenta as métricas.

Versionamento e reprodutibilidade de dados

“Com quais dados treinamos este modelo?” Ser capaz de responder à pergunta meses depois é a marca registrada da engenharia séria de ML. O versionamento de dados armazena cada instantâneo de dados com um ID (hash ou tag de versão). Ferramentas como dados de versão DVC (Data Version Control) como código.

Para reproduzir o resultado de um modelo, três coisas devem ser corrigidas: a versão dos dados, a versão do código e a semente aleatória. Não é possível dizer “consegui o mesmo resultado” sem este trio. Aprofundaremos a Reprodutibilidade na unidade 11; mas consertar a semente no pipeline de dados começa aqui.

três mini cases

Caso 1 – A validação do esquema do dia foi salva. Quando uma equipe converteu um campo de preço do sistema upstream de centavos para liras, todos os preços caíram 100 vezes. A validação do esquema rejeitou o lote como “preço fora do intervalo” e o modelo não foi treinado com dados corrompidos. Sem verificação, o erro só seria percebido na produção, com previsões incorretas.

Caso 2 – Viés de preenchimento incorreto. Em um modelo de crédito, os valores de renda faltantes foram preenchidos com a média. Mas os rendimentos em falta encontravam-se predominantemente no grupo de baixos rendimentos; a média “enriqueceu” artificialmente esse grupo, e o modelo ofereceu-lhes um limite injustamente alto. Corrigido o problema com sinalizador mediana + falta.

Caso 3 - Vazamento temporal. Um modelo de previsão de demanda parecia ótimo no conjunto de testes (95% de precisão), mas travou na produção. Porquê: devido à divisão aleatória, o modelo viu o futuro. A mudança para o binning temporal reduziu a precisão do teste para 78% – mas esse foi o desempenho real e o manteve em produção.

Modelos copiáveis

Divida o seguinte conjunto de dados em três conjuntos: treinamento/validação/teste.Constraint: Esta é uma série temporal; Use divisão TEMPORAL (treine no passado, teste no futuro). Evite vazamento de lote: tenha o mesmo `customer_id` apenas em um cluster. Calcule os parâmetros de escala SOMENTE do conjunto de treinamento e aplique-os a todos. Imprima quantas linhas restam no código em cada etapa e adicione uma afirmação que verifica se não há vazamentos.

Escreva um rascunho de diretriz de anotação para esta tarefa de rotulagem. Tarefa: [por exemplo, Rotule a avaliação do cliente como positiva / negativa / neutra] Esclareça casos limítrofes: sarcasmo, emoção mista, como rotular a avaliação não relacionada ao produto? Dê 5 exemplos e 3 casos extremos difíceis que aumentarão a consistência entre os etiquetadores.

Produza uma lista de verificação de reprodutibilidade para este pipeline de dados: - Como a versão dos dados deve ser corrigida? - Quais sementes de aleatoriedade devem ser definidas e onde? - Quais metadados (hash de dados, contagem de linhas, data) devem ser registrados? Minha base de código: [idioma/biblioteca]

Verifique este código de limpeza para vazamento de dados. Observe especificamente isto: os parâmetros de escala/codificação são calculados ANTES da divisão? Alguma estatística é calculada a partir de todos os dados ou apenas do treinamento? Código: [código]

Tabela de decisão: estratégia de valor ausente

Estado

Abordagem recomendada

Por que

Distribuição numérica e distorcida

preencha com mediana

A média é afetada por outliers

Numérico, simétrico

preencher com média

Protege informações

A deficiência pode ser significativa

Coluna sinalizadora + preenchimento

A falta é um sinal

Taxa de falta > 60%

Coluna Avaliar/descartar

O barulho é demais

Categórico

Categoria "Desconhecida"

Não cria maioria artificial

Erros comuns

  • Ignorando a verificação. Sem controle de esquema, os dados corrompidos entram silenciosamente.
  • Dimensionamento antes da divisão. Ele vaza estatísticas de testes para a educação.
  • Usando divisão aleatória em séries temporais. Produz métricas altas falsas.
  • Confiar cegamente nos rótulos LLM. O erro sistemático se espalha pelos dados.
  • Não salvando a versão dos dados. Você não pode reproduzir o resultado.
  • Enchimento mecânico com média. Ignora o significado do campo e adiciona preconceito.

Em resumo

O pipeline de dados é a base do sistema de ML e merece mais esforço do que o modelo. Coloque a verificação no topo; tomar decisões de limpeza e rotulagem com conhecimento do domínio; evitar vazamentos (grupo e temporais) no compartimento; corrija a versão dos dados e a semente. A IA gera código e ideias nesta linha, mas cabe a você decidir quais dados processar e como – porque cada decisão errada aqui passa para o modelo como uma falha oculta.

Tarefa de aplicativo

Escreva um esquema de validação (pandera/Grandes Esperanças) em seu próprio conjunto de dados e adicione deliberadamente uma linha incorreta e mostre que ela foi detectada. Em seguida, divida os dados temporalmente ou em lote, calcule os parâmetros de escalonamento apenas do treinamento e verifique se não há vazamento com uma afirmação. Grave a versão dos dados e a contagem de linhas em um arquivo de metadados.

lista de verificação

  • [] A validação do esquema é executada no topo da linha.
  • [ ] Escolhi a estratégia de valor faltante com base no significado do campo, não o preenchi mecanicamente.
  • [ ] Medi a qualidade do rótulo (conformidade); Eu verifiquei as tags LLM por humanos.
  • [] Evitei vazamento de grupo e temporal no painel.
  • [] Escala/codificação calculada apenas a partir do conjunto de treinamento.
  • [ ] Versão dos dados, número de linhas e sementes registradas.