SVM machine à vecteurs de support ou séparateur à vaste marge
Plan Introduction Principes de fonctionnement Les fondements mathématiques Domaines d’applications Les SVM dans Oracle Conclusion
Introduction Méthode de classification binaire par apprentissage Introduite par Vladimir Vapnik en 1995 Repose sur l’existence d’un classificateur linéaire Apprentissage supervisé
Principes de fonctionnement (1) Pour deux classes d’exemples, on veut : - Trouver un classificateur linéaire qui va séparer les données (Hyperplan) - Maximiser la distance entre ces deux classes
Principes de fonctionnement (2) Hyperplan optimal : hyperplan dont la distance minimale aux exemples d’apprentissage est maximale. Cette distance est appelée « marge ».
Principes de fonctionnement (3) Pourquoi maximiser la marge?
Principes de fonctionnement (4) Classification d’un nouvel élément inconnu ? On regarde sa position par rapport à l’hyperplan.
Principes de fonctionnement (5) Linéarité et non-linéarité ? La majorité des problèmes réels sont non-linéaire
Principes de fonctionnement (6) Résolution d’un cas non linéaire ? On change de dimension en utilisant une fonction noyau: -Polynomial -Gaussien -Sigmoïde -Laplacien Le nouvel espace est appelé « espace de redescription »
Principes de fonctionnement (7) Illustration avec le cas XOR: Le cas de XOR n’est pas linéairement séparable, si on place les points dans un plan à deux dimension, on obtient la figure suivante Coordonnées des points : (0,0) ; (0,1) ; (1,0) ; (1,1)
Principes de fonctionnement (8) Si on prend une fonction polynomiale (x , y) -> (x , y , x.y) qui fait passer d'un espace de dimension 2 à un espace de dimension 3, on obtient un problème en trois dimensions linéairement séparable : (0,0) -> (0,0,0) (0,1) -> (0,1,0) (1,0) -> (1,0,0) (1,1) -> (1,1,1)
Les fondements mathématiques
Problème d’apprentissage But: Observation (xi, yi) → déterminer la fonction f tq f(x) = y de la façon la plus précise possible Trouver un compromis entre le sous-apprentissage et le sur- apprentissage Pb: Trouver le frontière de décision optimale
Classification à valeurs réelles But: Plutôt que de construire h : X → {-1, 1} on construit f: X → R (nombres réels) La classe est donnée par h=signe(f). L'erreur se calcule avec P(h(X)!=Y ) = P(Yf(X) ≤0). Ceci donne une certaine idée de la confiance dans la classification. Idéalement, |Yf(X)| est proportionnel à P(Y|X). Yf(X) représente la marge de f en (X,Y).
Transformation des entrées On part du problème initial On transforme les entrées en vecteurs dans un espace F (feature space) → Problème plus simple F finie ou non mais dispose d'un produit scalaire (espace de Hilbert) Choix de l’hyperplan optimal
Maximisation de la marge Marge = distance du point le plus proche à l'hyperplan Linéaire → f(x) = w.x + b → hyperplan d’équation w.x + b = 0 La distance d'un point au plan est donnée par d(x) = |w.x + b|/||w|| Il faut donc minimiser ||w||
Problème primal Un point (x; y) est bien classé si et seulement si yf(x) > 0 (w, b) est défini à un coefficient multiplicatif près => on choisi yf(x) > 1 On en déduit le problème primal:
Problème dual (1/2) Primal → Dual grâce aux multiplicateurs de lagrange (cf théorème de lagrange) On obtient: Matrice hessienne (xi.xj)i,j
Problème dual (2/2) (αi)i solutions => αi = 0 vecteurs de support. La fonction de décision est donc
La non linéarité (cas non séparable) Majorité des problèmes Primal linéaire → primal non linéaire Dual non linéaire:
Fonctions noyau (1/3) Passage dans un espace intermédiaire de dimension supérieure Exemple: passage en dimension 3
Fonctions noyau (2/3) Dans le nouvel espace on doit résoudre: La fonction solution f est:
Fonctions noyau (3/3) Le problème et la solution ne dépendent que de Φ(x).Φ(x’) On choisi k: XxX → R tq k(x,x’) = Φ(x).Φ(x’) K est appelée la fonction noyau et est linéaire Pb: Choisir le bon noyau
Condition de Mercer K symétrique est un noyau (k(xi,xj))i,j est une matrice définie positive Dans ce cas il existe l’espace F et la fn Φ tq: k(x,x’)= Φ(x).Φ(x’) Problème: condition est très difficile à vérifier ne permet pas de savoir comment est Φ donne pas d'indication pour la construction de noyaux => En pratique, on combine des noyaux simples pour en obtenir de plus complexes.
Exemples de noyaux (1/2)
Exemples de noyaux (2/2) 47 exemples (22 +, 25 -) (5-, 4+) (3-, 4+) Ici fonction polynomiale de degré 2, 5, 8 et C = 10000 (10-, 11+) (8-, 6+) (4-, 5+) Ici fonction Gaussienne de s = 2, 5, 10 et C = 10000
Temps de calcul n = nombre de données d’apprentissage d = nombre d’entrées à prédire dn² ≤ complexité ≤ dn*n*n Taille de la matrice hessienne = n² =>SVM est adapté pour des problèmes de taille moyenne (~10.000 à 100.000)
Domaines d’applications (1) Catégorisation de textes Classification d’e-mails Classification de pages web Entrées : document (texte ou html) Approche « sac de mots » Document = vecteur de mots Sortie : catégorie (spam/non-spam)
Domaines d’applications (2) Traitement d’images Reconnaissance de caractères manuscrits Reconnaissance de visages Entrées : image bidimensionnelle en couleur ou en niveaux de gris Sortie : classe (chiffre / personne)
Domaines d’applications (3) Diagnostic médical Évaluation du risque de cancer Évaluation du risque d’accidents cardio-vasculaires Entrées : état du patient (sexe, age, bilan sanguin, …) Sortie : Classe : à risque ou non
Les SVM dans Oracle (ODM)
Oracle et SVM Oracle 10g implémente SVM Spécificités de SVM dans Oracle 10g Détection d’anomalies (Anomaly detection) L’apprentissage actif (Active learning) Echantillonage et choix du noyau
Le package DBMS_DATA_MINING et svm DBMS_DATA_MINING package dédié au datamining pour des applications Pl/sql. Quelques paramètres du package pour SVM Nom Description svms_kernel_function -svms_linear (pour noyau linéaire) -svms_gaussian (pour noyau gaussien) svms_kernel_cache_size Taille du cache svms_complexity_factor Valeur du facteur de complexité svms_epsilon Valeur du facteur epsilon pour l’algorithme de régression
Arbres de décision vs SVM dans oracle (1/2) Cancer du poumon dans le Wisconsin 645 patients (512 comme données entraînement et 133 comme données à prédire) 2 classes: Benign (65%) et malignant (35%) Les résultats sont les suivants: Algorithme de SVM utilisant un noyau gaussien Algorithme d’arbre de décision Précision de 99,3% Précision de 92,5%
Arbres de décision vs SVM dans oracle (2/2) Base de données pour les spams 4601 tuples (3520 tuples pour l’apprentissage et 811 pour les tests 2 classes : spam (39%) et non-spam(61%) Les résultats sont les suivants: Algorithme de SVM utilisant un noyau gaussien Algorithme d’arbre de décision Précision de 95,3% Précision de 92,5%
Conclusion Méthode de classification intéressante Efficace Utilisée dans de nombreux domaines d’application
Pour en savoir plus Programmes, articles en ligne, tutorial sur: - www.kernel-machines.org - www.kernel-methods.net - www.support-vector.net