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:
- Coleta (ingestão): Extração de dados de fontes (banco de dados, API, arquivos de log, fluxos de eventos).
- Validação: verificar se os dados estão em conformidade com o esquema, tipos e intervalos esperados.
- Limpeza: Tratamento de valores ausentes, registros duplicados, valores discrepantes e inconsistências.
- 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.
- Divisão: Separação em conjuntos de treinamento, validação e teste.
- 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.