Vous êtes sur la page 1sur 8

2004

SUPPORT VECTOR MACHINE (SVM)

MACHINE LEARNING

participants :
PROFESSEUR :
KOUAKOU REBECCA
DOUA ZEREKO BORIS DR. KANGA
BAKAYOKO ZAKARYA
SOMMAIRE

INTRODUCTION

I. ALGORITHME SVM
A. Fonctionnement de base
B. Principe de fonctionnement de la marge et de la séparation des classes

II. IMPLEMENTATION
A. Préparation des données, choix des paramètres et du noyau
B. Entrainement et Evaluation du modèle

CONCLUSION

1
INTRODUCTION

La machine à vecteurs de support (SVM) est un apprentissage automatique


supervisé utilisé à la fois pour la classification et la régression mais est mieux
adaptée à la classification. il a pour objectif principal de trouver l’hyperplan
optimal dans un espace à N dimensions qui peut séparer les points de données de
différentes classes dans l’espace des caractéristique, On peut ajouter à cela les
objectifs spécifiques tels que : Robustesse aux données bruitées : Cela signifie
qu'ils doivent être capables de classifier correctement même lorsque les données
sont légèrement perturbées par du bruit ou des erreurs d'étiquetage.
Efficacité computationnelle : Un objectif pratique est de développer des
algorithmes SVM efficaces qui peuvent gérer de grandes quantités de données et de
dimensions de manière efficiente(profitable) en termes de temps de calcul et de
mémoire. Les SVM sont utilisés dans plusieurs domaine notamment :
- La finance : pour détecter les fraudes ou faire des analyses de crédits ;
- La médecine : pour la prédiction de maladie, détection de tumeur etc….
- Biométrie : pour la reconnaissance d’emprunte digitales, vocale et de l’iris
En vue de mieux comprendre le fonctionnement du SVM nous verrons dans un 1er
temps l’algorithme SVM utilisé pour la classification dans une 2e temps
l’implémentation.

I. ALGORITHME SVM

A. Fonctionnement de base
Les SVM sont des classificateurs qui permettent de traiter des problèmes non
linéaires en les reformulant en problèmes d’optimisation quadratique pour les
minimiser de sorte a ce qu’ils soient beaucoup plus faciles à les résoudre.
Ces méthodes reposent sur deux idées clés : la notion de marge maximale et la
notion de fonction noyau.

2
- la marge maximale est la frontière de séparation des données qui maximise la
distance entre la frontière de séparation et les données les plus proches
-la fonction noyau : la fonction noyau joue un rôle essentiel dans la capacité
des SVM à traiter des problèmes non linéaires en transformant les données en une
forme plus adaptée pour la classification. En d’autres termes c’est une méthode qui
permet de rendre les données facilement traitables.

B. Principe de fonctionnement de la marge et de la séparation des classes


La marge dans les SVM est comme une zone de sécurité entre les différentes
catégories ou classes de données. C'est comme une bande tampon qui assure une
bonne séparation entre les groupes. Les SVM cherchent à maximiser cette zone
tampon tout en faisant le moins d'erreurs possible dans la classification. Les points
les plus proches de la limite de cette zone de sécurité sont très importants ; on les
appelle les "vecteurs de support". Ils aident à définir précisément où placer la limite
entre les catégories de données La marge dans les SVM est comme une zone de
sécurité entre les différentes catégories ou classes de données. C'est comme une
bande tampon qui assure une bonne séparation entre les groupes. Les SVM
cherchent à maximiser cette zone tampon tout en faisant le moins d'erreurs possible
dans la classification. Les points les plus proches de la limite de cette zone de
sécurité sont très importants ; on les appelle les "vecteurs de support". Ils aident à
définir précisément où placer la limite entre les catégories de données

II. IMPLEMENTATION
A. Préparation des données, choix des paramètres et du noyau

 Préparation des données :

L'importance de la préparation des données dans le processus de Machine Learning


réside dans le fait que des données de haute qualité conduisent à des modèles plus
performants. Sans une préparation adéquate, les modèles peuvent être biaisés où
avoir une performance médiocre. Les étapes typiques de préparation des données
incluent le nettoyage des données, la normalisation et la transformation des
caractéristiques. Le nettoyage des données implique souvent la détection et la

