Aller au contenu

Séparateurs à Vastes Marges

Définition

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).

Principe de la régression linéaire

1. Problème

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).

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

Exemples:

  • Prédire la valeur d'un bien
  • Prédire le poids en fonction de la taille
  • Prédire la température sur la base

2. Données

Les variables explicatives sont désignées par X et la variable expliquée par Y. X est une matrice de taille (n, p), n étant la taille des données et p le nombre de variables.

3. Fonction de perte

L'erreur de prédiction sur la moyenne de la somme des carrées des erreurs. MAE

4. 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

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.


Pour signaler un problème que vous avez rencontré durant l'exécution des cahiers, merci de créer une issue. Assurez-vous que vous avez les bonnes versions des packages*