Nous avons développé une interface graphique simple pour notre implémentation de l’algorithme SVM, appelée SVM Classifier. Cette interface permet aux utilisateurs novices de télécharger le logiciel pour une installation locale et d’appliquer facilement un algorithme d’apprentissage automatique sophistiqué à leurs données. Nous avons mis en place une application accessible au public qui permet aux utilisateurs de SVM d’effectuer l’entraînement, la classification et la prédiction de SVM. Pour plus de détails sur l’utilisation du logiciel, un échantillon de données et des explications sur les algorithmes sous-jacents, nous renvoyons les lecteurs au site Web et aux références qui y sont mentionnées. Les utilisateurs de SVM pourraient également être intéressés par un certain nombre d’autres implémentations de SVM sous licence qui ont été décrites précédemment, notamment LIBSVM .
Nous avons utilisé les algorithmes SVM mis en œuvre par l’équipe Libsvm , comme noyau. Afin de maximiser la compatibilité multiplateforme, SVM Classifier est implémenté en java en utilisant les bibliothèques swing standard (Figure 1).
Les outils de construction utilisés sont l’open source, le multiplateforme Apache Ant et l’édition gratuite de Borland JBuilder 2005 Foundation. Bien que développé sur WinXP OS, SVM Classifier a été testé avec succès sur Linux et d’autres plateformes Windows, et fonctionnera sur Mac OS9 avec l’extension Swing. Les utilisateurs sont en mesure d’exécuter SVM Classifier sur n’importe quel ordinateur avec java 1.4 runtime ou une version supérieure.
L’application a deux cadres, la classification et le cadre de prédiction. Dans les deux cadres, le format de fichier de données peut être importé soit en tant que format de fichier de données « étiqueté », soit en tant que format de fichier de données « délimité » (Figure 2 et Figure 3).
Dans le cadre de classification, l’utilisateur créera un modèle à partir du jeu de données d’entraînement pour la classification (C-SVC, nu-SVC), la régression (epsilon-SVR, nu-SVR) et l’estimation de la distribution.
Dans ce cadre, l’utilisateur est en mesure d’importer l’ensemble de données d’entraînement dans l’application, de sélectionner le chemin pour enregistrer le fichier du modèle, de sélectionner le type de SVM et de noyau approprié et de créer un modèle pour l’ensemble de données. Le fichier modèle peut être utilisé ultérieurement à des fins de prédiction. Il est également possible de choisir la validation croisée. La technique de validation croisée (CV) est utilisée pour estimer la précision de chaque combinaison de paramètres dans la plage spécifiée et nous aide à décider des meilleurs paramètres pour le problème de classification.
Dans le cadre de la prédiction, le modèle sera appliqué aux données de test pour prédire la classification des données inconnues. Nous avons également prévu un outil de visualisation des données bidimensionnelles accessible depuis la barre de menu de visualisation (Figure 4).
Type de noyau
K(x i , x j ) = Φ(x i )TΦ(x j ) est appelée la fonction noyau. Ici, les vecteurs de formation x i sont mappés dans un espace de dimension supérieure (probablement infinie) par la fonction Φ. Il existe les quatre noyaux de base suivants : linéaire, polynomial, fonction de base radiale (RBF) et sigmoïde :
-
Linéaire : K(x i , x j ) = x i Tx j
-
Polynomial : Le noyau polynomial de degré d est de la forme
K(x i , x j ) = (x i , x j )d
-
RBF : Le noyau gaussien, connu aussi comme la fonction de base radiale, est de la forme
Où σ représente une largeur de fenêtre
-
Sigmoïde : Le noyau sigmoïde est de la forme
K(x i , x j ) = tanh(k(x i x j ) + ϑ)
Lorsque le noyau sigmoïde est utilisé avec le SVM, on peut le considérer comme un réseau neuronal à deux couches.
Types de SVM
1. C-SVC : Classification par vecteurs de support (cas binaire)
Donné un ensemble d’apprentissage de paires instance-étiquette (x i , y i ), i = 1,….,l où x i ∈ Rnet y ∈ {1, -1}l, ←les machines à vecteurs de support (SVM) nécessitent la résolution du problème d’optimisation suivant :
SVM trouve un hyperplan de séparation linéaire avec la marge maximale dans cet espace de dimension supérieure. C > 0 est le paramètre de pénalité du terme d’erreur . La fonction de décision est:
2. nu-SVC : ν-Support Vector Classification (Binary Case)
Le paramètre ν ∈ (0, 1) est une borne supérieure de la fraction des erreurs d’apprentissage et une borne inférieure de la fraction des vecteurs de support . Étant donné des vecteurs d’apprentissage x i ∈ Rn, i = 1,….,l, dans deux classes, et un vecteur y ∈ Rlsuch que y i ∈ {1, -1}, la forme primale considérée est :
Et la fonction de décision est :
3. epsilon-SVR : ε-Support Vector Regression (ε-SVR)
Une extension du SVM est celle pour la tâche de régression. Un problème de régression est donné chaque fois que Y = ℝ pour l’ensemble de données d’apprentissage Z = {(x i , y i ) ∈ X × Y | i = 1,…,M} et notre intérêt est de trouver une fonction de la forme f : X → RD. La formulation primale du SVR est alors donnée par :
Nous devons introduire deux types de slack-variables ξ i et , l’une pour contrôler l’erreur induite par les observations supérieures à la borne supérieure de l’ε-tube, et l’autre pour les observations inférieures à la borne inférieure. La fonction approximative est:
4. nu-SVR : ν-Support Vector Regression (ν-SVR)
Similaire à ν-SVC, pour la régression, utiliser un paramètre ν pour contrôler le nombre de vecteurs de support. Cependant, contrairement à ν-SVC où C est remplacé par ν, ici ν remplace le paramètre ε de ε-SVR. Alors la fonction de décision est la même que celle de ε-SVR.
5. SVM à une classe : estimation de la distribution
La différence de la classification à une classe par rapport au problème de classification standard est que les données d’apprentissage ne sont pas distribuées de manière identique aux données de test. Le jeu de données contient deux classes : l’une d’entre elles, la classe cible, est bien échantillonnée, tandis que l’autre classe est absente ou échantillonnée de manière très éparse. Schölkopf et al ont proposé une approche dans laquelle la classe cible est séparée de l’origine par un hyperplan. La forme primale considérée est:
Et la fonction de décision est :
Validation croisée
Le but de l’utilisation de la validation croisée est d’identifier les bons paramètres afin que le classificateur puisse prédire avec précision des données inconnues .
Une méthode courante consiste à séparer les données de formation en deux parties, dont l’une est considérée comme inconnue lors de la formation du classificateur. Ensuite, la précision de prédiction sur cet ensemble peut refléter plus précisément la performance sur la classification des données inconnues. Une version améliorée de cette procédure est la validation croisée.
Dans la validation croisée v-fold, l’ensemble de formation est divisé en v sous-ensembles de taille égale. Séquentiellement, un sous-ensemble est testé en utilisant le classificateur formé sur les v – 1 sous-ensembles restants. Ainsi, chaque instance de l’ensemble d’apprentissage est prédite une fois, et la précision de la validation croisée est le pourcentage de données qui sont correctement classées. La procédure de validation croisée peut empêcher le problème de surajustement .
Réduction
Chang et Lin ont mentionné que puisque pour de nombreux problèmes, le nombre de vecteurs de support libres (c’est-à-dire. 0 <α i < C) est petit, la technique de rétrécissement réduit la taille du problème de travail sans considérer certaines variables bornées .
Cache
Le cache est une autre technique pour réduire le temps de calcul. Puisque Q (Q est une matrice semi-définie positive l par l, Q ij = y i y j K(x i , x j )) est entièrement dense et ne peut pas être stockée dans la mémoire de l’ordinateur, les éléments Qij sont calculés selon les besoins. Habituellement, un stockage spécial utilisant l’idée d’un cache est utilisé pour stocker les Qij récemment utilisés .