3
correction des valeurs aberrantes, le traitement des données manquantes et la
suppression des données redondantes ou non pertinentes. La normalisation est
essentielle pour mettre à l'échelle les caractéristiques afin qu'elles aient une plage
similaire, ce qui est particulièrement important pour les modèles comme SVM qui
peuvent être sensibles à l'échelle des caractéristiques. Enfin, la transformation des
caractéristiques peut inclure des techniques telles que l'extraction de
caractéristiques ou la réduction de dimensionnalité pour rendre les données plus
appropriées pour le modèle.

Exemple de code pour la préparation des données pour SVM:

import tkinter as tk
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

# Fonction pour générer des données fictives


def generate_data():
# Caractéristiques des maisons
X = np.random.rand(1000, 3) # 1000 exemples, 3 caractéristiques

# Prix des maisons correspondant à chaque exemple


y = np.random.rand(1000) # Prix de 1000 maisons

return X, y

# Fonction pour diviser les données et appliquer la normalisation


def preprocess_data():
X, y = generate_data()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=42)

# Normalisation sur les données d'entraînement


scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)

4
# Application de la même transformation de normalisation sur les données de
test
X_test_scaled = scaler.transform(X_test)

return X_train_scaled, X_test_scaled, y_train, y_test

# Fonction pour afficher les résultats


def display_results():
X_train_scaled, X_test_scaled, y_train, y_test = preprocess_data()

# Affichage des résultats


root = tk.Tk()
root.title("Résultats de la normalisation")

# Exemple d'affichage des données d'entraînement


label_train = tk.Label(root, text="Données d'entraînement normalisées:")
label_train.pack()
text_train = tk.Text(root, height=10, width=50)
text_train.insert(tk.END, X_train_scaled)
text_train.pack()

# Exemple d'affichage des données de test


label_test = tk.Label(root, text="Données de test normalisées:")
label_test.pack()
text_test = tk.Text(root, height=10, width=50)
text_test.insert(tk.END, X_test_scaled)
text_test.pack()

root.mainloop()

# Appel de la fonction pour afficher les résultats


display_results()

5
B- Entraînement et évaluation du modèle:

 Entraînement du Modèle:

L'entraînement du SVM implique l'ajustement du modèle aux données


d'entraînement en maximisant la marge tout en minimisant les erreurs. Cela se fait
en utilisant des techniques d'optimisation telles que la descente de gradient ou des
méthodes de résolution quadratique pour trouver les paramètres optimaux qui
séparent le mieux les classes.

Exemple de code pour l'entraînement du modèle SVM:

from sklearn.svm import SVC

# Créer un modèle SVM avec un noyau gaussien (RBF) et un paramètre de


régularisation C=1.0
svm_model = SVC(kernel='rbf', C=1.0)

# Entraîner le modèle sur les données d'entraînement


svm_model.fit(X_train, y_train)

 Évaluation du Modèle:

Une fois le modèle entraîné, il est essentiel de l'évaluer pour estimer sa


performance sur des données non vues. Cela se fait généralement en utilisant des
données de test et en calculant des métriques d'évaluation telles que la précision, le
rappel et la F1-score. Ces métriques fournissent une mesure de la performance du
modèle sur différentes classes.

6
Exemple de code pour l'évaluation du modèle SVM:

from sklearn.metrics import accuracy_score, classification_report

# Prédire les étiquettes pour les données de test


y_pred = svm_model.predict(X_test)

# Calculer la précision du modèle


accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

# Afficher le rapport de classification


print("Classification Report:\n", classification_report(y_test, y_pred))
Dans cet exemple, accuracy_score est utilisé pour calculer la précision du modèle
et classification_report est utilisé pour afficher un rapport détaillé de la
classification, y compris la précision, le rappel et la F1-score pour chaque classe.
Ces métriques permettent d'évaluer la performance du modèle SVM et d'identifier
ses forces et ses faiblesses dans la classification des données.

CONCLUSION
Les SVM sont des outils parmi tant d’autres pour faire de la classification, ils sont
utilisés dans une très grande variétés de domaines, allant de la médecine, à la
recherche d’information en passant par la finance.

Vous aimerez peut-être aussi