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).
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. )
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.)
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.
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.
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
Utilisez les données d'iris. Avec ici.
{describe_iris.py}
iris.head()
の長さと幅のデータ
{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