SVM di una classe vs. SVM esemplare


16

Capisco che le SVM di una classe (OSVM) sono state proposte tenendo conto dell'assenza di dati negativi e che cercano di trovare limiti di decisione che separano un insieme positivo e un punto di ancoraggio negativo, affermano l'origine.

Un'opera del 2011 propone gli SVM Exemplar (ESVM) che addestra un "classificatore unico per categoria" che afferma di essere diverso dagli OSVM, in quanto gli ESVM non "richiedono di mappare gli esempi in uno spazio di funzionalità comune su cui può essere un kernel di somiglianza calcolato". Non capisco bene cosa significhi e in che modo le ESVM differiscano dalle OSVM. E quindi, in cosa differiscono? E come si evita questo calcolo del kernel di somiglianza negli ESVM?

Risposte:


20

(Potresti voler prima guardare la "tabella" sotto)

Cominciamo con le macchine "classiche" di supporto vettoriale. Questi imparano a discriminare tra due categorie. Raccogli alcuni esempi di categoria A, alcuni di categoria B e li passi entrambi all'algoritmo di addestramento SVM, che trova la linea / piano / iperpiano che separa meglio A da B. Questo funziona - e spesso funziona abbastanza bene - quando vuoi distinguere tra classi ben definite e reciprocamente esclusive: uomini contro donne, le lettere dell'alfabeto e così via.

