(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.