paint-brush
Engenharia de recursos para aprendizado de máquinapor@sumitmakashir
847 leituras
847 leituras

Engenharia de recursos para aprendizado de máquina

por Sumit Makashir15m2024/05/15
Read on Terminal Reader

Muito longo; Para ler

A engenharia de recursos é crucial para maximizar o desempenho dos modelos de aprendizado de máquina. Ao criar e processar recursos significativos, até mesmo algoritmos simples podem alcançar resultados superiores. As principais técnicas incluem agregação, diferenças e proporções, codificação de idade, codificação de indicadores, codificação one-hot e codificação de alvo. O processamento eficaz de recursos envolve tratamento de valores discrepantes, tratamento de valores ausentes, dimensionamento, redução de dimensionalidade e transformação de alvos para distribuição normal.
featured image - Engenharia de recursos para aprendizado de máquina
Sumit Makashir HackerNoon profile picture
0-item


Você deve ter ouvido o ditado “entra lixo, sai lixo”. Este ditado é realmente aplicável ao treinar modelos de aprendizado de máquina. Se treinarmos modelos de aprendizado de máquina usando dados irrelevantes, mesmo os melhores algoritmos de aprendizado de máquina não ajudarão muito. Por outro lado, o uso de recursos significativos e bem projetados pode alcançar um desempenho superior mesmo com um algoritmo simples de aprendizado de máquina. Então, como podemos criar esses recursos significativos que maximizarão o desempenho do nosso modelo? A resposta é engenharia de recursos. Trabalhar na engenharia de recursos é especialmente importante ao trabalhar com algoritmos tradicionais de aprendizado de máquina, como regressão, árvores de decisão, máquinas de vetores de suporte e outros que exigem entradas numéricas. No entanto, criar essas entradas numéricas não envolve apenas habilidades com dados. É um processo que exige criatividade e conhecimento de domínio e tem tanto arte quanto ciência.

Em termos gerais, podemos dividir a engenharia de recursos em dois componentes: 1) criação de novos recursos e 2) processamento desses recursos para fazê-los funcionar de maneira ideal com o algoritmo de máquina em consideração. Neste artigo, discutiremos esses dois componentes da engenharia de recursos para conjuntos de dados transversais, estruturados e não PNL.


Criação de novos recursos

A coleta de dados brutos pode ser exaustiva e, ao final desta tarefa, podemos estar cansados demais para investir mais tempo e energia na criação de recursos adicionais. Mas é aqui que devemos resistir à tentação de mergulhar directamente na formação de modelos. Te prometo que valerá muito a pena! Nessa junção, deveríamos fazer uma pausa e nos perguntar: "Se eu fizesse as previsões manualmente com base no conhecimento do meu domínio, quais recursos teriam me ajudado a fazer um bom trabalho?" Fazer esta pergunta pode abrir possibilidades para a criação de novos recursos significativos que, de outra forma, nosso modelo poderia ter perdido. Depois de considerarmos quais recursos adicionais poderíamos nos beneficiar, podemos aproveitar as técnicas abaixo para criar novos recursos a partir dos dados brutos.


1. Agregação

Como o nome sugere, esta técnica nos ajuda a combinar vários pontos de dados para criar uma visão mais holística. Normalmente aplicamos agregações em dados numéricos contínuos usando funções padrão como contagem, soma, média, mínimo, máximo, percentil, desvio padrão e coeficiente de variação. Cada função pode capturar diferentes elementos de informação, e a melhor função a ser usada depende do caso de uso específico. Freqüentemente, podemos aplicar agregação em um determinado período de tempo ou evento que seja significativo no contexto desse problema.

Vejamos um exemplo em que queremos prever se uma determinada transação com cartão de crédito é fraudulenta. Para este caso de uso, podemos, sem dúvida, usar recursos específicos de transação, mas junto com esses recursos, também podemos nos beneficiar da criação de recursos agregados no nível do cliente, como:

  1. Contagem de vezes que o cliente foi vítima de fraude nos últimos cinco anos: Um cliente que foi vítima de fraude várias vezes anteriormente pode ter maior probabilidade de ser vítima de fraude novamente. Conseqüentemente, o uso dessa visão agregada no nível do cliente pode fornecer sinais de previsão adequados.

  2. Mediana dos últimos cinco valores de transação: Muitas vezes, quando um cartão de crédito é comprometido, os fraudadores podem tentar várias transações de baixo valor para testar o cartão. Agora, uma única transação de baixo valor é muito comum e pode não ser um sinal de fraude, mas se observarmos muitas dessas transações em uma curta sucessão, isso pode indicar um cartão de crédito comprometido.


