vendredi 28 mars 2008

Support vector machine (SVM) multi-classes

Les machines à vecteurs de support (ou machine à vaste marge) ont été définies à l’origine pour les problèmes à 2 classes c.-à-d. les cas où la variable à prédire prend 2 modalités (les positifs contre les négatifs). Notre composant SVM ne traite que ce type de problème d’ailleurs.

Pour passer à des problèmes multi-classes, il faut proposer de nouvelles solutions. TANAGRA fait appel au module externe LIBSVM (libre et open source) dans ce cas. J’y vois essentiellement 2 avantages : on dispose d’une solution directe, déjà débuguée, leur bibliothèque est largement diffusée ; LIBSVM, avec un algorithme ad hoc, propose un niveau de performances (rapidité) que je n’ai jamais pu approcher avec mes propres implémentations (dérivées de l’algorithme de Platt, 1998).

Notre tutoriel traite d’un problème à deux classes. Mais le composant C-SVC que nous présentons peut directement traiter un problème multi-classes, sans qu’aucune préparation des données ne soit nécessaire.

Dans notre exemple, on ne peut que s’extasier devant les performances de l’implémentation, quelques secondes suffisent pour produire un classifieur sur un jeu de données comptant une centaine d’observations et plusieurs milliers de variables. Ce problème de classement de protéines est par ailleurs traité dans un autre didacticiel où nous utilisons une approche différente, basée sur une construction de variables à l’aide de l’algorithme NIPALS.

Mots clés : SVM, support vector machine, machine à vaste marge, SVM multi-classes, classement de protéines
Composants : Supervised Learning, C-SVC, Bootstrap
Lien : fr_Tanagra_CSVC_LIBSVM.pdf
Données : Tanagra_Nipals.zip
Référence : C.C. Chang, C.J. Jin, « LIBSVM – A library for Support Vector Machine »