Come affrontare i problemi di apprendimento automatico con elevata spazio di ingresso dimensionale?

StackOverflow https://stackoverflow.com/questions/2255833

Domanda

Come si avvicino un situtation quando cerco di applicare qualche algoritmo ML (classificazione, per essere più precisi, in particolare SVM) su alcuni alta di ingresso dimensionale, ed i risultati che ottengo non sono del tutto soddisfacenti?

1, 2 o 3 dati dimensionali possono essere visualizzati, insieme ai risultati del algoritmo, in modo da poter ottenere il blocco di quello che sta succedendo, e avere qualche idea di come aproach il problema. Una volta che i dati sono più di 3 dimensioni, diversi in modo intuitivo giocare con i parametri non sono davvero sicuro di come attaccare esso?

È stato utile?

Soluzione

Che cosa fate per i dati ? La mia risposta: non . SVM sono progettato per gestire dati ad alta-dimensionale. Sto lavorando su un problema di ricerca in questo momento che coinvolge classificazione supervisionata utilizzando SVM. Insieme con la ricerca di fonti su Internet, ho fatto i miei esperimenti sugli effetti della riduzione di dimensionalità prima classificazione. Pre-elaborazione delle funzioni tramite PCA / LDA non aumentava in modo significativo l'accuratezza classificazione della SVM.

Per me, questo rende totalmente senso dal lavoro SVM modo. Sia X una funzione di vettore m-dimensionale. Sia y = Ax dove y è in R ^ x è in R ^ m per n

Ecco un discorso che dibatte l'uso di PCA prima SVM: link

Quello che possono fare è modificare le opzioni di SVM. Ad esempio, con libsvm link , i parametri C e gamma sono di importanza cruciale a classificazione successo. Il faq libsvm, in particolare questa voce link , contiene suggerimenti più utili. Tra questi:

  1. Scala vostre caratteristiche prima della classificazione.
  2. Prova per ottenere classi equilibrate. Se possibile, quindi penalizzare una classe più rispetto agli altri. Vedere più riferimenti su SVM squilibrio.
  3. Controllare i parametri di SVM. Provare molte combinazioni per arrivare alla migliore.
  4. Utilizza il kernel RBF prima. Funziona quasi sempre meglio (computazionalmente parlando).
  5. Quasi dimenticavo ... prima del test, croce validate

EDIT: Vorrei solo aggiungere questo "punto di dati." Recentemente ho fatto un altro esperimento su larga scala utilizzando lo SVM con PCA pre-elaborazione su quattro insiemi di dati esclusivi. PCA non ha migliorato i risultati della classificazione per ogni scelta di ridotta dimensionalità. I dati originali con semplice scala diagonale (per ogni caratteristica, sottrarre media e dividere per deviazione standard) risultati migliori. Non sto facendo alcun conclusione generale - solo la condivisione di questo esperimento. Forse su dati diversi, PCA può aiutare.

Altri suggerimenti

Alcuni suggerimenti:

  • I dati del progetto (solo per la visualizzazione) ad uno spazio inferiore dimensioni (utilizzando PCA o MDS o qualsiasi altra cosa ha un senso per i dati)

  • Cerca di capire il motivo per cui l'apprendimento non riesce. Pensi che overfits? Pensi di avere dati sufficienti? E 'possibile, non ci sono informazioni sufficienti in vostre caratteristiche per risolvere l'operazione che si sta tentando di risolvere? Ci sono modi per rispondere a ciascuna di queste domande, senza la visualizzazione dei dati.

Inoltre, se ci dite che cosa il compito è e ciò che la vostra uscita SVM è, ci possono essere più specifici suggerimenti persone potrebbero fare.

Vorrei affrontare il problema nel modo seguente:

Che cosa si intende per "i risultati che ottengo non sono del tutto soddisfacenti"?

Se il tasso di classificazione sulla formazione dei dati non è soddisfacente, essa implica che o

  • Devi valori anomali nella vostra dati di allenamento (dati che sono erroneamente classificati). In questo caso si può provare algoritmi come RANSAC a che fare con esso.
  • modello (SVM in questo caso) non è adatto per questo problema. Questo può essere diagnozed provando altri modelli (AdaBoost etc.) o l'aggiunta di più parametri per il vostro modello attuale.
  • Il Rappresentanza dei dati non è adatto per il vostro compito di classificazione. In questo caso pre-elaborazione dei dati con la selezione delle funzioni o tecniche di riduzione dimensionalità aiuterebbe

