Quali algoritmi di machine learning sono utili per stimare quali funzionalità sono più importanti?


12

Ho dati con un numero minimo di funzionalità che non cambiano e alcune funzionalità aggiuntive che possono cambiare e avere un grande impatto sul risultato. Il mio set di dati è simile al seguente:

Le caratteristiche sono A, B, C (sempre presente) e D, E, F, G, H (a volte presenti)

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
...

Voglio prevedere il valore del risultato e la combinazione di parametri aggiuntivi è molto importante per determinare il risultato. In questo esempio, la presenza di E e F porta a un grande risultato, mentre la presenza di E e G no. Quali algoritmi o tecniche di machine learning sono utili per catturare questo fenomeno?


Per "talvolta presente", vuoi dire che conosci il loro valore solo qualche volta? O che sono noti per non avere un ruolo nella maggior parte dei casi? O forse qualcos'altro?
David J. Harris,

@ DavidJ.Harris Per "a volte presente", intendo che il particolare esempio di addestramento non possiede la proprietà. È come se fosse uguale a zero. Nel mio problema, tutte le mie funzionalità saranno numeri positivi in ​​un determinato intervallo (ad esempio, da 5 a 15 o da 100 a 1000).
Benjamin Crouzier,

1
potrebbe essere utile guardare questo link eren.0fees.net/2012/10/22/…
erogol

Risposte:


14

Questa è una delle principali aree di ricerca in Machine Learning ed è nota come Selezione funzionalità .

In generale, l'unico modo per dire quale sia il miglior sottoinsieme di funzionalità (per l'input in alcuni modelli predittivi che possono combinarli) è provare tutti i possibili sottoinsiemi. Questo di solito è impossibile, quindi le persone cercano di campionare lo spazio dei sottoinsiemi di funzionalità con varie euristiche (vedi l'articolo per alcuni approcci tipici).


3

Dalla mia comprensione, stai cercando una misura di importanza variabile. Questi sono disponibili in diversi gusti basati su diversi approcci teorici, ma tutti hanno forti legami con i metodi utilizzati per ottimizzare l'algoritmo di cui stai parlando. In generale, ogni algoritmo di apprendimento automatico avrà un metodo di ottimizzazione canonica; propagazione posteriore per reti neurali, ottimizzazione minima sequenziale per SVM, vari criteri di informazione e test di significatività statistica per gli alberi decisionali, incluso il significato chi quadrato o l'impurità gini. Naturalmente, altri metodi di ottimizzazione più nuovi sono spesso proposti per ciascuno degli algoritmi.

Questi metodi di ottimizzazione per ciascun algoritmo definiscono essenzialmente l'importanza variabile per il modello a portata di mano. In sostanza, stai cercando un'approssimazione o una rappresentazione interpretabile dei risultati di quella fase di ottimizzazione che l'algoritmo sta intraprendendo. Tuttavia, questo è problematico per diversi motivi.

  1. La difficoltà di determinare l'influenza di una determinata variabile sulla selezione della forma del modello, dato che la selezione è spesso un processo stocastico stesso. Le variabili influenzano la selezione del modello in una certa misura, in modo che anche se una variabile non è importante per la previsione finale in un modello , potrebbe aver modellato in modo cruciale la forma del modello stesso. Dato che la generazione del modello stesso è spesso stocastica (ottimizzata utilizzando l'ottimizzazione dello sciame di particelle o un metodo di insaccamento ecc.), È difficile capire esattamente come una determinata variabile possa aver modellato la sua forma.

  2. La difficoltà di estrarre l'importanza di una singola variabile dato che può essere importante solo in congiunzione o interazione con un'altra variabile.

  3. Alcune variabili possono essere importanti solo per alcune osservazioni. La mancanza di importanza su altre osservazioni può confondere la misurazione dell'importanza generale calcolando la media di una differenza reale.

È anche difficile ottenere una metrica immediatamente interpretabile per importanza variabile esattamente come definita dal modello, in quanto potrebbe non produrre un singolo numero (specialmente nel caso del bagging). Invece, in questi casi esiste una distribuzione di importanza per ogni variabile.

Un modo per superare questi problemi potrebbe essere quello di usare la perturbazione. Questo è un modo per analizzare il modello finale aggiungendo rumore casuale alle variabili e quindi controllando come ciò influisce sui risultati. Il vantaggio è che ti permette di trovare quali variabili sono empiricamente più importanti attraverso la simulazione, rispondendo alla domanda su quali variabili distruggerebbero maggiormente la previsione se rimosse. Lo svantaggio è che esiste una buona probabilità che, anche se le variabili fossero rimosse / perturbate, il modello (se ri-addestrato) potrebbe usare le altre variabili per ricostruirne l'effetto, il che significa che la misura dell '"importanza variabile" che si ottiene deriva ancora solo veramente indica l'importanza nel modello addestrato, ma non l'importanza generale in tutti i possibili modelli.


3

Come menziona @Bitwise, la selezione o l'estrazione di funzionalità è una vasta area di ricerca in sé e ci sono innumerevoli modi per farlo.

Le altre risposte sono tutte valide secondo me, ma alla fine probabilmente ti piacerà di più, e scegli il metodo che è il più intuitivo per te e che capisci il meglio. Vorrei ancora aggiungere due possibili opzioni.

La regressione multipla è probabilmente la tecnica più antica. L'idea è di adattare un modello per descrivere la risposta dei predittori e mantenere solo i predittori che hanno un grande impatto sulla risposta (un grande coefficiente di proporzionalità). Qui si sarebbe probabilmente dovuto ricodificare l'assenza di D, E, F e G come D=0, E=0, F=0, G =0o qualcosa del genere.

Un'altra tecnica che non ha mai guadagnato la popolarità che merita è l'analisi di co-inerzia (una variante dell'analisi canonica ). Per quanto ne so, non esiste alcuna implementazione e dovresti ricominciare da capo ( per esempio). È un metodo lineare che trova la migliore combinazione lineare di funzionalità che corrisponde ai tuoi risultati. Questo post sul blog mostra un esempio di come può essere utilizzato.


2

Uso Information Gain (noto anche come Informazioni reciproche). Io e il mio consulente utilizziamo regolarmente l'approccio descritto in questo documento Cohen, 2008 per l'analisi delle funzionalità per la classificazione di SVM.


2

Le foreste casuali potrebbero essere molto utili per quello che vuoi fare. Il pacchetto randomForest per R ha una funzione che calcola 2 misure di importanza. Ha anche la capacità di creare alcuni grafici di dipendenza parziale in modo da poter ispezionare visivamente l'effetto marginale che il predittore potrebbe avere sulla risposta.


1

Sono cattivo qui, ma per un motivo. Hai pensato di sostituire le osservazioni non uniformi con una variabile indicatore presente | not_present? Dalla tua descrizione sembra che questo valore dell'indicatore sia una caratteristica valida poiché la presenza dei fattori da D a H non è informativa: cioè la loro presenza indica solo risultati più grandi.

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.