SVM vs LS-SVM: chi vince?

A questa frequente domanda di chi approccia al mondo delle SVM, riporta uno stralcio di risposta di uno degli autori delle LS-SVM (Suykens):

What’s the advantage and disadvantage of LS-SVM compared with standard SVM ?
One of the main motivations of LS-SVM approaches is to make SVM methodologies more generally applicable (trying to simplify in order to be able to extend) in a similar spirit as classical neural networks (such as MLPs and RBF networks which can be used in classifiers, feedforward and recurrent nets, unsupervised learning, control etc.)
Primal-dual LS-SVM formulations have been given e.g. to classifiers (related to kernel FDA), to function estimation (equivalent to RN, GP, RKHS, KRR), weighted versions for robust estimation, Bayesian inference and probabilistic interpretations, kernel PCA,PLS,CCA, recurrent networks, optimal control. A version which is very suitable for on-line and fast adaptive signal processing, large scale problems and transductive inference is `fixed-size LS-SVMs’ (which are sparse approximation models like standard SVMs) and make use of Nystrom approximation (as known in the GP area).
In this way we aim at creating a unifying framework and interdisciplinary avenue of primal-dual modelling thinking in relation to areas as statitics, signal processing, datamining, systems and control, signal processing, machine learning, pattern recognition, mathematics and many other application areas. In other words trying to get the big picture…

Varianti delle SVM

Già da qualche tempo, durante le ricerche svolte intorno al Support Vector Clustering, ho indagato al fine di trovare delle ottimizzazioni sempre più spinte per la risoluzione del problema di addestramento di una SVM. Questo mi ha fatto inizialmente incappare nelle LS-SVM

una riformulazione delle SVM che si libera dall’onere della risoluzione di un problema di programmazione quadratica per l’addestramento, sostituendolo con la risoluzione di un sistema KKT lineare.

Dopo il seminario tenuto dal prof. Alessandro Verri nella mia univesità, riguardo la Regolarizzazione e l’apprendimento statistico, la curiosità verso le SVM “più leggere” è aumentata. Ciò mi ha portato a scoprire almeno altre due varianti interessanti di SVM che si svincolano dal problema di programmazione quadratica: le Langrangian SVM e le Core Vector Machines

Le seconde sembrano basarsi su algoritmi di approssimazione, ottenendo comunque degli ottimi risultati e soprattutto raggiungendo delle ottime prestazioni di training su “very large datasets”.

Posted in SVM

Inizio sviluppo SVC software

Basandomi sulla libSVM, ho iniziato lo sviluppo del software per SVC.

Devo dire che la disponibilità dei vari ricercatori nel fornire il codice da loro usato per effettuare i test è stata abbastanza scarna, a partire da Vapnik et al. e passando tra tutti coloro che negli ultimi anni hanno lavorato per eliminare il collo di bottiglia di questo approccio (cluster labeling).

Soltanto gli autori di

mi hanno gentilmente risposto inviandomi il codice (putroppo Matlab) da loro usato per i test.

Sto perciò sviluppando questo software (che avrei dovuto fare comunque) con una visione più ampia in mente. Per ora la struttura è essenziale e fortemente legata a libSVM:

Classi fondamentali

  • una classe astratta AbstractTrainer, che fornisce la fornisce l’interfaccia per l’implementazione della parte di training per il Support Vector Clustering.
  • una classe AbstractLabeler, che fornisce la fornisce l’interfaccia per l’implementazione della parte di cluster labeling per il SVC

Prime concretizzazioni

  • una classe OneClassTrainer, che implementa il training per il SVC utilizzando la One-class classification della libSVM
  • [da terminare] una classe CGLabeler, che implementa nel modo più banale (e inefficiente) l’algoritmo cluster labeling proposto in

Questa struttura permette di implementare agevolmente le diverse versioni di cluster labeling proposte in letteratura e al contempo di sviluppare diversi trainer, compreso quello per la formulazione Least Squares delle SVM, magari implementando l’algoritmo proposto in

Support Vector Clustering e One-class classification

Alla base del training delle SVM nel caso di clustering troviamo la One-class classification. Ci sono vari metodi per effettuare la one-class classification (anche conosciuta come Distribution Estimation, Outlier Detection, Novelty Detection, Concept Learning) con le SVM, come la nu-SVM di Schölkopf o il SVDD di Tax

Così come formulato da Vapnik et al. in

il training delle SVM per il clustering viene fatto tramite SVDD.

In

è però dimostrato che, usando il kernel Gaussiano, SVVD e nu-SVM danno luogo alle stesse soluzioni (stessa superficie di decisione), laddove si abbia la medesima larghezza del kernel e C=1/nu*N, dove C è il parametro di soft-constraint in SVDD, nu è il parametro introdotto da Schölkopf per le nu-SVM, N è il numero di oggetti.

È per questo motivo che la One-class classification implementata in libSVM

può essere usata come algoritmo di training nel caso di clustering con SVM, poiché il Support Vector Clustering presuppone l’utilizzo di un kernel Gaussiano.

La libreria libSVM fornisce tuttavia gli strumenti necessari per implementare agevolmente anche SVDD, qualora lo si desideri.

SMO per Unsupervised Learning

Sequential Minimal Optimization è l’algoritmo per la risoluzione del problema di programmazione quadratica per l’addestramento di una SVM. Esiste una variante di questo algoritmo per il caso non supervisionato.

Riferimenti:

Molto probabilmente libSVM implementa già tale variante; infatti libSVM supporta la one-class classification (distribution estimation) e per tale tipo di problema è necessaria la stessa variante di SMO.