Semi-Supervised SVM (S3VM)
Le Semi-Supervised Support Vector Machine (S3VM) est une extension du SVM (Support Vector Machine) classique qui permet d’exploiter les données étiquetées et non étiquetées. Alors qu’un SVM standard utilise uniquement des données étiquetées pour créer une hyperplan séparant les différentes classes, un S3VM utilise à la fois des données étiquetées et non étiquetées. L’idée est de trouver une frontière de décision qui non seulement sépare les données étiquetées de manière optimale mais aussi prend en compte la structure des données non étiquetées pour mieux généraliser.
Le S3VM fonctionne en optimisant à la fois la séparation des points étiquetés et l’alignement des points non étiquetés, en cherchant à maximiser la marge entre les classes tout en respectant la structure des données non étiquetées.
Importation : L’implémentation standard de S3VM n’est pas directement disponible dans scikit-learn
. Cependant, on peut utiliser des bibliothèques tierces ou implémenter cette méthode nous-mêmes. Une des bibliothèques disponibles est libsvm
(une implémentation populaire des SVM), mais elle nécessite un certain travail pour l’adapter au semi-supervisé.
Il existe également des implémentations dans d’autres packages comme scikit-learn
via la fonction LabelSpreading ou LabelPropagation, bien que ceux-ci ne soient pas exactement S3VM, mais plutôt des techniques basées sur des graphes.
Voici une approche générale de l’implémentation d’un S3VM avec une bibliothèque tierce telle que pytorch
ou libsvm
: