J'implémente un classificateur SVM non linéaire avec le noyau RBF. On m'a dit que la seule différence avec un SVM normal était que je devais simplement remplacer le produit scalaire par une fonction du noyau: Je sais comment fonctionne un SVM linéaire normal, c'est-à-dire qu'après avoir résolu le problème d'optimisation quadratique (double tâche), je calcule l'hyperplan diviseur optimal comme et le décalage de l'hyperplan respectivement, où est une liste de mes vecteurs d'apprentissage, sont leurs étiquettes respectives ( ),
Cependant, je ne pense pas que je puisse faire une telle chose avec un noyau RBF. J'ai trouvé des matériaux suggérant que . Cela faciliterait les choses. Néanmoins, je ne pense pas qu'une telle décomposition existe pour ce noyau et elle n'est mentionnée nulle part. La situation est-elle telle que tous les vecteurs supports sont nécessaires pour le classement? Si oui, comment puis-je classer dans ce cas?
la source
Réponses:
Soit représenter votre espace d'entrée, c'est-à-dire l'espace où résident vos points de données. Considérons une fonction telle qu'elle prend un point de votre espace d'entrée et le mappe à un point dans . Maintenant, disons que nous avons mappé tous vos points de données de à ce nouvel espace . Maintenant, si vous essayez de résoudre le svm linéaire normal dans ce nouvel espace au lieu de , vous remarquerez que tous les travaux antérieurs ont simplement la même apparence, sauf que tous les points sont représentés commeX Φ:X→F X F X F F X xi Φ(xi) et au lieu d'utiliser (produit scalaire) qui est le produit intérieur naturel de l'espace euclidien, nous le remplaçons par qui représente le produit intérieur naturel dans le nouvel espace . Donc, à la fin, votre ressemblerait,xTy ⟨Φ(x),Φ(y)⟩ F w∗
et donc,
De même,
et votre règle de classification ressemble à: .cx=sign(⟨w,Φ(x)⟩+b)
Jusqu'ici tout va bien, il n'y a rien de nouveau, car nous avons simplement appliqué le SVM linéaire normal à un espace différent. Cependant, la partie magique est la suivante -
Disons qu'il existe une fonction telle que . Ensuite, nous pouvons remplacer tous les produits scalaires ci-dessus par . Un tel est appelé une fonction du noyau.k:X×X→R k(xi,xj)=⟨Φ(xi),Φ(xj)⟩ k(xi,xj) k
Par conséquent, vos et ressemblent à,w∗ b∗
Pour quelles fonctions du noyau la substitution ci-dessus est-elle valable? Eh bien, c'est une question légèrement impliquée et vous voudrez peut-être prendre du matériel de lecture approprié pour comprendre ces implications. Cependant, j'ajouterai simplement que ce qui précède est vrai pour le noyau RBF.
Pour répondre à votre question, "La situation est-elle telle que tous les vecteurs supports sont nécessaires pour le classement?" Oui. Comme vous pouvez le remarquer ci-dessus, nous calculons le produit interne de avec au lieu de calculer explicitement. Cela nous oblige à conserver tous les vecteurs de support pour la classification.w x w
Remarque: Les dans la section finale ici sont une solution au double du SVM dans l'espace et non . Est-ce à dire que nous devons connaître la fonction manière explicite? Heureusement non. Si vous regardez le double objectif, il se compose uniquement de produit interne et comme nous avons qui nous permet de calculer directement le produit interne, nous n'avons pas besoin de connaître explicitement . Le double objectif ressemble simplement à,hi F X Φ k Φ
la source