Quelle est la signification du paramètre nu dans la classe SVM de Scikit-Learn?

Je suis l'exemple montré dans http://scikit-learn.org/stable/auto_examples/svm/plot_oneclass.html#example-svm-plot-oneclass-py, où un SVM d'une classe est utilisé pour la détection d'anomalie. Maintenant, cela peut être une notation unique à scikit-learn, mais je n'ai pas trouvé d'explication sur la façon d'utiliser le paramètre nu donné au constructeur OneClassSVM.

Dans http://scikit-learn.org/stable/modules/svm.html#nusvc , Il est indiqué que le paramètre nu est une reparamétrisation du paramètre C (qui est le paramètre de régularisation que je connais) - mais n'indique pas comment effectuer cette reparamétérisation.

Une formule et une intuition seront très appréciées.

Merci!

23
demandé sur Guy Adini 2012-06-27 20:30:55

2 réponses

Le problème avec C et l'introduction de nu

Le problème avec le paramètre C est:

  1. qu'il peut prendre n'importe quelle valeur positive
  2. qu'il n'a pas d'interprétation directe.

Il est donc difficile de choisir correctement et il faut recourir à la validation croisée ou à l'expérimentation directe pour trouver une valeur appropriée.

En réponse Schölkopf et coll. SVM reformulé pour prendre un nouveau paramètre de régularisation nu. Ce paramètre est:

  1. délimité entre 0 et 1
  2. a une interprétation directe

Interprétation de nu

Le paramètre nu est une limite supérieure de la fraction des erreurs de marge et une limite inférieure de la fraction des vecteurs de support par rapport au nombre total d'exemples d'apprentissage. Par exemple, si vous le définissez sur 0,05, vous êtes assuré de trouver au plus 5% de vos exemples de formation mal classés (au prix d'une petite marge, cependant) et au moins 5% de vos exemples de formation étant pris en charge vecteur.

Relation entre C et nu

La relation entre C et nu est régie par la formule suivante:

nu = A+B/C

A et B sont des constantes qui ne sont malheureusement pas si faciles à calculer.

Conclusion

Le message à emporter est que C et nu SVM sont équivalents en ce qui concerne leur puissance de classification. La régularisation en termes de nu est plus facile à interpréter par rapport à C, mais le nu SVM est généralement plus difficile à optimiser et l'exécution ne le fait pas l'échelle ainsi que la variante C avec le nombre d'échantillons d'entrée.

Plus de détails (y compris les formules pour A et B) peuvent être trouvés ici: Chang CC, Lin CJ - "Training nu-support vector classifiers: theory and algorithms"

42
répondu Bernhard Kausler 2013-03-24 13:54:59

Nu dans les vecteurs de soutien est un hyper paramètre.

Dans C-SVM si nous voulons interroger un point x q alors

∑α, je.y, je.xjeT.xq+b pour i=1 à n

Comme nous le savons α, je pour suport vecteurs supérieure à zéro et pour les non-soutien vecotrs α, je=0.

Donc seuls les vecteurs de support sont importants pour calculer f (xq), mais dans C-SVM régulier, nous n'avons pas de contrôle sur le aucun.de vecteurs de support voici donc le nu-SVM

Nu:

  1. limite supérieure pour pas.d'erreur
  2. Limite Inférieure pour pas.des vecteurs de support

    Nu toujours se situe entre 0

Permet à de dire nu=0.1 et n=10,000

1.nous voulons au plus 10% d'erreurs => 1000 erreur de points
2.nous obtenons les vecteurs de soutien >= 1% =>nous obtenons plus de 1 000 vecteurs de soutien.

1
répondu Ravi Gurnatham 2018-09-03 20:37:07