Casi d'uso SVB RBF (vs regressione logistica e foresta casuale)


10

Support Vector Machines con kernel con funzione di base radiale è un classificatore supervisionato per scopi generici.

Mentre conosco le basi teoriche di questi SVM e i loro punti di forza, non sono a conoscenza dei casi in cui sono il metodo preferito. Quindi, esiste una classe di problemi per i quali le SVM RBF sono superiori ad altre tecniche ML? (O in termini di punteggio o altro - come robustezza, facilità di avvio, interpretabilità ecc.)

Sto chiedendo, poiché il mio approccio predefinito è incentrato sulla regressione logistica (forse con alcune interazioni), foresta casuale e un po 'di reti neurali. Nessuno dei miei amici che fanno ML (alcuni sono vincitori di Kaggle) è un utente SVM (ma potrebbe essere un artefatto della mia comunità o i problemi che affrontano).

Risposte:


8

Proverò a rispondere a questa domanda con una combinazione di prove pubblicate, esperienza personale e speculazioni.

A) Prove pubblicate.

L'unico documento che conosco per aiutare a rispondere alla domanda è Delgado et al 2014: abbiamo bisogno di centinaia di classificatori per risolvere i problemi di classificazione del mondo reale? - JMLR che esegue centinaia di diversi algoritmi e implementazioni su 121 set di dati dell'UCI. Scoprono che sebbene RBF SVM non sia l'algoritmo "migliore" (sono foreste casuali se ricordo bene), è tra i primi 3 (o 5).

Se consideri che la loro selezione di set di dati è un "buon campione" di problemi del mondo reale, allora SVM è definitivamente un algoritmo che dovrebbe essere provato su nuovi problemi ma si dovrebbe prima provare la foresta casuale!

I limiti alla generalizzazione di quel risultato sono che i set di dati sono quasi tutti alti e magri (n >> p), non molto sparsi - cosa che suppongo dovrebbe essere più un problema per RF, e non molto grande (sia n che p).

Infine, sempre sulla base delle prove pubblicate, raccomando due siti che confrontano diverse implementazioni di foreste casuali:

B) Esperienza personale.

Credo che documenti come Delgado e tutti molto importanti per la comunità dell'apprendimento automatico, quindi ho cercato di replicare i loro risultati in condizioni diverse. Ho eseguito circa 15 algoritmi diversi su oltre 100 set di dati binari (dal set di set di dati di Delgado). Penso anche di essere stato più attento alla selezione degli iperparametri di loro.

I miei risultati sono che SVM era il "miglior algoritmo" (media rango 4.9). La mia opinione è che SVM abbia passato RF perché il set di dati originale conteneva molti problemi multiclasse - di cui parlerò nella parte speculazione - dovrebbe essere un problema per SVM.

MODIFICA (giu / 16):

Ma la RF è molto più veloce, ed è stato il secondo miglior algoritmo (rango medio 5.6) seguito da gbm (5.8), nnets (7.2) e così via). Non ho provato la regressione logistica standard in questi problemi, ma ho provato una rete elastica (L1 e L2 regolarizzata LR) ma non ha funzionato bene (media rango 8.3) ~

Non ho ancora finito di analizzare i risultati o di scrivere il documento, quindi non posso nemmeno indicare un rapporto tecnico con i risultati. Spero che tra qualche settimana potrò modificare nuovamente questa risposta e indicare un rapporto tecnico con i risultati.

Il documento è disponibile all'indirizzo http://arxiv.org/abs/1606.00930 Dopo l'analisi completa, RF e SVM sono quasi equivalenti in termini di tasso di errore previsto e SVM è il più veloce (con mia grande sorpresa !!). Non sono più così enfatico nel raccomandare la RF (per motivi di velocità).

Quindi la mia esperienza personale è che sebbene SVM possa darti un po 'più di precisione, è quasi sempre una scelta migliore usare una RF.

Anche per problemi più grandi, potrebbe essere impossibile utilizzare un solutore SVM batch (non ho mai usato un solutore SVM online come LASVM o altri).

Alla fine ho usato la regressione logistica solo in una situazione. Stavo facendo un po 'di "intenso" ingegnerizzazione delle caratteristiche su un problema di classificazione delle immagini (come - combinare o meno due diverse descrizioni dell'immagine e la dimensionalità delle descrizioni). E ho usato la regressione logistica per selezionare tra le molte alternative (perché non esiste una ricerca di iperparametri in LR). Una volta stabilite le migliori caratteristiche (secondo LR) abbiamo usato una RF (selezionando i migliori iperparametri) per ottenere il classificatore finale.

C) Speculazione

Non ho mai lavorato seriamente su problemi multiclasse, ma ho la sensazione che SVM non sia così bravo con loro. Il problema non è il problema tra le soluzioni one-vs-one o one-vs-all, ma che tutte le implementazioni che conosco useranno gli stessi iperparametri per tutti i classificatori (OVO o OVA). La selezione degli iperparametri corretti per SVM è così costosa che nessuna delle implementazioni standard che conosco farà una ricerca per ogni classificatore. Suppongo che questo sia un problema per SVM (ma non un problema per RF !!).