O gráfico superior mostra os valores das transações individuais e podemos ver que transações isoladas de baixo valor não são incomuns e não indicam fraude; no entanto, múltiplas transações sucessivas de baixo valor são um sinal de fraude. O gráfico inferior mostra uma mediana contínua dos últimos cinco valores de transação e só retorna um valor baixo se houver um padrão de múltiplas transações sucessivas de baixo valor. Neste caso, a visão agregada inferior permite distinguir entre transações legítimas de baixo valor e transações fraudulentas de baixo valor usando o valor da transação como recurso.



2. Diferenças e proporções

Em muitos tipos de problemas, a mudança em um padrão definido é um sinal valioso para previsão ou detecção de anomalias. Diferenças e proporções são técnicas eficazes para representar mudanças em características numéricas. Assim como a agregação, também podemos aplicar essas técnicas durante uma janela de tempo significativa no contexto desse problema.

Exemplos:

  1. Diferença entre a porcentagem de novas transações comerciais na última 1 hora e a porcentagem de novas transações comerciais nos últimos 30 dias: uma alta porcentagem de novas transações comerciais em rápida sucessão pode indicar risco de fraude por si só, mas quando vemos que esse comportamento mudou em relação ao comportamento histórico do cliente, torna-se um sinal ainda mais aparente.

  2. Proporção entre a contagem de transações do dia atual e a contagem média de transações diárias dos últimos 30 dias: quando um cartão de crédito é comprometido, provavelmente haverá muitas transações em um curto espaço de tempo, o que pode não estar de acordo com o uso anterior do cartão de crédito. Uma proporção significativamente alta entre a contagem de transações do dia atual e a contagem média de transações diárias dos últimos 30 dias pode indicar padrões de uso fraudulentos.


Na tabela acima, podemos ver que uma contagem alta de transações em um determinado dia, por si só, pode não ser uma indicação de comportamento anômalo de transação. Em contraste, um recurso baseado em proporção pode facilitar a comparação entre o comportamento de transação atual do cliente e seu comportamento de transação passado e, assim, pode capturar anomalias de forma mais eficaz.

3. Codificação de idade

Podemos usar a técnica de cálculo de idade para converter os recursos de data ou carimbo de data/hora em recursos numéricos, calculando a diferença entre dois carimbos de data/hora ou datas. Também podemos usar essa técnica para converter certos recursos não numéricos em recursos numéricos significativos se a posse associada aos valores dos recursos puder ser um sinal valioso para previsão.

Exemplos:

  1. Dias desde a última utilização do cartão de crédito: Uma transação repentina em um cartão de crédito que está inativo há muito tempo pode estar associada a um alto risco de fraude. Podemos calcular esse recurso calculando a diferença de tempo entre a data desde a última utilização do cartão de crédito e a data da transação atual.
  2. Dias desde que o dispositivo do cliente foi usado pela primeira vez: se observarmos uma transação proveniente de um novo dispositivo, é provável que seja mais arriscada do que uma transação feita a partir de um dispositivo que o cliente usa há mais tempo. Podemos criar um recurso que indica a idade do dispositivo como a diferença entre a data desde que o cliente usou o dispositivo pela primeira vez e a data da transação atual.

As tabelas acima mostram um exemplo de codificação de idade. Aqui, criamos um novo recurso numérico "Dias desde a primeira utilização do dispositivo de transação" como a diferença em dias entre a data da primeira utilização do dispositivo do cliente e a data da transação atual.


4. Codificação do Indicador

Os recursos indicadores ou booleanos têm valores binários {1, 0} ou {True, False}. Os recursos dos indicadores são muito comuns e são usados para representar vários tipos de informações binárias. Em alguns casos, já podemos ter tais recursos binários na forma numérica, enquanto em outros casos, eles podem ter valores não numéricos. Para usar os recursos binários não numéricos para treinamento de modelo, tudo o que precisamos fazer é mapeá-los para valores numéricos.