Tuttavia, supponiamo di voler invece identificare "A". Potresti considerare questo come un problema di classificazione: come faccio a distinguere "A" da "non-A". È abbastanza facile raccogliere un set di addestramento composto da fotografie di cani, ma cosa dovrebbe andare nel tuo set di addestramento di non cani? Dal momento che ci sono un numero infinito di cose che non sono cani, potresti avere difficoltà a costruire un set di addestramento completo e tuttavia rappresentativo di tutte le cose non canine. Invece, potresti prendere in considerazione l'utilizzo di un classificatore di una classe. Il classificatore tradizionale a due classi trova un piano (iper) che separa A da B. L'SVM a una classe trova invece la linea / piano / iperpiano che separa tutti i punti in classe (le "A" dall'origine) ;

Il "sistema" SVM di Ensemble è in realtà una raccolta di molte "subunità" SVM di due classi. Ogni subunità viene addestrata usando una singolaesempio positivo per una classe e un'enorme raccolta di esempi negativi per l'altra. Pertanto, invece di discriminare i cani rispetto agli esempi non-cane (SVM standard a due classi), o i cani rispetto all'origine (SVM a una classe), ogni subunità discrimina tra cani specifici (ad es. "Rex") e molti non-cani esempi. Le SVM delle singole subunità sono addestrate per ogni esempio di classe positiva, quindi avresti una SVM per Rex, un'altra per Fido, un'altra per il cane del tuo vicino che abbaia alle 6 del mattino, e così via. I risultati di questi SVM di subunità sono calibrati e combinati per determinare se un cane, non solo uno degli esempi specifici, appare nei dati del test. Immagino che potresti anche pensare alle singole sottonitelle in qualche modo come SVM di una classe, in cui lo spazio delle coordinate viene spostato in modo che il singolo esempio positivo risieda all'origine.

In sintesi, le differenze chiave sono:

Dati di addestramento

  • SVM a due classi: esempi positivi e negativi
  • SVM a una classe: solo esempi positivi
  • "Sistema" SVM di ensemble: esempi positivi e negativi. Ogni subunità è addestrata su un singolo esempio positivo e molti esempi negativi.

Numero di macchine

  • SVM a due classi: uno
  • Una classe SVM: una
  • "Sistema" SVM di ensemble: molti (una macchina subunità per esempio positivo)

Esempi per classe (per macchina)

  • SVM a due classi: molti / molti
  • SVM di una classe: molti / uno (fissato all'origine)
  • Ensemble "sistema" SVM: molti / molti
  • "Unità secondaria" SVM dell'ensemble: una / più

Post produzione

  • SVM a due classi: non necessario
  • SVM a una classe: non necessario
  • Ensemble SVM: necessario per fondere l'output di ogni SVM in una previsione a livello di classe.

Postscript: ti era stato chiesto cosa intendessero per "[altri approcci] richiedono la mappatura degli esempi in uno spazio di funzionalità comune su cui è possibile calcolare un kernel di somiglianza". Penso che significhino che un tradizionale SVM a due classi opera presupponendo che tutti i membri della classe siano in qualche modo simili, e quindi vuoi trovare un kernel che metta grandi danesi e bassotti l' uno vicino all'altro, ma lontano da tutto il resto. Al contrario, il sistema SVM dell'ensemble lo elude chiamando qualcosa come un cane se è sufficientemente grande come un danese o un bassotto o un barboncino, senza preoccuparsi della relazione tra quegli esemplari.


Grazie per l'ottima e completa risposta. Giusto per essere chiari, in alcuni posti intendi davvero "Ensemble" di Exemplar SVMs, ma in altri, solo "Exemplar" SVM? Penso che sia giusto, ci dovrebbe essere un confronto con (1) un SINGOLO OSVM con un SINGOLO ESVM o (2) ENSEMBLE di OSVM con ENSEMBLE di ESVM.
Bjou

Spero che non sia troppo fuori tema chiedere quanto sia generalizzato a più classi? Se ho gatti, cani e uccelli, ciò rende l'esvm richiede un "elemento" SVM per fido vs ogni gatto E un "elemento" SVM per fido vs ogni uccello? Se avessi 10 punti dati per ognuna delle 3 categorie significherebbe che ho 20 elementi SVM per "cane" o un insieme composto da 200 elementi? E se avessi 300 punti dati e 20 dimensioni, o 50k punti dati e 50k dimensioni. Se avessi creato una foresta casuale di SVM, avrei potuto usare sottoinsiemi casuali per ridurre l'impatto della "maledizione della dimenionalità"?
EngrStudent - Ripristina Monica l'

@bjou, ero un po 'sciatto con la terminologia ESVM, quindi sono tornato indietro e l'ho ripulito. Immagino che potresti pensare a una "subunità" del sistema ESVM come a un OSVM, tranne per il fatto che il sistema di coordinate è stato ricentrato in modo che l'esempio positivo risieda all'origine.
Matt Krause,

1
@EngrStudent, in realtà si generalizza davvero bene. Nel documento, usano l'attività Pascal VOC, che ha ~ 20 categorie. Per estendere il nostro esempio animale, avresti una subunità per "Fido" vs. (tutti gli uccelli, i gatti e i pesci), un'altra subunità per "Rex" vs. tutti i non-cani e così via per ogni cane. Per gli uccelli, dovresti allenare "Tweety" vs. (tutti i gatti, cani, pesci), "Polly" vs. tutti i non-uccelli, e così via. Ci sarebbe anche una subunità per ciascun esempio di gatto e pesce, addestrata rispettivamente contro tutti i non gatti e non pesci. Si finisce con 1 SVM per esempio etichettato, indipendentemente dal numero di classi.
Matt Krause

Sembra un cugino di potenziamento (nel senso di alberi potenziati con gradiente). L'ensemble è ponderato per l'errore di output o uniformemente ponderato?
EngrStudent - Ripristina Monica l'

2

In breve, il modello ESVM è un insieme di SVM addestrato per distinguere ogni singolo elemento del set di addestramento da tutto il resto, mentre OSVM è un insieme di SVM addestrato per distinguere ogni sottoinsieme di elementi del training che appartengono a una classe. Quindi, se nel set di addestramento sono presenti 300 esempi di gatti e 300 di cani, ESVM produrrà 600 SVM, ciascuno per un animale domestico mentre OSVM produrrà due SVM (il primo per tutti i gatti, il secondo per tutti i cani).

In questo modo, ESVM non ha bisogno di trovare uno spazio in cui l'intera classe si raggruppa ma piuttosto uno spazio in cui questo singolo elemento è un valore anomalo, che è probabilmente più semplice e porta ad un'alta precisione. Si dice che il richiamo sia fornito dall'ensemble.

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.