Poi di nuovo, per problemi multiclasse andrei direttamente in RF.


Un'ottima risposta! Per caso hai un post sul blog, un quaderno o uno script sulla tua replica dell'esperimento Delgado et al? (Ottimizzare i parametri, le variabili di ridimensionamento sono in genere importanti quanto la scelta di un algoritmo, quindi senza che sia difficile fare forti affermazioni sulla superiorità dell'algoritmo.)
Piotr Migdal

@PiotrMigdal - nessun post su blog / notebook - sto ancora scrivendo il documento. La ricerca dell'iperparametro è stata: RBF C = gamma = , RF mtry = ntrees = da 500 a 3000 per 500. Tutti gli attributi erano normalizzati (media = 0, sd = 1). 2-5,20,25,210,2152-15,2-10.5,2-6,2-1.5,230.5,1,2*p
Jacques Wainer,

0

Non ho i privilegi sufficienti per poter scrivere commenti, quindi fornirò qui i miei input / osservazioni come risposta.

Nella mia esperienza, Support Vector Classifiers (SVC) tende ad essere alla pari o sovraperformare gli altri metodi quando le classi binarie sono bilanciate. Per le classi sbilanciate, SVC tende ad avere prestazioni scarse.

Non mi occupo spesso di problemi multiclasse, ma ho riscontrato buoni risultati con SVC anche per problemi multiclasse.

Un'altra cosa che ho notato è che la maledizione della dimentionalità non sembra influenzare SVC quanto altre tecniche di modellazione. In altre parole, quando aggiungo più termini nel modello, le altre tecniche iniziano a funzionare male sul set di test (o, holdout) rispetto al set di training. Ma non tanto quando uso SVC. Per questo motivo, se la parsimonia del modello non è la tua priorità, SVC potrebbe essere un'opzione migliore in quanto puoi lanciare in molti termini senza sovra-adattarsi come gli altri metodi.

Uno dei problemi che ho con SVC è che non fornisce implicitamente una misura (come la probabilità prevista) per essere in grado di classificare le osservazioni. Potresti usare Platt Scaling (implementato nel pacchetto sklearn.svm in Python), ma ho riscontrato alcune incongruenze. (Posso condividere i dettagli se qualcuno è interessato.)

Non sono sicuro che questo risponda davvero alla tua domanda, ma queste sono le mie osservazioni. Spero che aiuti.


0

RF e (RBF) SVM hanno diverse teorie dietro di loro, ma supponendo che tu abbia abbastanza dati, funzionano altrettanto bene. Entrambi possono apprendere funzioni complesse e gestire bene variabili e valori anomali rumorosi e non informativi.

Se stai cercando di ottenere i migliori risultati per qualcosa come un kaggle, dovresti comunque creare più modelli tra cui RF e SVM.

Nelle impostazioni non Kaggle, potresti considerare quanto sia difficile implementare il modello, metterlo in produzione, fare una previsione, interpretare, spiegarlo a un manager ecc.

SVM (RBF lineare o altamente regolarizzato) sarebbe sicuramente preferito se si dispone di una piccola quantità di dati o si sta affrontando un corso di dimensionalità. Ci sono un paio di ragioni per questo, uno è che è meglio cercare l'iperpiano con il massimo margine invece di una serie di migliori divisioni sulle caratteristiche, inoltre di solito non è necessario un limite complesso perché nello spazio ad alta dimensione ci saranno alcuni iperpiani che può comunque separare i dati. Un altro problema è che la RF è più difficile da sintonizzare (ha più parametri da sintonizzare), quindi hai bisogno di più dati.

Un altro pensiero, la validazione incrociata può essere molto economica e veloce per SVM, in particolare LOOCV. Dato che solo alcuni esempi sono vettori di supporto (non sempre), non è necessario riqualificare il classificatore su ogni piega, ma solo quando i dati che ora si trovano nel set di test erano vettori di supporto prima. Ciò può anche facilitare l'apprendimento online.

Inoltre, potrebbe essere più economico memorizzare vettori di supporto rispetto agli alberi pieni.

Spesso è meglio creare un modello probabilistico rispetto al classificatore. Quindi, prima fai il modello e poi la decisione. In tal caso sarà preferita la regressione logistica. E puoi ancora usare i kernel e la regolarizzazione per farlo funzionare come desideri. Inoltre, non userete la RF per rispondere a domande come: correggendo l'età, lo stile di vita, il sesso e l'educazione, bere alcolici aumenta la possibilità di tingere l'infarto?

Qualche risorsa aggiuntiva che ho trovato interessante: https://www.quora.com/What-are-the-advantages-of-different-classification-algorithms http://videolectures.net/solomon_caruana_wslmw/

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.