Olhando além dessas ocorrências comuns e usos de recursos de indicadores, podemos aproveitar a codificação de indicadores como uma ferramenta para representar uma comparação entre pontos de dados não numéricos. Este atributo o torna particularmente poderoso, pois cria uma maneira de medirmos as mudanças em recursos não numéricos.

Exemplos:

  1. Falha na verificação durante evento de login recente: Um evento recente de falha no login pode estar associado a um risco maior de transações fraudulentas. Neste caso, os dados brutos podem ter valores Sim ou Não para este recurso; tudo o que precisamos fazer aqui é mapear esses valores para 1 ou 0.

  2. Mudança na localização do país desde a última transação: Uma mudança na localização do país pode indicar um cartão de crédito comprometido. Aqui, a criação de um recurso de indicador que representa uma mudança no recurso não numérico 'localização do país' capturará essas informações de mudança de país.


As tabelas acima mostram um exemplo de codificação de indicador. Aqui criamos um novo recurso numérico "Mudança de país em relação à transação anterior", comparando a localização do país da transação atual de um cliente com a localização do país da transação anterior.


5. Codificação One-Hot

Esta técnica pode ser aplicada se nossos dados de recursos estiverem em formato categórico, seja numérico ou não numérico. A forma numérica-categórica refere-se a dados numéricos contendo dados não contínuos ou não de medição, como códigos de região geográfica, IDs de lojas e outros tipos de dados. Uma técnica de codificação a quente pode converter esses recursos em um conjunto de recursos de indicadores que podemos usar no treinamento de modelos de aprendizado de máquina. Aplicar uma codificação dinâmica em um recurso categórico criará um novo recurso binário para cada categoria nessa variável categórica. Como o número de novos recursos aumenta à medida que o número de categorias aumenta, esta técnica é adequada para recursos com baixo número de categorias, especialmente se tivermos um conjunto de dados menor. Uma das regras práticas sugere a aplicação desta técnica se tivermos pelo menos dez registros por categoria.

Exemplos:

  1. Categoria de compra de transação: Certos tipos de categorias de compra podem estar associados a um maior risco de fraude. Como os nomes das categorias de compra são dados de texto, podemos aplicar a técnica de codificação one-hot para converter esse recurso em um conjunto de recursos de indicadores numéricos. Se houver dez nomes de categorias de compra diferentes, a codificação one-hot criará dez novos recursos de indicadores, um para cada nome de categoria de compra.
  2. Tipo de dispositivo: uma transação online pode ser feita por meio de vários tipos diferentes de dispositivos, como iPhone, telefone Android, PC com Windows e Mac. Alguns destes dispositivos são mais suscetíveis a malware ou facilmente acessíveis a fraudadores e, portanto, podem estar associados a um maior risco de fraude. Para incluir informações do tipo de dispositivo em formato numérico, podemos aplicar a codificação one-hot ao tipo de dispositivo, o que criará um novo recurso de indicador para cada tipo de dispositivo.

As tabelas acima mostram um exemplo de codificação one-hot. Aqui criamos um conjunto de novos recursos de indicadores numéricos aplicando a técnica de codificação one-hot ao recurso categórico não numérico "Tipo de dispositivo".


6. Codificação de destino

Essa técnica é aplicada ao mesmo tipo de recursos aos quais aplicaríamos a codificação one-hot, mas tem algumas vantagens e desvantagens em relação à codificação one-hot. Quando o número de categorias é alto (alta cardinalidade), o uso da codificação one-hot aumentará indesejavelmente o número de recursos, o que pode levar ao ajuste excessivo do modelo. A codificação alvo pode ser uma técnica eficaz nesses casos, desde que estejamos trabalhando em um problema de aprendizagem supervisionada. É uma técnica que mapeia o valor de cada categoria com o valor esperado do alvo para aquela categoria. Se estiver trabalhando com um problema de regressão com uma meta contínua, esse cálculo mapeia a categoria para o valor alvo médio dessa categoria. No caso de um problema de classificação com um alvo binário, a codificação do alvo mapeará a categoria para a probabilidade de evento positivo dessa categoria. Ao contrário da codificação one-hot, esta técnica tem a vantagem de não aumentar o número de recursos. Uma desvantagem desta técnica é que ela só pode ser aplicada a problemas de aprendizagem supervisionada. A aplicação desta técnica também pode tornar o modelo suscetível ao sobreajuste, principalmente se o número de observações em algumas categorias for baixo.

