Che cosa fai ai dati ? La mia risposta: nulla. Gli SVM sono progettati per il per gestire dati ad alta dimensione. Sto lavorando a un problema di ricerca in questo momento che coinvolge la supervisione della classificazione usando SVM. Insieme alla ricerca di fonti su Internet, ho fatto i miei esperimenti sull'impatto della riduzione della dimensionalità prima della classificazione. La pre-elaborazione delle funzionalità mediante PCA/LDA non ha aumentato in modo significativo la precisione di classificazione dell'SVM.
Per me, questo ha assolutamente senso dal modo in cui funzionano gli SVM. Sia x un vettore di caratteristiche m-dimensionale. Sia y = Axe dove y è in R^n e x è in R^m per n < m, cioè y è x proiettato su uno spazio di dimensione inferiore. Se le classi Y1 e Y2 sono separabili linearmente in R^n, allora le corrispondenti classi X1 e X2 sono separabili linearmente in R^m. Pertanto, i sottospazi originali dovrebbero essere "almeno" separabili come le loro proiezioni su dimensioni inferiori, cioè, in teoria, il PCA non dovrebbe essere d'aiuto.
Qui è una discussione che dibatte l'uso di PCA prima SVM: link
Che cosa si può fare è modificare le opzioni di SVM. Ad esempio, con libsvm link, i parametri C e gamma sono di importanza cruciale per la classificazione del successo. Libsvm faq, in particolare questa voce link, contiene ulteriori suggerimenti utili. Tra questi:
- Ridimensiona le tue caratteristiche prima della classificazione.
- Cerca di ottenere lezioni bilanciate. Se impossibile, penalizza una classe più dell'altra. Vedi più riferimenti sullo squilibrio SVM.
- Controllare i parametri SVM. Prova molte combinazioni per arrivare al migliore.
- Utilizzare innanzitutto il kernel RBF. Funziona quasi sempre meglio (a livello computazionale).
- Quasi dimenticato ... prima del test, cross validate!
MODIFICA: Vorrei solo aggiungere questo "punto dati". Recentemente ho fatto un altro esperimento su larga scala utilizzando il SVM con preelaborazione PCA su quattro set di dati esclusivi. PCA non ha migliorato i risultati della classificazione per nessuna scelta di dimensionalità ridotta. I dati originali con semplice ridimensionamento diagonale (per ogni caratteristica, sottrazione media e divisione per deviazione standard) hanno ottenuto risultati migliori. Non sto facendo nessuna conclusione generale - condivido solo questo esperimento. Forse su dati diversi, PCA può aiutare.
fonte
2010-02-13 00:08:11
La questione non era riguardo alla riduzione della dimensionalità, l'autore si è lamentato solo di non essere riuscito a prendere confidenza con i dati multidimensionali. Ma comunque. Il fatto che PCA non abbia aiutato nel tuo caso non significa che sia inutile. Prova a recuperare i dati artificiali: i punti separabili in una dimensione. Aggiungi un po 'di rumore per ottenere dati a 50 dimensioni. L'iperpiano del margine massimo è probabile che si allontani. –
Penso che la mia risposta, nella sua interezza, faccia la domanda. Ma riguardo alla dichiarazione, "aggiungi un po 'di rumore per ottenere dati a 50 dimensioni", aggiungendo * rumore * non è lo stesso che aggiungere * funzioni *. Se si concatenano 49 funzioni contenenti il rumore non correlato all'unica caratteristica significativa da cui due classi sono separabili, SVM continuerà a separare le classi nello spazio 50-dimensionale con successo come nello spazio monodimensionale. Non c'è alcun dubbio a riguardo. –
Steve, ho chiesto a un professore di questo problema. Hai certamente ragione che la riduzione della dimensionalità non aiuta a separare le classi, ma può comunque aiutare a migliorare il potere discriminante di un classificatore. Inoltre, PCA non è il metodo migliore qui poiché non tiene conto della struttura delle classi. La macchina vettoriale di rilevanza potrebbe essere più idonea: http://en.wikipedia.org/wiki/Relevance_Vector_Machine –