Unidade 5 / 11

Engenharia de recursos: geração de variantes, codificação, dimensionamento e prevenção de vazamentos

Ganhos:

  • Capacidade de produzir recursos derivados significativos com conhecimento de domínio e codificar categorias categóricas com métodos apropriados (one-hot, rótulo, alvo)
  • Capacidade de dimensionar variáveis numéricas de acordo com o tipo de modelo (padronização, normalização) e evitar escalonamento desnecessário ou incompleto
  • Capacidade de evitar vazamento de recursos aprendendo todas as transformações após a divisão de treinamento/teste e somente a partir do treinamento

Há um velho ditado no aprendizado de máquina: “O aprendizado de máquina aplicado é essencialmente engenharia de recursos”. Porque o sucesso de um modelo geralmente vem das informações que você fornece ao modelo, e não do algoritmo que você escolhe. A engenharia de recursos é a arte de produzir sinais significativos a partir de dados brutos com os quais o modelo pode aprender. A inteligência artificial é uma rica fonte de ideias nesta fase: quando você pergunta “quais recursos podem ser produzidos a partir desses dados”, ela lista dezenas de sugestões. Mas algumas destas sugestões podem ser valiosas, algumas podem ser inúteis e algumas podem ser perigosas (vazamento). É seu trabalho resolver isso.

Por que engenharia de recursos

Os dados brutos raramente chegam ao modelo em sua melhor forma. Embora a coluna “data de nascimento” por si só não tenha sentido, o valor da “idade” gerado a partir dela é um sinal forte. Você pode extrair atributos como "dia da semana", "dia/noite", "é feriado" do "carimbo de data e hora do pedido". Você pode combinar duas colunas para produzir um índice ("rácio dívida/renda"). Aqui, a engenharia de recursos está traduzindo o conhecimento do domínio em sinais matemáticos; E é exatamente por isso que é a etapa que mais exige inteligência humana.

Convertendo variáveis categóricas em números: codificação

Os modelos geralmente funcionam com números, não com texto. A conversão de variáveis ​​categóricas (como cidade, cor, tipo de produto) em números é chamada de codificação. Três métodos comuns:

Codificação one-hot: abre uma coluna separada com um valor 0/1 para cada categoria. Para a "cidade", são formadas colunas de Istambul, Ancara e Izmir; Se o cliente for de Istambul, apenas essa coluna será 1. Ideal quando o número de categorias for pequeno; Se houver muitas categorias, centenas de colunas serão produzidas (isso é chamado de "explosão de tamanho").

Codificação de etiqueta: Fornece um número para cada categoria (Istambul=0, Ancara=1). É simples, mas pode acidentalmente ensinar uma sequência ao modelo (como Ancara > Istambul); portanto, é usado com cautela em categorias não ordenadas.

Codificação de destino: substitui cada categoria pela média da variável de destino nessa categoria. É uma fonte de vazamento muito poderosa, mas a mais perigosa: se você levar em conta o alvo dos dados de teste, o modelo vê o futuro. Deve ser calculado apenas a partir de dados de treinamento e com cuidado (dentro da validação cruzada).

Dimensionamento: números grandes não sobrecarregam o modelo

Alguns modelos (baseados em distância, modelos lineares, redes neurais) são sensíveis à escala das variáveis. Se o “rendimento” (0-500.000) e a “idade” (0-100) se enquadrarem no mesmo padrão, o rendimento poderá dominar simplesmente porque é maior. O dimensionamento corrige isso. Dois métodos comuns: padronização (converte cada valor em “quantos desvios padrão estão longe da média”) e normalização (normalização min-max – comprime os valores no intervalo de 0-1). Modelos baseados em árvores (árvores de decisão, florestas aleatórias) são insensíveis à escala e não requerem escalonamento.

Cuidado: Os parâmetros de escala e codificação (média, desvio padrão, mapeamento de média de categoria) devem ser calculados apenas a partir dos dados de treinamento e, em seguida, o mesmo deve ser aplicado aos dados de teste. Incluir dados de teste é um vazamento e faz com que seu modelo pareça melhor do que realmente é.

O cerne do vazamento na engenharia de recursos

A geração de recursos é onde o vazamento de dados se origina com mais frequência. Dois erros típicos: Vazamento de tempo — produzir um recurso que inclui informações futuras (incluindo dias após o dia da previsão ao calcular a “média dos últimos 30 dias”). Vazamento de estatísticas — calculando um recurso (média de escala, valor de codificação alvo) de todos os dados antes da divisão de treinamento/teste. Regra: aprenda cada transformação depois de fazer a divisão de treinamento/teste primeiro e somente a partir dos dados de treinamento. A maneira mais segura de fazer isso regularmente é usar pipeline — uma estrutura que coleta todas as transformações em uma única cadeia e as aplica após a divisão.

Método

para quê

Risco de vazamento

nota

Codificação one-hot

Variável com poucas categorias

baixo

Explode tamanho em múltiplas categorias

Codificação de etiqueta

Categoria classificada

baixo

Fora de ordem ensina ordem errada

codificação de destino

Multicategoria, sinal forte

muito alto

Apenas da educação, no currículo

padronização

Modelos lineares/de distância

médio

Parâmetro depende apenas da escolaridade

Recurso de janela de tempo

série temporal

alto

Adicione o futuro

três mini cases

Caso 1 — Propriedade valiosa. Uma equipe de crédito gerou o recurso “rácio dívida / rendimento” a partir das colunas brutas “renda mensal” e “pagamento mensal da dívida”. Esse recurso derivado único aumentou a precisão do modelo de 71% para 79%; porque foi a taxa, e não o rendimento absoluto, que realmente determinou o risco. Lição: os índices gerados pelo conhecimento do domínio são sinais fortes.