Exemplos:

  1. Nome do comerciante: as transações realizadas contra determinados comerciantes podem indicar atividades fraudulentas. Poderia haver milhares desses comerciantes, cada um com um risco diferente de transações fraudulentas. Aplicar codificação one-hot a um recurso contendo nomes de comerciantes pode introduzir milhares de novos recursos, o que é indesejável. Nesses casos, a codificação alvo pode ajudar a capturar as informações sobre risco de fraude do comerciante sem aumentar o número de recursos.
  2. CEP da transação: Assim como os comerciantes, as transações feitas em CEPs diferentes podem representar diferentes níveis de risco de fraude. Embora os CEPs tenham valores numéricos, eles não são variáveis de medição contínua e não devem ser usados no modelo como estão. Em vez disso, podemos incorporar as informações de risco de fraude associadas a cada CEP aplicando uma técnica como a codificação de destino.

As tabelas acima mostram um exemplo de codificação de destino. Aqui criamos um único novo recurso numérico "Codificação de destino do nome do comerciante", aplicando a técnica de codificação de destino a um recurso categórico não numérico "Nome do comerciante". Como o nome sugere, esta técnica depende de valores alvo para calcular os novos valores de recursos.



Depois de criarmos os novos recursos a partir dos dados brutos, a próxima etapa é processá-los para obter o desempenho ideal do modelo. Conseguimos isso por meio do processamento de recursos, conforme discutido na próxima seção.

Processamento de recursos

O processamento de recursos refere-se a uma série de etapas de processamento de dados que garantem que os modelos de aprendizado de máquina se ajustem aos dados conforme pretendido. Embora algumas dessas etapas de processamento sejam necessárias ao usar determinados algoritmos de aprendizado de máquina, outras garantem que encontremos uma boa química funcional entre os recursos e o algoritmo de aprendizado de máquina em consideração. Nesta seção, vamos discutir algumas etapas comuns de processamento de recursos e por que precisamos delas.

1. Tratamento atípico

Vários algoritmos de aprendizado de máquina, especialmente os paramétricos, como modelos de regressão, são severamente afetados por valores discrepantes. Esses algoritmos de aprendizado de máquina tentam acomodar valores discrepantes, afetando gravemente os parâmetros do modelo e comprometendo o desempenho geral. Para tratar os outliers, devemos primeiro identificá-los. Podemos detectar valores discrepantes para um recurso específico aplicando certas regras práticas, como ter um valor absoluto maior que a média mais três desvios padrão ou um valor fora do valor do bigode mais próximo (valor do quartil mais próximo mais 1,5 vezes o valor do intervalo interquartil). Depois de identificarmos os valores discrepantes em um recurso específico, podemos usar algumas das técnicas abaixo para tratar valores discrepantes:

  1. Exclusão: podemos excluir as observações com pelo menos um valor discrepante. No entanto, se nossos dados tiverem muitos valores discrepantes em diferentes recursos, poderemos perder muitas observações.
  2. Substituição: podemos substituir valores discrepantes por médias, como média, mediana e moda, de um determinado recurso.
  3. Transformação ou padronização de recursos: podemos usar transformação de log ou padronização de recursos (conforme descrito na escala) para reduzir a magnitude dos valores discrepantes.
  4. Limite e piso: podemos substituir os valores discrepantes além de um determinado valor por esse valor, por exemplo, substituindo todos os valores acima do percentil 99 pelo valor do percentil 99 e substituindo todos os valores abaixo do 1º percentil pelo valor do 1º percentil.


A imagem acima mostra as duas técnicas comumente usadas para detectar valores discrepantes univariados. Podemos ver que as duas técnicas podem produzir conjuntos diferentes de valores discrepantes. A técnica de média+3 DP deve ser usada se os dados seguirem uma distribuição normal. A técnica baseada em boxplot whisker é mais genérica e pode ser aplicada a dados com qualquer distribuição.


As tabelas acima mostram a aplicação de técnicas comumente utilizadas para tratamento de outliers.


