Quais algoritmos de aprendizado de máquina são bons para estimar quais recursos são mais importantes?

12

Eu tenho dados com um número mínimo de recursos que não mudam e alguns recursos adicionais que podem mudar e ter um grande impacto no resultado. Meu conjunto de dados fica assim:

Os recursos são A, B, C (sempre presente) e D, E, F, G, H (às vezes presentes)

A = 10, B = 10, C = 10                  outcome = 10
A = 8,  B = 7,  C = 8                   outcome = 8.5
A = 10, B = 5,  C = 11, D = 15          outcome = 178
A = 10, B = 10, C = 10, E = 10, G = 18  outcome = 19
A = 10, B = 8,  C = 9,  E = 8,  F = 4   outcome = 250
A = 10, B = 11, C = 13, E = 8,  F = 4   outcome = 320
...

Quero prever o valor do resultado, e a combinação de parâmetros adicionais é muito importante para determinar o resultado. Neste exemplo, a presença de E e F leva a um grande resultado, enquanto a presença de E e G não. Quais algoritmos ou técnicas de aprendizado de máquina são bons para capturar esse fenômeno?

Benjamin Crouzier
fonte
Por "presente às vezes", você quer dizer que só conhece o valor delas algumas vezes? Ou que eles são conhecidos por não desempenhar um papel na maioria dos casos? Ou talvez algo mais?
David J. Harris
@ DavidJ.Harris Por "às vezes presente", quero dizer que o exemplo de treinamento específico não possui a propriedade. É como se fosse igual a zero. No meu problema, todos os meus recursos serão números positivos em um determinado intervalo (por exemplo, de 5 a 15 ou 100 a 1000).
Benjamin Crouzier 19/10/12
1
pode ser bom olhar para este link eren.0fees.net/2012/10/22/…
erogol 25/10/12

Respostas:

14

Essa é uma das principais áreas de pesquisa em Machine Learning e é conhecida como Seleção de recursos .

Em geral, a única maneira de dizer qual é o melhor subconjunto de recursos (para entrada em algum modelo preditivo que pode combiná-los) é tentar todos os subconjuntos possíveis. Isso geralmente é impossível, então as pessoas tentam amostrar o espaço dos subconjuntos de recursos por várias heurísticas (consulte o artigo para obter algumas abordagens típicas).

Bit a bit
fonte
3

Do meu entendimento, você está procurando uma medida de importância variável. Eles têm vários sabores, com base em várias abordagens teóricas diferentes, mas todos têm fortes vínculos com os métodos usados ​​para otimizar o algoritmo que você está falando. Geralmente, cada algoritmo de aprendizado de máquina terá um método de otimização canônico; propagação de retorno para redes neurais, otimização mínima seqüencial para SVMs, vários critérios de informação e testes de significância estatística para árvores de decisão, incluindo significância qui-quadrado ou impureza gini. Obviamente, outros métodos de otimização mais novos são frequentemente propostos para cada um dos algoritmos.

Esses métodos de otimização para cada algoritmo definem essencialmente a importância da variável para o modelo em questão. Essencialmente, você está procurando uma representação aproximada ou interpretável dos resultados dessa etapa de otimização que o algoritmo está realizando. No entanto, isso é problemático por vários motivos.

  1. A dificuldade de determinar a influência de uma determinada variável na seleção do formulário do modelo, uma vez que a seleção costuma ser um processo estocástico. , pode ter moldado crucialmente a própria forma do modelo. Dado que a geração do modelo em si é frequentemente estocástica (otimizada usando a otimização de enxame de partículas ou um método de ensacamento etc.), é difícil entender exatamente como uma determinada variável pode ter moldado sua forma.

  2. A dificuldade de extrair a importância de uma única variável, uma vez que ela pode ser importante apenas em conjunto ou interação com outra variável.

  3. Algumas variáveis ​​podem ser importantes apenas para algumas observações. A falta de importância em outras observações pode confundir a medição da importância geral, calculando a média da diferença real.

Também é difícil obter uma métrica imediatamente interpretável para importância variável exatamente como definida pelo modelo, pois pode não produzir um número único (especialmente no caso de ensacamento). Em vez disso, nesses casos, há uma distribuição de importância para cada variável.

Uma maneira de superar esses problemas pode ser usar a perturbação. Essa é uma maneira de analisar seu modelo final adicionando ruído aleatório às suas variáveis ​​e, em seguida, verificando como isso afeta os resultados. A vantagem é que ele permite que você descubra quais variáveis ​​são mais importantes empiricamente através da simulação - respondendo à pergunta de quais variáveis ​​destruiriam mais a previsão se removidas. A desvantagem é que há uma boa chance de que, mesmo que as variáveis ​​tenham sido removidas / perturbadas, o modelo (se re-treinado) possa usar as outras variáveis ​​para reconstruir seus efeitos, o que significa que a "importância das variáveis" que você mede você ainda obtém apenas verdadeiramente indica a importância em seu modelo treinado, mas não a importância geral em todos os modelos possíveis.

analítico
fonte
3

Como o @Bitwise menciona, a seleção ou extração de recursos é uma enorme área de pesquisa em si e existem inúmeras maneiras de fazer isso.

As outras respostas são todas válidas na minha opinião, mas, no final, você provavelmente gostará mais e escolherá o método mais intuitivo para você e que entenderá melhor. Eu ainda adicionaria duas opções possíveis.

A regressão múltipla é provavelmente a técnica mais antiga. A idéia é ajustar um modelo para descrever a resposta dos preditores e manter apenas os preditores que têm um grande impacto na resposta (um grande coeficiente de proporcionalidade). Aqui você provavelmente teria de recodificar a ausência de D, E, F e G, como D=0, E=0, F=0, G =0ou algo parecido.

Outra técnica que nunca ganhou a popularidade que merece é a análise de co-inércia (uma variante da análise canônica ). Não existe nenhuma implementação do mesmo, tanto quanto eu sei, e você teria que começar do zero ( não por exemplo). É um método linear que encontra a melhor combinação linear de recursos que corresponde ao (s) seu (s) resultado (s). Esta postagem do blog mostra um exemplo de como pode ser usada.

gui11aume
fonte
2

Eu uso o Information Gain (também conhecido como Informações Mútuas). Meu orientador e eu usamos regularmente a abordagem descrita neste artigo , Cohen, 2008, para analisar recursos para classificação pelo SVM.

Kyle.
fonte
2

Florestas aleatórias podem ser bastante úteis para o que você deseja fazer. O pacote randomForest para R tem uma função que calcula 2 medidas de importância. Ele também tem a capacidade de criar alguns gráficos parciais de dependência, para que você possa inspecionar visualmente o efeito marginal que o preditor pode ter na resposta.

dcl
fonte
1

Estou sendo desagradável aqui, mas por uma razão. Você pensou em substituir as observações não uniformes por uma variável indicadora presente | not_present? Pela sua descrição, parece que esse valor do indicador é um recurso válido, pois a presença dos fatores D a H não é informativa: ou seja, a presença deles indica apenas resultados maiores.

jcb
fonte