Tracer les données d'un svm fit - hyperplan
J'ai utilisé svm pour trouver un hyperplane meilleur ajustement de la régression dépend de q, où j'ai 4 dimensions: x, y, z, q.
fit <- svm(q ~ ., data=data,kernel='linear')
et voici mon fit l'objet:
Call:
svm(formula = q ~ ., data = data, kernel = "linear")
Parameters:
SVM-Type: C-classification
SVM-Kernel: linear
cost: 1
gamma: 0.3333333
Number of Support Vectors: 1800
J'ai un graphique 3d de mes données, où la 4ème dimension est de la couleur, à l'aide de plot3d. Comment puis-je superposition de la hyperplane que svm trouvé? Comment puis-je tracer la hyperplane? J'aimerais visualiser la régression hyperplane.
source d'informationauteur CodeGuy
Vous devez vous connecter pour publier un commentaire.
Vous avez écrit:
Mais selon:
vous faites classification.
Alors, tout d'abord décider ce dont vous avez besoin: à classer ou à droite de régression, de
?svm
nous voyons:Comme je crois que vous n'avez pas modifié le paramètre
type
de sa valeur par défaut, vous êtes probablement à la résolution declassification
donc, je vais vous montrer comment visualiser ce pour la classification.Supposons qu'il y a
2
classes, de produire des données:Puisque vous voulez
kernel='linear'
la limite doit êtrew1*x + w2*y + w3*z - w0
- hyperplane.Notre tâche divise pour 2 sous-tâches: 1) évaluer l'équation de cette limite avion 2) dessiner ce plan.
1) l'Évaluation de l'équation de la frontière avion
D'abord, arrêtons-nous
svm()
:Je l'ai écrit ici explicitement
type=C-classification
juste pour l'accent que nous voulons faire classification.scale=FALSE
signifie que nous voulonssvm()
à fonctionner directement avec les données fournies sans mise à l'échelle des données (comme il le fait par défaut). Je l'ai fait pour de futures évaluations qui deviennent plus simples.Malheureusement,
svm_model
ne stocke l'équation de la frontière de l'avion (ou juste, vecteur normal), donc nous devons l'évaluer. De svm-algorithme nous savons que nous pouvons évaluer de tels poids avec la formule suivante:Le négatif d'interception est stocké dans
svm_model
et accessible viasvm_model$rho
.2) du plan de Dessin.
Je ne trouve pas de fonction utile
plane3d
donc, encore une fois, nous devrions faire un peu de bricolage. Nous venons de prendre de la grille de paires(x,y)
et d'évaluer la valeur appropriée dez
de la frontière de l'avion.Nous l'avons fait avec
rgl
paquet, vous pouvez faire tourner cette image et d'en profiter 🙂Je commence tout juste dans la R moi-même, mais il y a un décent tutoriel sur l'utilisation du package e1071 dans R pour régression plutôt que la classification:
http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_Support_Vector_Regression.pdf
avec un fichier zip de l'ensemble de données de test et de R script dans:
http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/qsar.zip
Sauter la première section de Tanagra et la tête droite à la section 6 (page 14). Il a ses défauts, mais il donne des exemples de l'utilisation de R pour la régression linéaire, le SVR avec epsilon-régression et nu-régression. Il rend également un coup de couteau à démontrer la tune (), méthode (mais pourrait faire mieux, à mon humble avis).
(Remarque: si vous choisissez d'exécuter les exemples dans ce document, ne vous embêtez pas à essayer de trouver une copie de travail de xlsReadWrite -- c'est beaucoup plus facile à exporter qsar.xls comme une .fichier csv et l'utilisation juste de lire.csv() pour charger le jeu de données.)