[PYTHON] SVM (classification multi-classes)

Qu'est-ce que SVM

Abréviation de Support Vector Machine. Méthode d'estimation de la classification à laquelle appartiennent les données inconnues en obtenant une ligne qui classe plusieurs classes à l'aide de données d'apprentissage (création de modèle d'apprentissage).

Vue d'ensemble de la classification dans SVM

Le plan d'un niveau inférieur à la dimension d'origine est appelé le superplan et le superplan optimal (plan de séparation) est recherché.

Par exemple, dans la figure ci-dessous, les lignes (H1 et H2) qui séparent les cercles noir et blanc sont tracées. (Cette figure montre des données bidimensionnelles de X1 et X2, mais H1 et H2 sont des lignes droites et unidimensionnelles. Si les données tridimensionnelles sont l'entrée, vous rechercherez un plan pouvant être classé en deux dimensions. )

スクリーンショット 2016-05-05 13.31.17.png

La meilleure façon de trouver la surface de séparation est de rechercher la surface de séparation qui maximise la marge. La marge est la ligne grise de la figure, qui est la distance de la ligne perpendiculaire entre le point de chaque classe et la surface de séparation.

Par exemple, H1 et H2 peuvent être considérés comme des surfaces de séparation qui classent les cercles noirs et blancs, mais H2, qui a une grande marge, a un pouvoir de classification plus élevé. (H3 ne peut même pas être classé, donc ce n'est pas bon.)

Astuce du noyau (méthode du noyau)

L'exemple ci-dessus semble bien catégorisé, mais dans la plupart des cas, ce n'est pas le cas. La méthode de recherche de la surface de séparation dans un tel cas est appelée une astuce du noyau.

Par exemple, dans la figure ci-dessous, il est difficile de séparer les cercles rouge et bleu par une ligne droite.

スクリーンショット 2016-05-05 13.46.57.png

Par conséquent, afin de séparer proprement les échantillons, l'échantillon est mappé à un autre espace [espace de caractéristiques](les points sont déplacés selon une certaine règle), et la surface de séparation est recherchée dans cet espace.

スクリーンショット 2016-05-05 13.45.05.png

Lorsque la surface de séparation avec la marge maximale est obtenue de cette manière, lorsque des données inconnues sont entrées, elles sont mappées à l'espace d'entités selon les règles au moment du mappage, et la classe est déterminée en fonction de l'endroit où la surface de séparation appartient sur l'espace d'entités.

C'est très facile à comprendre. → Vidéo de référence de l'astuce du noyau

Préparation des données

Utilisez les données d'iris. Avec ici.

Aperçu des données

{describe_iris.py}


iris.head()
スクリーンショット 2016-05-04 3.45.38.png

スクリーンショット 2016-05-04 3.50.37.png  の長さと幅のデータ

Essayer

{svm.py}


import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn import datasets
from sklearn.cross_validation import train_test_split #Pour la validation croisée

#Préparation des données
iris = datasets.load_iris()    #Charge de données
X = iris.data                  #Ensemble de variables explicatives
Y = iris.target                #Jeu de variables d'objectif
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, random_state=0) # random_state est une valeur de départ.

#Exécution SVM
from sklearn.svm import SVC #Pour SVM
model = SVC()               #Génération d'instance
model.fit(X_train, Y_train) #Exécution SVM

#Exécution prédictive
from sklearn import metrics       #Pour la vérification de l'exactitude
predicted = model.predict(X_test) #Exécution prédictive jusqu'à la date de test
metrics.accuracy_score(Y_test, predicted)
> 0.97368421052631582

Précision 97,4%. haute.

Recommended Posts

SVM (classification multi-classes)
SVM multi-classes avec scikit-learn
Naive Bays (classification multi-classes)
Iris de classification multiclasse Keras
Méthode de voisinage K (classification multi-classes)
Courbe ROC pour la classification multi-classes
Classification multi-étiquette d'images multi-classes avec pytorch
Algorithme d'apprentissage automatique (implémentation de la classification multi-classes)
expérience svm 1
Algorithme d'apprentissage automatique (de la classification à 2 classes à la classification à plusieurs classes)