Aller au contenu

Support Vectors Machines

Il s’agit d’un algorithme de classification binaire de type linéaire. Un SVM cherche à maximiser la marge entre les classes.

Trouver la meilleure droite pour laquelle les points sont le plus éloignés possible. (deux dimensions).

Extensions

  • Classification non-linéaires
  • Classification multi-classes
  • Régression

Règle de décision

On se donne une fonction de score que l’on va noter f. f est une fonction linéaire.

Fonction de perte

Méthode d’optimisation

La solution du problème est obtenu graĉe à des solveurs

  • Réécrire la fonction objectif
  • Trouver le problème dual
  • C’est le problème dual qui est résolu

Plus de détails ici: Appliquez l’apprentissage statistique aux objets connectés.

Packages

Scikit-learn implémente l'algorithme des séparateurs à vastes marges avec la classe sklearn.svm.LinearSV.

Importer les packages
from sklearn.svm import LinearSV

Standardiser les données

Les variables n'ont pas la même échelle de grandeur et il faut corriger cela. Si l'algorithme utilisé est juste ie s'il ne s'agit pas d'un algorithme dont l'apprentissage est itératif, on peut bien garder les valeurs comme telles. Mais dans notre exemple ici, nous allons ramener toutes les variables à la même échelle de grandeur.

Standardiser les données
scaler = StandardScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
X_train_scaled = pd.DataFrame(X_train_scaled, columns=list(X_train.columns))

Conversion en valeurs numériques

Les algorithmes de machine learning ne consomment que des chiffres et des nombres, il est donc nécessaire de convertir les valeurs non numériques (catégorielles) en numérique.

Objectif: Problèmes non-linéaires

Transformer les données pour qu’elles soient linéairement séparables

  • Noyau polynomial
  • Noyau sigmoidal
  • Noyau gaussien

Classification multi-classes

Les SVM peuvent être étendus à des problèmes de classification multi-classes

One vs Rest ou One vs All

Une manière de le faire est d’entraîner autant de modèles que de classes. Ensuite on prédit la classe dont le modèle donne le plus grand score.

Du score à la probabilité

Il est également intéressant de convertir le score en probabilité. Une probabilité est plus facile à interpréter.

Ainsi les scores positifs ont une probabilité proche de 1 et les négatifs proches de 0.

Références