Dans cet article, vous apprendrez tout sur les SVM ou Machine à Vecteurs de Support, qui est l’un des plus populaires des algorithmes d’IA (c’est l’un des top 10 des algorithmes d’IA) et sur le Noyau Truc, qui traite de la non-linéarité et de dimensions supérieures., Nous aborderons des sujets comme les hyperplans, les multiplicateurs de Lagrange, nous aurons des exemples visuels et des exemples de code (similaires à l’exemple de code utilisé dans le chapitre KNN) pour mieux comprendre cet algorithme très important.
SVM Explained
La Machine à Vecteurs de Support est un algorithme d’apprentissage supervisé principalement utilisé pour la classification mais il peut également être utilisé pour la régression. L’idée principale est que sur la base des données étiquetées (données d’entraînement) l’algorithme essaie de trouver le meilleur hyperplane qui peut être utilisé pour classer de nouveaux points de données. En deux dimensions, l’hyperplan est une ligne simple.,
habituellement, un algorithme d’apprentissage essaie d’apprendre les caractéristiques les plus courantes (ce qui différencie une classe d’une autre) d’une classe et la classification est basée sur ces caractéristiques représentatives apprises (donc la classification est basée sur les différences entre les classes). Le SVM fonctionne dans l’autre sens. Il trouve les exemples les plus similaires entre les classes. Ce seront les vecteurs de support.
Comme exemple, considérons deux classes, les pommes et les citrons.,
D’autres algorithmes apprendront les caractéristiques les plus évidentes et les plus représentatives des pommes et des citrons, comme les pommes sont vertes et arrondies tandis que les citrons sont jaunes et ont une forme elliptique.
en revanche, SVM recherchera des pommes qui sont très similaires aux citrons, par exemple des pommes qui sont jaunes et ont une forme elliptique. Ce sera un vecteur de support. L’autre vecteur de support sera un citron semblable à une pomme (vert et arrondi). Ainsi, d’autres algorithmes apprennent les différences tandis que SVM apprend les similitudes.,
Si nous visualisons l’exemple ci-dessus en 2D, nous aurons quelque chose comme ceci:
Comme nous aller de gauche à droite, tous les exemples seront classés comme des pommes jusqu’à ce que nous arrivons à la pomme jaune. À partir de ce moment, la confiance qu’un nouvel exemple est une pomme diminue tandis que la confiance de la classe citron augmente., Lorsque la confiance de la classe citron devient supérieure à la confiance de la classe pomme, les nouveaux exemples seront classés comme citrons (quelque part entre la pomme jaune et le citron vert).
sur la base de ces vecteurs de support, l’algorithme essaie de trouver le meilleur hyperplan qui sépare les classes. En 2D, le hyperplane est d’une ligne, donc il devrait ressembler à ceci:
Ok, mais pourquoi ai-je tirer le bleu de la frontière comme dans l’image ci-dessus?, J’ai également pu tracer les frontières comme ceci:
Comme vous pouvez le voir, nous avons un nombre infini de possibilités de tirer la décision de la frontière. Alors, comment pouvons-nous trouver le meilleur?
trouver L’hyperplan Optimal
intuitivement, la meilleure ligne est la ligne qui est loin des exemples apple et lemon (a la plus grande marge)., Pour avoir une solution optimale, nous devons maximiser la marge dans les deux sens (si nous avons plusieurs classes, alors nous avons l’optimiser en considérant chacune des classes).
Donc, si l’on compare la photo ci-dessus avec l’image ci-dessous, nous pouvons facilement observer, que la première qui est optimal hyperplane (en ligne) et la deuxième est une sous-solution optimale, car la marge est beaucoup plus courte.,
Parce que nous voulons maximiser les marges de prendre en considération toutes les classes, au lieu d’utiliser une marge pour chaque classe, nous utilisons un « global” de la marge, qui prend en considération toutes les classes., Cette marge de ressembler à la ligne violette dans l’image suivante:
Cette marge est orthogonal à la frontière et à égale distance entre les vecteurs de soutien.
alors, où avons-nous des vecteurs? Chacun des calculs (calculer la distance et les hyperplans optimaux) sont effectués dans l’espace vectoriel, de sorte que chaque point de données est considéré comme un vecteur. La dimension de l’espace est définie par le nombre d’attributs des exemples., Pour comprendre les mathématiques derrière, veuillez lire cette brève description mathématique des vecteurs, des hyperplans et des optimisations: SVM Succintly.
dans l’ensemble, les vecteurs de support sont des points de données qui définissent la position et la marge de l’hyperplan. Nous les appelons vecteurs « support », car ce sont les points de données représentatifs des classes, si nous déplaçons l’un d’entre eux, la position et/ou la marge changeront. Le déplacement d’autres points de données n’aura pas d’effet sur la marge ou la position de l’hyperplan.,
pour faire des classifications, nous n’avons pas besoin de tous les points de données d’entraînement (comme dans le cas de KNN), nous devons enregistrer uniquement les vecteurs de support. Dans le pire des cas, tous les points seront des vecteurs de support, mais cela est très rare et si cela se produit, vous devriez vérifier votre modèle pour les erreurs ou les bogues.
donc, fondamentalement, l’apprentissage équivaut à trouver l’hyperplan avec la meilleure marge, c’est donc un simple problème d’optimisation.,/h2>
Les étapes de base de la SVM sont les suivantes:
- sélectionner deux hyperplans (en 2D) qui séparent les données sans points entre eux (lignes rouges)
- maximiser leur distance (la marge)
- la ligne moyenne (ici la ligne à mi-chemin entre les deux lignes rouges) sera la limite de décision
c’est très agréable et facile, mais trouver la meilleure marge, le problème d’optimisation n’est pas trivial (c’est facile 2D, quand nous n’avons que deux attributs, mais que faire si nous avons N dimensions avec n un très grand nombre)
pour résoudre le problème d’optimisation, nous utilisons les multiplicateurs de Lagrange., Pour comprendre cette technique, vous pouvez lire les deux articles suivants: dualité multiplicateur de Langrange et une explication Simple de pourquoi les multiplicateurs de Langrange Wroks.
Jusqu’à présent, nous avions des données linéairement séparables, nous pouvions donc utiliser une ligne comme limite de classe. Mais que faire si nous devons faire face à des ensembles de données non linéaires?,
SVM Non Linéaire des Ensembles de Données
Un exemple de la non linéaire des données est:
Dans ce cas, nous ne pouvons pas trouver une ligne droite pour séparer les pommes de citrons. Alors, comment pouvons-nous résoudre ce problème. Nous allons utiliser L’Astuce du noyau!
l’idée de base est que lorsqu’un ensemble de données est inséparable dans les dimensions actuelles, ajoutez une autre dimension, peut-être que de cette façon les données seront séparables., Pensez-y, l’exemple ci-dessus est en 2D et il est inséparable, mais peut-être qu’en 3D il y a un écart entre les pommes et les citrons, peut-être qu’il y a une différence de niveau, donc les citrons sont au niveau un et les citrons sont au niveau deux. Dans ce cas, nous pouvons facilement dessiner un hyperplan de séparation (en 3D, un hyperplan est un plan) entre les niveaux 1 et 2.
mappage à des Dimensions supérieures
Pour résoudre ce problème, nous ne devrions pas simplement ajouter aveuglément une autre dimension, nous devrions transformer l’espace afin de générer cette différence de niveau intentionnellement.,
mappage de la 2D à la 3D
supposons que nous ajoutions une autre dimension appelée X3. Une autre transformation importante est que dans la nouvelle dimension, les points sont organisés en utilisant cette formule x12 + x22.
Si nous avons tracé le plan défini par le x2 + y2 formule, nous allons obtenir quelque chose comme ceci:
Maintenant, nous avons à la carte les pommes et les citrons (qui sont de simples points) pour ce nouvel espace. Pensez-y bien, qu’avons-nous fait?, Nous venons d’utiliser une transformation dans laquelle nous avons ajouté des niveaux basés sur la distance. Si vous êtes à l’origine, les points seront au plus bas niveau. Lorsque nous nous éloignons de l’origine, cela signifie que nous montons la colline (en nous déplaçant du centre du plan vers les marges), de sorte que le niveau des points sera plus élevé., Maintenant si l’on considère que l’origine est le citron du centre, nous aurons quelque chose comme ceci:
Maintenant, on peut facilement séparer les deux classes. Ces transformations sont appelées noyaux. Les noyaux populaires sont: noyau Polynomial, noyau gaussien, fonction de base radiale (RBF), noyau Laplace RBF, noyau sigmoïde, noyau Anove RBF, etc. (voir fonctions du noyau ou une description plus détaillée des noyaux D’apprentissage automatique).,
la Cartographie de 1D 2D
un Autre, exemple facile en 2D serait:
Après en utilisant le noyau et après toutes les transformations que nous allons obtenir:
Donc, après la transformation, nous pouvons facilement délimiter les deux classes à l’aide d’une seule ligne.,
dans les applications réelles, nous n’aurons pas une simple ligne droite, mais nous aurons beaucoup de courbes et de dimensions élevées. Dans certains cas, nous n’aurons pas deux hyperplans qui séparent les données sans points entre eux, nous avons donc besoin de compromis, de tolérance pour les valeurs aberrantes. Heureusement, L’algorithme SVM a un paramètre dit de régularisation pour configurer le compromis et tolérer les valeurs aberrantes.
réglage des paramètres
Comme nous l’avons vu dans la section précédente, choisir le bon noyau est crucial, car si la transformation est incorrecte, le modèle peut avoir de très mauvais résultats., En règle générale, Vérifiez toujours si vous avez des données linéaires et dans ce cas, utilisez toujours un SVM linéaire (noyau linéaire). Le SVM linéaire est un modèle paramétrique, mais pas un SVM du noyau RBF, donc la complexité de ce dernier augmente avec la taille de l’ensemble d’apprentissage. Non seulement il est plus coûteux de former une SVM du noyau RBF, mais vous devez également garder la matrice du noyau, et la projection dans cet espace de dimension supérieure « infinie” où les données deviennent linéairement séparables est également plus chère pendant la prédiction., De plus, vous avez plus d’hyperparamètres à régler, donc la sélection du modèle est également plus chère! Et enfin, il est beaucoup plus facile de surajuster un modèle complexe!
régularisation
le paramètre régularisation (en python, il s’appelle C) indique à L’optimisation SVM combien vous voulez éviter de manquer de classer chaque exemple de formation.
Si le C est plus élevé, l’optimisation choisira un hyperplan à marge plus petite, de sorte que le taux de classification des données d’entraînement sera inférieur.,
d’autre part, si le C est faible, alors la marge sera grande, même s’il y aura des exemples de données d’entraînement classées manquantes. Ceci est illustré dans les deux diagrammes:
Comme vous pouvez le voir dans l’image, lorsque le C est faible, la marge est plus élevée (donc implicitement nous n’avons pas tellement le nombre de courbes, la ligne n’est pas strictement suit les points de données), même si deux pommes ont été classés comme des citrons., Lorsque le C est élevé, la limite est pleine de courbes et toutes les données d’entraînement ont été classées correctement. N’oubliez pas, même si toutes les données d’entraînement ont été correctement classées, cela ne signifie pas que l’augmentation du C augmentera toujours la précision (en raison d’un surajustement).
Gamma
Le prochain paramètre important est le Gamma. Le paramètre gamma définit jusqu’où l’influence d’un seul exemple d’entraînement atteint. Cela signifie que High Gamma ne considérera que les points proches de l’hyperplan plausible et low Gamma considérera les points à plus grande distance.,