Seleção de recursos usando aprendizado profundo?

9

Quero calcular a importância de cada recurso de entrada usando o modelo profundo.

Mas encontrei apenas um artigo sobre seleção de recursos usando aprendizado profundo - seleção profunda de recursos . Eles inserem uma camada de nós conectados diretamente a cada recurso, antes da primeira camada oculta.

Ouvi dizer que a rede de crenças profundas (DBN) também pode ser usada para esse tipo de trabalho. Mas acho que o DBN fornece apenas abstrações (clusters) de recursos como o PCA; portanto, embora possa reduzir a dimensão de maneira eficaz, pergunto-me que, se é possível calcular a importância (peso) de cada recurso.

É possível calcular a importância do recurso com o DBN? E existem outros métodos conhecidos para seleção de recursos usando aprendizado profundo?

z991
fonte

Respostas:

10

Uma abordagem que você pode adotar para quase qualquer modelo de previsão é primeiro treinar seu modelo e encontrar sua precisão; depois, para uma entrada, adicione algum ruído e verifique a precisão novamente. Repita isso para cada entrada e observe como o ruído piora as previsões. Se uma entrada é importante, a incerteza extra devido ao ruído será prejudicial.

Lembre-se de definir a variação do ruído como proporcional à variação da entrada em questão.

É claro que o ruído é aleatório e você não deseja que uma entrada pareça sem importância devido a efeitos aleatórios. Se você tiver poucos exemplos de treinamento, considere calcular repetidamente a alteração na precisão de cada exemplo de treinamento com um novo ruído adicionado a cada vez.

Em resposta aos comentários:

Essa análise também pode ser feita removendo uma variável completamente, mas isso tem algumas desvantagens em comparação à adição de ruído.

  • Suponha que uma de suas entradas seja constante, ela atue como um termo tendencioso, portanto, ela tem algum papel a desempenhar na previsão, mas não adiciona informações. Se você removesse completamente essa entrada, a previsão se tornaria menos precisa, porque os perceptrons estão recebendo o viés errado. Isso faz com que a entrada pareça importante para a previsão, mesmo que ela não inclua informações. Adicionar ruído não causará esse problema. Este primeiro ponto não é um problema se você padronizou todas as entradas para ter média zero.

  • Se duas entradas estiverem correlacionadas, as informações sobre uma entrada fornecerão informações sobre a outra. Um modelo poderia ser bem treinado se você usasse apenas uma das entradas correlacionadas, para que a análise descubra que uma entrada não é útil. Se você acabou de remover uma das entradas, como o primeiro argumento, a precisão da previsão diminuiria muito, o que indica que é importante. No entanto, adicionar ruído não causará esse problema.

Hugh
fonte
2
Hugh, estou familiarizado com isso removendo o recurso. Quais são as vantagens de substituir o recurso por ruído?
Dal
@ Dan Não quis dizer que o recurso deva ser completamente substituído por ruído, apenas que algum ruído deve ser adicionado. A remoção de um recurso pode fazer com que recursos sem importância pareçam importantes se eles tiverem uma média diferente de zero ou se estiverem correlacionados com outras variáveis. Eu editei minha resposta para explicar.
Hugh
Obrigado pelo comentário. Mas, na verdade, tenho vários conjuntos de recursos (entradas) e muitos deles estão correlacionados. Nesse caso, talvez o tempo computacional seja próximo de n! como eu preciso considerar as combinações. Então, eu quero aplicar um modelo baseado em aprendizado profundo que considere combinações complexas de recursos.
Z991
@ z991 na regressão linear multivariável, o mesmo problema pode ocorrer com variáveis ​​que não estão perfeitamente correlacionadas. Freqüentemente, apresentamos cada variável uma de cada vez ou usamos todas as variáveis ​​e as removemos uma de cada vez. Não há como simplesmente calcular a melhor combinação. Se isso não tiver sido resolvido para regressão linear, você não encontrará uma solução para NNs. Você pode adotar a mesma abordagem e remover variáveis ​​uma de cada vez e evitar o n! computação.
Hugh
11
@ Enorme Obrigado pelo comentário. Eu concordo com você. Mas o que eu realmente queria saber era como calcular a importância de cada recurso com aprendizado profundo ou rede neural. Como eles usam várias extrações de recursos (camadas ocultas), foi difícil para mim analisar a importância do recurso. É possível calcular o peso total de cada recurso, mas parece ser bastante complexo e demorado. O artigo vinculado usava uma única camada linear e acho que é uma boa ideia. Eu queria conhecer outros métodos melhores para analisar a importância do recurso na rede.
Z991
2

Talvez verifique este documento: https://arxiv.org/pdf/1712.08645.pdf

Eles usam o dropout para classificar os recursos.

... Neste trabalho, usamos o conceito Dropout na camada de recurso de entrada e otimizamos a taxa de dropout correspondente a cada recurso. Como cada recurso é removido estocástico, nosso método cria um efeito semelhante ao empacotamento de recursos (Ho, 1995) e consegue classificar os recursos correlacionados melhor do que outros métodos que não são de empacotamento, como o LASSO. Comparamos nosso método com a classificação Random Forest (RF), LASSO, ElasticNet, Marginal e várias técnicas para obter importância no DNN, como Deep Feature Selection e várias heurísticas ...

Florida Man
fonte