Comment sélectionner le noyau pour SVM?

96

Lorsque vous utilisez SVM, nous devons sélectionner un noyau.

Je me demande comment sélectionner un noyau. Des critères sur la sélection du noyau?

xiaohan2012
la source
1
Quelle est la taille du problème? (# variables, observations)?
user603
1
Je demande simplement une solution généralisée, aucun problème particulier spécifié
xiaohan2012

Réponses:

55

Le noyau est effectivement une mesure de similarité, aussi choisissez-vous un noyau en fonction de la connaissance antérieure des invariances suggérée par Robin (+1).

En l'absence de connaissances approfondies, le noyau de la fonction de base radiale constitue un bon noyau par défaut (une fois que vous l'avez établi, le problème nécessite un modèle non linéaire).

Le choix des paramètres du noyau et du noyau / de régularisation peut être automatisé en optimisant une sélection de modèle basée sur la validation croisée (ou en utilisant les limites de la marge en radius ou de la plage). La solution la plus simple consiste à minimiser le critère de sélection de modèle en continu à l'aide de la méthode du simplexe de Nelder-Mead, qui ne nécessite pas de calcul de gradient et fonctionne bien pour les nombres raisonnables d'hyper-paramètres. Si vous avez plus de quelques hyper-paramètres à régler, la sélection automatique du modèle entraînera probablement un sur-ajustement important, en raison de la variance du critère de sélection du modèle. Il est possible d’utiliser l’optimisation par gradient, mais le gain en performances ne vaut généralement pas la peine de le coder).

Le choix automatisé des noyaux et des paramètres noyau / régularisation est une question délicate, car il est très facile d'ajuster le critère de sélection de modèle (généralement basé sur la validation croisée), et vous pouvez vous retrouver avec un modèle pire que celui que vous aviez commencé. La sélection automatique de modèles peut également biaiser l'évaluation des performances. Veillez donc à ce que votre évaluation des performances évalue l'ensemble du processus d'ajustement du modèle (formation et sélection des modèles). Pour plus d'informations, voir

GC Cawley et NLC Talbot, Prévention du sur-ajustement dans la sélection du modèle via la régularisation bayésienne des hyper-paramètres, Journal of Machine Learning Research, volume 8, pages 841 à 861, avril 2007. (pdf)

et

GC Cawley et NLC Talbot, sur-adaptation dans la sélection du modèle et biais de sélection subséquent dans l'évaluation de la performance, Journal of Machine Learning Research, vol. 11, pp. 2079-2107, juillet 2010. (pdf)

Dikran Marsupial
la source
1
Je comprends comment la base radiale est une mesure de similarité puisqu'elle est proche de 0 pour les vecteurs éloignés les uns des autres et atteint son maximum sur des vecteurs identiques. Cependant, je ne vois pas comment cette idée s’applique à l’algorithme linéaire (utilisation du produit scalaire comme noyau). Comment pouvons-nous interpréter le produit scalaire comme une mesure de similarité?
Bananin
1
@Bananin le produit scalaire peut être écrit comme le produit de la magnitude des deux vecteurs fois le cosinus de l'angle entre eux, vous pouvez donc penser qu'il mesure la similarité en termes de direction des vecteurs (mais évidemment aussi dépendant sur leurs magnitudes)
Dikran Marsupial
35

Si vous n'êtes pas sûr de ce qui conviendrait le mieux, vous pouvez utiliser des techniques de sélection automatiques (par exemple, validation croisée, ...). Dans ce cas, vous pouvez même utiliser une combinaison de classificateurs (si votre problème est la classification) obtenus avec un noyau différent.

Cependant , l’avantage de travailler avec un noyau est que vous modifiez la géométrie "euclidienne" habituelle afin qu’elle corresponde à votre propre problème. Aussi, vous devriez vraiment essayer de comprendre quel est l’intérêt d’un noyau pour votre problème, ce qui est particulier à la géométrie de votre problème . Cela peut inclure:

  • Invariance : s'il existe une famille de transformations qui ne modifient pas fondamentalement votre problème, le noyau devrait en tenir compte. L'invariance par rotation est contenue dans le noyau gaussien, mais vous pouvez penser à beaucoup d'autres choses: traduction, homothétie, toute représentation de groupe, ....
  • Qu'est-ce qu'un bon séparateur? si vous avez une idée de ce qu'est un bon séparateur (c'est-à-dire une bonne règle de classification) dans votre problème de classification, vous devez l'inclure dans le choix du noyau. Rappelez-vous que SVM vous donnera des classificateurs de la forme

f^(x)=i=1nλiK(x,xi)

Si vous savez qu'un séparateur linéaire serait bon, vous pouvez utiliser le noyau qui donne des fonctions affines (par exemple, ). Si vous pensez que des limites lisses dans l’esprit de KNN lisse seraient meilleures, vous pouvez alors prendre un noyau gaussien ...K(x,xi)=x,Axi+c

robin girard
la source
Dans votre réponse, vous avez indiqué que "l’avantage de travailler avec un noyau est que vous modifiez la géométrie" euclidienne "habituelle pour l’adapter à votre propre problème. Vous devez également essayer de comprendre quel est l’intérêt du noyau. pour votre problème, ce qui est particulier à la géométrie de votre problème ". Pouvez-vous donner quelques références pour commencer. Merci.
Raihana
12

J'ai toujours le sentiment que toute sélection de paramètre hypertexte pour les SVM se fait par validation croisée en combinaison avec la recherche par grille.

Bayerj
la source
2
J'ai le même sentiment
xiaohan2012
2
la recherche sur grille est une mauvaise idée, vous passez beaucoup de temps à chercher dans des domaines où les performances sont mauvaises. Utilisez des algorithmes d'optimisation sans gradient, tels que la méthode Nelder-Mead simplex, qui est bien plus efficace en pratique (par exemple, fminsearch () dans MATLAB).
Dikran Marsupial
Non, utilisez des modèles graphiques ou des processus gaussiens pour une optimisation globale en combinaison avec les informations attendues. (Voir 'Algorithmes pour l'optimisation hyper-paramètres', Bergstra et al, prochain NIPS)
bayerj
3

En général, le noyau RBF est un premier choix raisonnable. De plus, le noyau linéaire est un cas particulier de RBF. En particulier, lorsque le nombre d'entités est très grand, on peut simplement utiliser le noyau linéaire.

boyxiaolong
la source
2
Cela dépend si vos données sont séparables linéairement ou non, pas le nombre de dimensions que vous avez. Lorsque le nombre d'entités est très important (encore une fois, en fonction des données), appliquez d'abord la réduction de dimensionnalité, PCA ou LDA (variantes de noyau linéaires ou non linéaires)