SVM può eseguire l'apprendimento in streaming di un esempio alla volta?


33

Ho un set di dati in streaming, gli esempi sono disponibili uno alla volta. Avrei bisogno di fare una classificazione multi classe su di essi. Non appena ho fornito un esempio di formazione al processo di apprendimento, devo scartare l'esempio. Allo stesso tempo, sto anche usando l'ultimo modello per eseguire previsioni su dati senza etichetta.

Per quanto ne so, una rete neurale è in grado di eseguire l'apprendimento in streaming alimentando esempi uno alla volta ed eseguendo la propagazione in avanti e la propagazione all'indietro sull'esempio.

Un SVM può eseguire lo streaming imparando un esempio alla volta e scartare immediatamente l'esempio?


2
La risposta accettata dovrebbe essere aggiornata. Sembra che al momento ci siano diverse librerie che supportano algoritmi di apprendimento online SVM. Vowpal wabbit ha una riduzione per svm , altre alternative sono: scikit-learn, sofia-ml e il pacchetto kernlab di R ha alcune opzioni per l'apprendimento online.
Marbel,

Risposte:


22

L'impostazione di streaming nell'apprendimento automatico si chiama "apprendimento online". Non esiste una macchina vettoriale di supporto esatta nell'impostazione online (poiché la definizione della funzione obiettivo è intrinsecamente per l'impostazione batch). Probabilmente la generalizzazione più semplice dell'SVM all'impostazione online sono algoritmi passivi-aggressivi. Il codice è qui http://webee.technion.ac.il/people/koby/code-index.html e un documento associato è qui http://eprints.pascal-network.org/archive/00002147/01/CrammerDeKeShSi06. PDF

L'idea di base è che si ricevono dati come coppie con punti di query xR dove k(X,y)Rd×[K]XRKWtRK×dtXty^t=WXtWt


1
(+1) Benvenuto nel sito, Mark.
cardinale

11

Ho sempre trovato che il framework degli aggiornamenti impliciti (che include gli algoritmi passivi-aggressivi citati in un'altra risposta qui) è inutilmente più complesso del framework degli aggiornamenti espliciti (per non parlare del fatto che gli aggiornamenti impliciti possono essere molto più lenti di quelli espliciti a meno che un è disponibile una soluzione in formato chiuso per l'aggiornamento implicito).

L'importanza di aggiornamenti online ponderati sull'importanza è un esempio di algoritmo di aggiornamento esplicito all'avanguardia che è più semplice, più veloce e più flessibile (che supporta più funzioni di perdita, penalità multiple, apprendimento sensibile ai costi ecc.) Rispetto alle controparti implicite. Il documento tratta solo modelli lineari (svm lineare corrisponde al caso della funzione di perdita della cerniera con penalità quadratica)

Poiché è necessaria una classificazione multi-classe, un approccio consiste nell'utilizzare la funzionalità "riduzioni" di vowpal wabbit (costruita sulla parte superiore dell'approccio dal documento) che purtroppo non è ben documentata.


8

LASVM è una delle varianti di apprendimento online più popolari di SVM.

Le SVM lineari possono anche essere addestrate utilizzando la discesa gradiente stocastica, proprio come qualsiasi modello lineare.


Giusto per chiarire le cose, non è possibile addestrare alcun modello lineare usando SGD, bisogna assumere almeno una forma particolare dell'obiettivo (funzione di perdita additiva)
lejlot

6

Fare riferimento al documento SVM Incremental Learning, Adaptation and Optimization , che ha proposto un SVM online per la classificazione binaria.

Il codice di cui sopra può essere trovato qui . Nel codice vengono introdotti due modi di formazione online:

  1. addestrare SVM in modo incrementale su un esempio alla volta chiamando svmtrain(), e
  2. eseguire l'addestramento in lotti, incrementando contemporaneamente tutti gli esempi di addestramento nella soluzione chiamando svmtrain2().

Tornando alla tua domanda, la risposta è ovviamente per l'apprendimento in streaming di un esempio alla volta. E il codice può anche gestire il disimparare (scartare) un esempio, ovvero la stima esatta e approssimativa dell'errore di esclusione (LOO) - la stima esatta dell'errore LOO può essere calcolata in modo efficiente disimparando esattamente un esempio alla volta e testando il classificatore su l'esempio.


(+1) Benvenuti nel nostro sito!
whuber

0

L'apprendimento online con kernel illustra l'apprendimento online nelle impostazioni generali del kernel.

Estratto dall'estratto -

" Gli algoritmi basati su kernel come le macchine vettoriali di supporto hanno ottenuto un notevole successo in vari problemi nell'impostazione batch in cui tutti i dati di addestramento sono disponibili in anticipo. Le macchine vettoriali di supporto combinano il cosiddetto trucco del kernel con l'idea del grande margine. scarso uso di questi metodi in un ambiente online adatto per applicazioni in tempo reale. In questo documento consideriamo l'apprendimento online in uno spazio del kernel riproduttivo Hilbert. Considerando la discesa gradiente stocastica classica all'interno di uno spazio di caratteristiche e l'uso di alcuni trucchi diretti , sviluppiamo algoritmi semplici e computazionalmente efficienti per una vasta gamma di problemi quali classificazione, regressione e rilevamento di novità. "

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.