Introduction
Dans ce tutoriel, nous allons apprendre à connaître les Machines à Vecteurs de Support (SVM), qui sont un ensemble de méthodes d'apprentissage supervisé utilisées pour la classification, la régression et la détection d'anomalies. Les SVM sont efficaces dans les espaces de haute dimension et peuvent toujours fonctionner correctement lorsque le nombre de dimensions est supérieur au nombre d'échantillons.
Les avantages des SVM incluent leur efficacité dans les espaces de haute dimension, leur efficacité mémoire et leur polyvalence en termes de différentes fonctions noyau. Cependant, il est important d'éviter le surapprentissage et de choisir la bonne fonction noyau et le terme de régularisation pour le problème donné.
Dans ce tutoriel, nous aborderons les sujets suivants :
- Classification avec SVM
- Classification multi-classe
- Scores et probabilités
- Problèmes déséquilibrés
- Régression avec SVM
- Estimation de la densité et détection de nouveauté
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder à Jupyter Notebook pour la pratique.
Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.
Classification avec SVM
- Commencez par importer les bibliothèques nécessaires :
from sklearn import svm
- Définissez les échantillons d'entraînement
Xet les étiquettes de classey:
X = [[0, 0], [1, 1]]
y = [0, 1]
- Créez une instance du classifieur
SVCet ajustez les données :
clf = svm.SVC()
clf.fit(X, y)
- Utilisez le modèle entraîné pour prédire de nouvelles valeurs :
clf.predict([[2., 2.]])
Classification multi-classe
- Les classifieurs
SVCetNuSVCpeuvent être utilisés pour la classification multi-classe en utilisant l'approche "un-versus-un" :
X = [[0], [1], [2], [3]]
Y = [0, 1, 2, 3]
clf = svm.SVC(decision_function_shape='ovo')
clf.fit(X, Y)
dec = clf.decision_function([[1]])
Scores et probabilités
- Les SVM ne fournissent pas directement des estimations de probabilité, mais vous pouvez activer l'estimation de probabilité en définissant le paramètre
probabilitysurTrue:
clf = svm.SVC(probability=True)
clf.fit(X, y)
- Vous pouvez ensuite utiliser la méthode
predict_probapour obtenir les probabilités de chaque classe :
clf.predict_proba([[2., 2.]])
- Notez que l'estimation de probabilité est coûteuse et nécessite une validation croisée, utilisez donc cette fonction avec prudence.
Problèmes déséquilibrés
- Les SVM peuvent gérer les problèmes déséquilibrés en ajustant le paramètre
class_weight:
clf = svm.SVC(class_weight={1: 10})
clf.fit(X, y)
Régression avec SVM
- Pour les problèmes de régression, les SVM peuvent être utilisés avec la classe
SVR:
X = [[0, 0], [1, 1]]
y = [0.5, 2.5]
regr = svm.SVR()
regr.fit(X, y)
regr.predict([[1, 1]])
Estimation de densité et détection de nouveauté
- Les SVM peuvent également être utilisés pour l'estimation de densité et la détection de nouveauté avec la classe
OneClassSVM:
clf = svm.OneClassSVM()
clf.fit(X)
clf.predict(X)
Sommaire
Dans ce tutoriel, nous avons appris à propos des Machines à Vecteurs de Support (SVM) et de leurs applications dans la classification, la régression, l'estimation de densité et la détection de nouveauté. Nous avons abordé les étapes de classification, de classification multi-classe, de scores et de probabilités, de problèmes déséquilibrés, de régression et d'estimation de densité. Les SVM sont des outils puissants pour l'apprentissage automatique et peuvent être utilisés dans diverses situations pour obtenir des prédictions précises.