Observe que existem técnicas para detectar observações que são outliers multivariados (outliers em relação a múltiplos recursos), mas são mais complexas e geralmente não agregam muito valor em termos de treinamento de modelo de aprendizado de máquina. Observe também que os valores discrepantes não são uma preocupação ao trabalhar com a maioria dos modelos de aprendizado de máquina não paramétricos, como máquinas de vetores de suporte e algoritmos baseados em árvores, como árvores de decisão, florestas aleatórias e XGBoost.


2. Tratamento de valores ausentes

Dados ausentes são muito comuns em conjuntos de dados do mundo real. A maioria dos algoritmos tradicionais de aprendizado de máquina, exceto alguns como o XGBoost, não permitem valores ausentes em conjuntos de dados de treinamento. Assim, corrigir valores ausentes é uma das tarefas rotineiras na modelagem de aprendizado de máquina. Existem diversas técnicas para tratar valores faltantes; entretanto, antes de implementar qualquer técnica, é importante entender a causa dos dados faltantes ou, pelo menos, saber se os dados faltam aleatoriamente. Se os dados não estiverem faltando aleatoriamente, o que significa que certos subgrupos têm maior probabilidade de ter dados faltantes, pode ser difícil imputar valores para eles, especialmente se houver poucos ou nenhum dado disponível. Se os dados estiverem faltando aleatoriamente, podemos usar algumas das técnicas comuns de tratamento descritas abaixo. Todos eles têm prós e contras, e cabe a nós decidir qual método melhor se adapta ao nosso caso de uso.

  1. Exclusão: podemos excluir as observações com pelo menos um valor de recurso ausente. No entanto, se nossos dados tiverem muitos valores ausentes em diferentes recursos, podemos acabar perdendo muitas observações.
  2. Descarte: se um recurso tiver um grande número de valores ausentes, podemos optar por descartá-lo.
  3. Substituição por médias: podemos usar médias como média, mediana e moda de um determinado recurso para substituir os valores ausentes. Este método é simples de implementar, mas pode não fornecer boas estimativas para todos os tipos de observações. Por exemplo, uma transação com alto risco de fraude pode ter um valor médio de transação diferente de um valor de transação com baixo risco de fraude, e usar uma média geral para um valor de transação ausente com alto risco de fraude pode não ser uma boa substituição.
  4. Máxima verossimilhança, múltiplas imputações, K vizinhos mais próximos: são métodos mais complexos que consideram a relação com outras características do conjunto de dados e podem fornecer estimativas mais precisas do que as médias globais. No entanto, a implementação desses métodos exigirá modelagem adicional ou implementação de algoritmo.

As tabelas acima mostram a aplicação de técnicas comumente usadas para tratamento de valores faltantes.

3. Dimensionamento

Freqüentemente, os recursos que usamos em modelos de aprendizado de máquina têm intervalos diferentes. Se os usarmos sem escala, os recursos com valores absolutos grandes dominarão o resultado da previsão. Em vez disso, para dar a cada característica uma oportunidade justa de contribuir para o resultado da previsão, devemos colocar todas as características na mesma escala. As duas técnicas de dimensionamento mais comuns são:

  1. Normalização: esta técnica de dimensionamento restringe os valores do recurso entre 0 e 1. Para aplicar a normalização, subtraímos o valor mínimo do recurso e o dividimos pelo intervalo (diferença entre mínimo e máximo) desse recurso. A normalização pode não ser uma boa técnica se alguns de nossos recursos tiverem uma distorção acentuada ou alguns valores discrepantes extremos.
  2. Padronização: Esta técnica transforma a distribuição de dados de recursos na distribuição normal padrão. Podemos implementar esta técnica subtraindo a média e dividindo-a pelo desvio padrão. Essa técnica geralmente é preferida se o recurso tiver uma inclinação acentuada ou alguns valores discrepantes extremos.

Observe que algoritmos baseados em árvore, como árvores de decisão, floresta aleatória, XGBoost e outros, podem funcionar com dados não escalonados e não precisam de escalonamento ao usar esses algoritmos.

As tabelas acima mostram a aplicação das duas técnicas de dimensionamento de recursos comumente usadas.


A imagem acima mostra a diferença de escala entre os valores dos recursos originais, normalizados e padronizados. Como podemos ver, o dimensionamento não afeta a forma da distribuição dos dados.

4. Redução de dimensionalidade

