L'objectif de ce projet est d'implémenter les différents modèles de programmation linéaire en variables mixtes vus en cours pour les Support Vector Machine (SVM) pour la séparation de points en deux dimensions.
Remarque : Comme vu en cours, on utilisera la norme 1 dans la fonction objective pour les différents modèles.
- Générer un dataset composé de 20 points 2D aléatoires. Chaque point aura un label parmi
${-1,1}$ de telle manière que :- chaque classe a le même nombre de points,
- les points sont linéairement séparables.
- Implémenter le problème d'optimisation linéaire déterminant l'hyperplan optimal et donner l'équation de cet hyperplan.
- Modifier le label de 5 points afin de rendre ce dataset non linéairement séparable.
- Implémenter deux modèles vus en cours (selon les losses choisies : hinge, Ramp ou Hard margin) permettant d'obtenir les hyperplans optimaux. Donner les deux hyperplans obtenus.
- Comparer et discuter les résultats obtenus par les différents modèles.
Optionnel :
- Vous pouvez ajouter des figures (générées avec
mathplotlibpar exemple) pour illustrer les hyperplans obtenus. - Vous pouvez évaluer l'impact de la variation de la pondération
$C$ utilisée dans les losses. - Vous pouvez tester sur un dataset plus important.
notebooks
-
Créer un répertoire
-
Se placer dans le repértoire pour créer un environnment virtuel
python -m venv venv -
Activer l'environnement virtuelle
-
Sur Linux
source venv/bin/activate
-
Sur Windows
venv\Scripts\activate
-
-
Taper la commande suivante pour installer
pip install -r requirements.txt