Você não precisa de conhecimento de domínio (o conhecimento do que seus dados significam ) para realizar a engenharia de recursos (encontrando maneiras mais expressivas de enquadrar seus dados).
Como Tu N. explicou , você pode encontrar combinações "rápidas e sujas" de recursos que podem ser úteis com bastante facilidade. Dada uma saída e uma característica individuais x , você pode tomar as seguintes transformações, x ' ∈ { e x , log ( x ) , x 2 , x 3 , tanh ( x ) } . Uma verificação rápida da utilidade da transformação é se a correlação entre { y , x ′ } for maior que a correlação entreyxx′∈{ex,log(x),x2,x3,tanh(x)}{y,x′} .{y,x}
Aviso sobre correlação: a correlação não mostra tudo e, dependendo do modelo que você está usando (altamente não linear, como NN ou RF) e interação com outras variáveis, uma alteração na correlação pode não significar nada.
No entanto, se você estiver usando um modelo linear simples como regressão logística, é um bom indicador de desempenho. A melhor maneira de avaliar essa transformação, no entanto, conforme observado por Fokhruz Zaman , seria construir um modelo com e sem o recurso transformado e ver como evolui o erro de validação (nas dobras de validação cruzada).
É bastante fácil identificar transformações de recurso único dessa maneira. Eles se aplicam a muitos dados, onde uma relação mais expressiva entre sua entrada e saída pode estar em uma escala diferente. Por exemplo, a relação entre Renda e "Felicidade" parece ser logarítmica, mas você nunca registraria diretamente o registro de uma renda participante.
DD2
Pode ser difícil interpretar a representação interna de um NN, ou mesmo interpretar a importância do recurso em uma Floresta Aleatória. Um método mais fácil e provavelmente mais adequado para essa finalidade, seria o Boosting com árvores de decisão. Existem muitas bibliotecas implementando o Boosting, e se você estiver na competição do Kaggle como sua publicação parece sugerir, o XGBoost parece ser usado por muitos participantes, então você pode encontrar alguma ajuda / tutoriais sobre o que vou descrever.
Primeiro, execute seu algoritmo de aumento usando apenas tocos , árvores de decisão de um nível. Os tocos são muito fracos, mas o Boosting o torna um modelo razoável. Isso atuará como sua linha de base. Dependendo da biblioteca que você está usando, você deve poder exibir com facilidade quais são os recursos mais utilizados e plotá-los contra a resposta (ou fazer um histograma se a resposta for categórica) para identificar algum padrão. Isso pode lhe dar uma intuição sobre o que seria uma boa transformação de recurso único.
Em seguida, execute o algoritmo Boosting com árvores de decisão de dois níveis. Este modelo é muito mais complexo que o anterior; se duas variáveis juntas tiverem mais poder do que as tomadas individualmente, esse modelo deverá superar a anterior (novamente, não em termos de erro de treinamento, mas de erro de validação!). Com base nisso, você deve conseguir extrair qual variável é frequentemente usada em conjunto e isso leva a possíveis transformações de vários recursos.
Em material relacionado, eu recomendaria os seguintes vídeos, pois são fáceis de seguir