Hoje, temos dados enormes e podemos construir uma vasta coleção de recursos para treinar nossos modelos. Para a maioria dos algoritmos, ter mais recursos é bom, pois oferece mais opções para melhorar o desempenho do modelo. No entanto, isso não é verdade para todos os algoritmos. Algoritmos baseados em métricas de distância sofrem com a maldição da dimensionalidade – à medida que o número de características aumenta substancialmente, o valor da distância entre as duas observações perde o sentido. Assim, para utilizar algoritmos que dependem de métricas de distância, devemos garantir que não estamos utilizando um grande número de recursos. Se nosso conjunto de dados tiver um grande número de recursos e não soubermos quais manter e quais descartar, podemos usar técnicas como análise de componentes principais (PCA). O PCA transforma o conjunto de recursos antigos em um conjunto de novos recursos. Ele cria novos recursos de forma que aquele com os valores próprios mais altos capture a maior parte das informações dos recursos antigos. Podemos então manter apenas os novos recursos principais e descartar os restantes.

Outras técnicas estatísticas, como análise de associação e algoritmos de seleção de recursos, podem ser usadas em problemas de aprendizagem supervisionada para reduzir o número de recursos. No entanto, eles geralmente não capturam o mesmo nível de informação que o PCA captura com o mesmo número de recursos.

As tabelas acima mostram a aplicação do PCA para redução de recursos. Como podemos ver, os três primeiros recursos capturam mais de 87% das informações contidas no conjunto de dados original. Neste caso, podemos optar por deixar de fora os dois recursos (f4 e f5) para uma perda de <13% de informação. O número de recursos a serem mantidos e o número de recursos a serem eliminados variarão de problema para problema, dependendo de vários fatores.


5. Transformando para distribuição normal

Esta etapa é uma exceção porque se aplica apenas ao destino e não aos recursos. Além disso, a maioria dos algoritmos de aprendizado de máquina não tem nenhuma restrição na distribuição do alvo, mas alguns, como a regressão linear, exigem que o alvo seja distribuído normalmente. A regressão linear assume que os valores de erro são simétricos e concentrados em torno de zero para todos os pontos de dados (assim como a forma da distribuição normal), e uma variável alvo normalmente distribuída garante que esta suposição seja atendida. Podemos entender a distribuição do nosso alvo traçando um histograma. Testes estatísticos como o teste de Shapiro-Wilk nos falam sobre a normalidade ao testar esta hipótese. Caso nosso alvo não seja normalmente distribuído, podemos tentar várias transformações, como transformação logarítmica, transformação quadrada, transformação raiz quadrada e outras para verificar quais transformações tornam a distribuição alvo normal. Há também uma transformação Box-Cox que testa vários valores de parâmetros, e podemos escolher aquele que melhor transforma a distribuição do nosso alvo em normal.

A imagem acima mostra três transformações dos dados do alvo original. Neste caso específico, podemos ver que a transformação logarítmica funciona melhor para transformar a distribuição original dos dados em uma distribuição normal.


Nota: Embora possamos implementar as etapas de processamento de recursos em qualquer ordem, devemos considerar cuidadosamente a sequência de sua aplicação. Por exemplo, o tratamento de valores ausentes usando substituição de média de valor pode ser implementado antes ou depois da detecção de valores discrepantes. No entanto, o valor médio usado para substituição pode diferir dependendo se tratamos os valores ausentes antes ou depois do tratamento de valores discrepantes. A sequência de processamento de recursos descrita neste artigo trata os problemas na ordem do impacto que eles podem ter nas etapas de processamento sucessivas. Assim, seguir esta sequência geralmente deve ser eficaz para resolver a maioria dos problemas.


Conclusão

Conforme mencionado na introdução, a engenharia de recursos é uma dimensão do aprendizado de máquina que nos permite controlar o desempenho do modelo em um grau excepcional. Para explorar todo o potencial da engenharia de recursos, aprendemos várias técnicas neste artigo para criar novos recursos e processá-los para funcionar de maneira ideal com modelos de aprendizado de máquina. Não importa quais princípios e técnicas de engenharia de recursos deste artigo você escolha usar, a mensagem importante aqui é entender que o aprendizado de máquina não consiste apenas em pedir ao algoritmo para descobrir os padrões. Trata-se de permitir que o algoritmo faça o seu trabalho de forma eficaz, fornecendo o tipo de dados de que necessita.