Caso 2 — Vazamento de codificação de destino. Uma equipe converteu o “código postal” em um número com a codificação desejada (a taxa média de rotatividade naquela área), mas o fez a partir de todos os dados antes da divisão. O modelo deu 94% no conjunto de testes, caindo para 68% na produção. 6 semanas de esforço desperdiçado. Lição: a codificação do alvo é feita com cuidado, apenas dentro do treinamento.

Caso 3 — Esquecimento de escala. Um analista inseriu a receita (0-400.000) e a idade do cliente (18-75) em um modelo baseado em distância sem escalabilidade. O modelo olhou quase exclusivamente para o rendimento, esmagando o efeito da idade. Quando o dimensionamento foi adicionado, a segmentação tornou-se significativa. Lição: o dimensionamento não é negligenciado em modelos de distância/lineares.

Quatro modelos copiáveis

1) Geração de ideias de recursos (a eliminação depende de você):

Sua função: assistente de engenharia de recursos. Minhas colunas df: data_de_nascimento, hora_do_pedido (carimbo de data / hora), renda_tl, dívida_tl, cidade, categoria_produto. Alvo: “o empréstimo será reembolsado” (0/1). Sugira 15 recursos que podem ser gerados a partir dessas colunas; especifique o risco de vazamento (baixo/médio/alto) para cada um. Marque claramente aqueles que contêm informações futuras.

2) Codificação segura (pós-divisão):

Escreva o código que codifica "cidade" e "categoria_produto". IMPORTANTE: ajuste a codificação apenas aos dados de treinamento e depois transforme os dados de teste (com sklearn OneHotEncoder). Explique como você lida com a categoria invisível (handle_unknown) na educação.

3) Conversão sem vazamentos com Pipeline:

Configure o sklearn Pipeline: aplique StandardScaler a colunas numéricas, OneHotEncoder a colunas categóricas e adicione um classificador no final. Garantir que todas as transformações sejam aprendidas APÓS a divisão de treinamento/teste e somente no treinamento. Explique o código e por que ele não contém vazamentos.

4) Recurso de janela de tempo (controle de vazamento):

Gere o atributo “número de pedidos nos últimos 30 dias” para cada cliente, mas NUNCA inclua dados posteriores ao dia da previsão. Explique linha por linha que o código não olha para o futuro. Fornecerei a coluna da data de referência.

Alerta fraco / Alerta forte

Alerta fraco:

Adicione boas propriedades a esses dados.

“Bom” é indefinido, o alvo não é claro, não há controle de vazamento. A IA gera recursos aleatórios, talvez com vazamento.

Alerta poderoso:

Sua função: engenheiro de recursos. Meta: “rotatividade em 30 dias” (0/1), data de referência estimada: save_date. Há histórico de transações no df.Tarefa: Gere 8 recursos, responda à pergunta "Tenho essas informações no momento da previsão" para CADA. Adicionando a data após a data de referência nos recursos da janela de tempo. Escreva o código de maneira compatível com o pipeline para ser executado após a seção de treinamento/teste.

Aqui o alvo, o tempo de referência e o controle de vazamento são definidos desde o início.

Erros comuns

  • Aprendendo a transformação de todos os dados antes da divisão. Se o parâmetro de escala/codificação visualizar os dados de teste, ocorrerá vazamento.
  • Uso descuidado de codificação de destino. É o método mais poderoso, mas com maior vazamento; apenas do treinamento, na validação cruzada.
  • Adicionando o futuro com um recurso de janela de tempo. Se o cálculo dos “últimos 30 dias” for inserido após o dia da previsão, o modelo vê o futuro.
  • Dimensionamento desnecessário no modelo de árvore e dimensionamento incompleto no modelo linear. As decisões de dimensionamento são tomadas de acordo com o tipo de modelo.
  • Adicionando todas as sugestões de recursos da IA ​​sem questionar. As sugestões podem incluir recursos inúteis e com vazamento.
Dica: Escreva uma única pergunta para cada característica que você gerar: “Posso calcular esse valor com as informações que tenho no momento em que faço a previsão?” Se a resposta não for um “sim” claro, não utilize o recurso. Essa disciplina única elimina a maioria dos vazamentos relacionados a recursos.

Resumindo

A engenharia de recursos é a arte de gerar sinais significativos a partir de dados brutos e geralmente determina mais o sucesso do modelo do que o algoritmo. Codificar categóricos (one-hot, rótulo, alvo), escalar números (padronização, normalização) e produzir recursos derivados com conhecimento de domínio são as ferramentas básicas. Mas esta fase também é o cerne do vazamento: todas as transformações devem ser aprendidas após a divisão treinamento/teste e somente a partir dos dados de treinamento. A IA gera muitas ideias; É o julgamento humano que distingue o valioso do perigoso.

Tarefa de aplicativo

Escolha uma variável de destino e projete pelo menos cinco recursos derivados das colunas que você possui. Para cada uma delas, responda por escrito à pergunta “estou disponível no momento da previsão” e elimine pelo menos uma como “alto risco de vazamento”. Em seguida, codifique os recursos seguros em um pipeline a ser implementado após a partição.

lista de verificação

  • [] Apliquei todas as transformações após a divisão de treinamento/teste?
  • [] Eu aprendi apenas parâmetros de escala/codificação no treinamento?
  • [ ] Respondi à pergunta "tenho isso no momento da previsão" para cada recurso?
  • [ ] Tomei cuidado extra com métodos de alto risco, como codificação de destino?
  • [] Decidi dimensionar adequadamente para o tipo de modelo (árvore/linear)?