Se il tasso di classificazione sulla test dei dati non è soddisfacente, ciò implica che il modello overfits i dati:

  • In entrambi il modello è troppo complessa (troppi parametri) e ha bisogno di essere vincolato ulteriormente,
  • O ti sei allenato su un training set, che è troppo piccolo e avete bisogno di più dati

Naturalmente può essere una miscela degli elementi di cui sopra. Questi sono tutti metodi "alla cieca" per attaccare il problema. Al fine di ottenere un quadro più chiaro il problema è possibile utilizzare metodi di visualizzazione proiettando i dati in dimensioni inferiori o cercare modelli che sono adatti meglio per il dominio del problema, come si capisce (per esempio, se si conosce il dato è normalmente distribuito può utilizzare MGM per modellare i dati ...)

Si può provare a ridurre la dimensionalità del problema dal PCA o la tecnica simile. Attenzione che APC ha due punti importanti. (1) Si assume che i dati che viene applicato è normalmente distribuite e (2) i dati risultanti perde la sua naturale significato (risultante in un blackbox). Se si riesce a vivere con quello, provare.

Un'altra opzione è quella di provare diversi algoritmi di selezione dei parametri. Dal momento che SVM di erano già menzionati qui, si potrebbe provare l'approccio di Chang e Li ( Caratteristica Ranking Utilizzando lineare SVM ) in cui hanno usato SVM lineare di preselezionare 'caratteristiche interessanti' e poi utilizzati RBF - SVM in base alle caratteristiche selezionate. Se si ha familiarità con arancione, una libreria data mining python , si sarà in grado di codificare questo metodo in meno di un'ora. Si noti che questo è un approccio greedy che, grazie alla sua "greediness" potrebbe sicuro nei casi in cui le variabili di ingresso sono altamente correlati. In tal caso, e se non è possibile risolvere questo problema con la PCA (vedi sopra), si potrebbe desiderare di andare a metodi euristici, che cercano di selezionare le migliori combinazioni possibili di predittori. L'insidia principale di questo tipo di approcci è l'elevato potenziale di overfitting. Assicurarsi di avere un dato mazzo "vergini", che non è stato visto durante l'intero processo di creazione del modello. Metti alla prova il tuo modello su tali dati una sola volta, dopo che si è sicuri che il modello è pronto. Se non si riesce, non utilizzare questi dati una volta di più per convalidare un altro modello, si dovrà trovare un nuovo set di dati. In caso contrario, non sarà possibile essere sicuri che non avete OVERFIT una volta di più.

Elenco dei lavori selezionati sulla selezione dei parametri: Selezione funzioni per i dati genomici microarray ad alta dimensionali

Oh, e un'altra cosa su SVM. SVM è una scatola nera. Faresti meglio a capire che cosa è il meccanismo che genera i dati e modellare il meccanismo e non i dati. D'altra parte, se questo sarebbe possibile, molto probabilmente non saremmo qui questa domanda (e io non sarei così amareggiato overfitting).

Elenco dei lavori selezionati sulla selezione dei parametri

  1. Selezione funzioni per genomica high-dimensionale dati microarray
  2. wrapper per la selezione delle funzioni sottoinsieme
  3. selezione dei parametri per l'ottimizzazione sciame di particelle
  4. ho lavorato nel laboratorio che ha sviluppato questo metodo stocastico per determinare, in silico, il farmaco come il personaggio di molecole

Se non sbaglio, si sta cercando di vedere quali parametri la SVM ti dà il miglior risultato. Il tuo problema è il modello / curve fitting. Ho lavorato su un paio problema simile di anni fa. Ci sono tonnellate di biblioteche e algos a fare lo stesso. Ho usato algoritmo Newton-Raphson s 'e una variazione di algoritmo genetico per adattare la curva .

Genera / congettura / ottenere il risultato che si sta sperando per, attraverso esperimento mondo reale (o se si sta facendo classificazione semplice, basta farlo da soli). Confrontate questo con l'uscita del SVM. I algos ho menzionato in precedenza ribadisce questo processo fino il risultato del modello (SVM in questo caso) in qualche modo corrisponde ai valori attesi (si noti che questo processo sarebbe voluto del tempo basato il problema di formato / dati .. ci sono voluti circa 2 mesi per me su un nodo 140 beowulf cluster).

Se si sceglie di andare con Newton-Raphson di, questo potrebbe essere un buon punto di partenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top