Selezione delle funzionalità mediante l'apprendimento approfondito?


9

Voglio calcolare l'importanza di ogni funzione di input usando il modello profondo.

Ma ho trovato solo un articolo sulla selezione delle funzionalità utilizzando l'apprendimento approfondito: selezione approfondita delle funzionalità . Inseriscono uno strato di nodi collegati direttamente a ciascuna funzione, prima del primo livello nascosto.

Ho sentito che Deep Network (DBN) può essere utilizzato anche per questo tipo di lavoro. Ma penso che DBN fornisca solo astrazioni (cluster) di funzionalità come PCA, quindi sebbene possa ridurre efficacemente la dimensione, mi chiedo se sia possibile calcolare l'importanza (peso) di ciascuna funzionalità.

È possibile calcolare l'importanza della funzione con DBN? E ci sono altri metodi conosciuti per la selezione delle funzionalità usando l'apprendimento profondo?

Risposte:


10

Un approccio che puoi adottare per quasi tutti i modelli di previsione è quello di addestrare prima il tuo modello e trovarne l'accuratezza, quindi per un ingresso aggiungi un po 'di rumore e verifica nuovamente l'accuratezza. Ripetere l'operazione per ciascun ingresso e osservare come il rumore peggiora le previsioni. Se un input è importante, l'incertezza aggiuntiva dovuta al rumore sarà dannosa.

Ricorda di impostare la varianza del rumore in modo che sia proporzionale alla varianza dell'input in questione.

Naturalmente il rumore è casuale e non si desidera che un ingresso appaia non importante a causa di effetti casuali. Se hai pochi esempi di allenamento, considera di calcolare ripetutamente il cambio di precisione per ciascun esempio di allenamento con un nuovo rumore aggiunto ogni volta.

In risposta ai commenti:

Questa analisi può anche essere eseguita rimuovendo completamente una variabile, ma presenta alcuni aspetti negativi rispetto all'aggiunta di rumore.

  • Supponiamo che uno dei tuoi input sia costante, si comporti come un termine di errore, quindi ha un ruolo da svolgere nella previsione ma non aggiunge alcuna informazione. Se si eliminasse completamente questo input, la previsione diventerebbe meno accurata perché i percettroni ottengono una distorsione sbagliata. Questo fa sembrare che sia importante per la previsione anche se non aggiunge informazioni. L'aggiunta di rumore non causerà questo problema. Questo primo punto non è un problema se tutti gli input sono stati standardizzati per avere zero media.

  • Se due input sono correlati, le informazioni su un input forniscono informazioni sull'altro. Un modello potrebbe essere ben addestrato se si utilizzasse solo uno degli input correlati in modo da consentire all'analisi di scoprire che un input non è utile. Se hai appena rimosso uno degli input, quindi, come il primo punto fatto, l'accuratezza della previsione diminuirà molto, il che indica che è importante. Tuttavia, l'aggiunta di rumore non causerà questo problema.


2
Hugh, ho familiarità con farlo rimuovendo la funzione. Quali sono i vantaggi di sostituire la funzionalità con il rumore?
DaL

@Dan Non intendevo che la funzionalità dovesse essere completamente sostituita con il rumore, ma solo che sarebbe stato aggiunto del rumore. La rimozione di una funzione può rendere importanti le funzionalità non importanti se hanno una media diversa da zero o se sono correlate ad altre variabili. Ho modificato la mia risposta per spiegare.
Hugh,

Grazie per il commento. Ma in realtà ho un numero di set di funzioni (input) e molti di essi sono correlati. In questo caso, forse il tempo di calcolo sarà vicino a n! come ho bisogno di considerare le combinazioni. Quindi voglio applicare un modello basato sull'apprendimento profondo che può prendere in considerazione combinazioni di funzioni complesse.
z991,

@ z991 nella regressione lineare multivariabile lo stesso problema può verificarsi con variabili non perfettamente correlate. Spesso introduciamo ciascuna variabile una alla volta o usiamo tutte le variabili e le rimuoviamo una alla volta. Non c'è modo di calcolare semplicemente la migliore combinazione. Se ciò non è stato risolto per la regressione lineare, non troverai una soluzione per NN. Potresti adottare lo stesso approccio e rimuovere le variabili una alla volta ed evitare la n! calcolo.
Hugh,

1
@Enorme Grazie per il commento. Sono d'accordo con te. Ma quello che volevo davvero sapere era come calcolare l'importanza di ogni caratteristica con l'apprendimento profondo, o rete neurale. Dato che usano diverse estrazioni di funzionalità (livelli nascosti), è stato difficile per me analizzare l'importanza della funzione. È possibile calcolare l'intero peso di ciascuna funzione, ma sembra essere piuttosto complesso e richiede molto tempo. Il documento collegato utilizzava un singolo strato lineare e penso che sia una buona idea. Volevo conoscere altri metodi migliori per analizzare l'importanza delle funzionalità sulla rete.
z991,

2

Magari controlla questo documento: https://arxiv.org/pdf/1712.08645.pdf

Usano il dropout per classificare le funzionalità.

... In questo lavoro utilizziamo il concetto di Dropout sul layer delle funzionalità di input e ottimizziamo il corrispondente tasso di dropout in termini di funzionalità. Poiché ogni funzionalità viene rimossa in modo stocastico, il nostro metodo crea un effetto simile a quello della funzione di inseguimento (Ho, 1995) e riesce a classificare le funzioni correlate meglio di altri metodi non di insaccamento come LASSO. Confrontiamo il nostro metodo con Random Forest (RF), LASSO, ElasticNet, classifica marginale e diverse tecniche per ottenere importanza in DNN come Deep Feature Selection e varie euristiche ...


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.