J'utilise actuellement un SVM avec un noyau linéaire pour classer mes données. Il n'y a pas d'erreur sur le set d'entraînement. J'ai essayé plusieurs valeurs pour le paramètre ( ). Cela n'a pas modifié l'erreur sur l'ensemble de test.10 - 5 , … , 10 2
Maintenant, je me demande: est-ce une erreur causée par les liaisons Ruby car libsvm
j'utilise ( rb-libsvm ) ou est-ce théoriquement explicable ?
Le paramètre toujours modifier les performances du classificateur?
Réponses:
Le paramètre C indique à l'optimisation SVM à quel point vous voulez éviter de classer chaque exemple d'apprentissage de manière erronée. Pour les grandes valeurs de C, l'optimisation choisira un hyperplan à plus faible marge si cet hyperplan réussit mieux à classer correctement tous les points d'apprentissage. Inversement, une très petite valeur de C obligera l'optimiseur à rechercher un hyperplan de séparation à marge plus grande, même si cet hyperplan classe de manière erronée plus de points. Pour de très petites valeurs de C, vous devriez obtenir des exemples mal classés, souvent même si vos données d’entraînement sont séparables linéairement.
la source
Dans un SVM, vous recherchez deux choses: un hyperplan avec la marge minimale la plus grande et un hyperplan qui sépare correctement autant d'instances que possible. Le problème est que vous ne pourrez pas toujours obtenir les deux choses. Le paramètre c détermine à quel point votre désir pour ce dernier est grand. J'ai dessiné un petit exemple ci-dessous pour illustrer cela. Sur la gauche, vous avez un c bas qui vous donne une marge minimale assez large (violet). Cependant, cela nécessite que nous négligions la valeur aberrante du cercle bleu que nous n'avons pas classée correcte. Sur la droite vous avez un haut c. Maintenant, vous ne négligerez pas la valeur aberrante et vous vous retrouverez ainsi avec une marge beaucoup plus petite.
Alors, lequel de ces classificateurs est le meilleur? Cela dépend de ce à quoi ressembleront les données futures que vous prévoyez et, bien souvent, vous ne le savez pas. Si les données futures ressemblent à ceci:
alors le classifieur appris en utilisant une grande valeur c est le meilleur.
Par contre, si les données futures ressemblent à ceci:
alors le classifieur appris en utilisant une faible valeur c est le meilleur.
Selon votre ensemble de données, la modification de c peut produire ou non un hyperplan différent. Si elle ne produire un hyperplan différent, cela ne signifie pas que votre classificateur sortie différentes classes pour les données particulières que vous avez utilisé pour classer. Weka est un bon outil pour visualiser des données et jouer avec différents réglages d'un SVM. Cela peut vous aider à avoir une meilleure idée de l'apparence de vos données et de la raison pour laquelle changer la valeur c ne modifie pas l'erreur de classification. En général, le nombre limité d'instances de formation et de nombreux attributs facilite la séparation linéaire des données. De plus, le fait que vous évaluiez vos données d'entraînement et non de nouvelles données invisibles facilite la séparation.
Quels types de données essayez-vous d'apprendre un modèle? Combien de données? Peut-on le voir?
la source
C est essentiellement un paramètre de régularisation, qui contrôle le compromis entre l'obtention d'une erreur faible sur les données d'apprentissage et la réduction au minimum de la norme des poids. Il est analogue au paramètre de crête dans la régression de crête (en fait, il y a peu de différence de performance ou de théorie entre les SVM linéaires et la régression de crête, aussi j'utilise généralement la dernière - ou régression de crête de noyau s'il y a plus d'attributs que d'observations).
Le réglage correct de C est une étape essentielle dans les meilleures pratiques d’utilisation des SVM, car la minimisation des risques structurels (principe fondamental de l’approche de base) est partiellement mise en œuvre via le réglage de C. Le paramètre C impose une limite supérieure à la norme de poids, ce qui signifie qu'il existe un ensemble imbriqué de classes d'hypothèses indexées par C. En augmentant C, nous augmentons la complexité de la classe d'hypothèses (si nous augmentons légèrement C, nous pouvons toujours former tous les modèles linéaires que nous pouvions auparavant et aussi certains que nous ne pouvions pas avant nous avons augmenté la limite supérieure de la norme admissible des poids). Donc, en plus de mettre en œuvre SRM via la classification de la marge maximale, il est également implémenté par la limitation de la complexité de la classe d'hypothèses via le contrôle C.
Malheureusement, la théorie pour déterminer comment définir C n'est pas très bien développée pour le moment, aussi la plupart des gens ont-ils tendance à utiliser la validation croisée (s'ils font quoi que ce soit).
la source
C est un paramètre de régularisation qui contrôle le compromis entre l'obtention d'une erreur de formation faible et d'une erreur de test faible, à savoir la possibilité de généraliser votre classificateur à des données invisibles.
Considérons la fonction objectif d'un SVM linéaire: min | w | ^ 2 + C∑ξ. Si votre C est trop grand, l'algorithme d'optimisation essaiera de réduire | w | autant que possible conduisant à un hyperplan qui essaie de classer chaque exemple de formation correctement. Cela entraînera une perte des propriétés de généralisation du classifieur. D'autre part, si votre C est trop petit, vous donnez à votre fonction objectif une certaine liberté pour augmenter | w | beaucoup, ce qui entraînera une erreur d’entraînement importante.
Les images ci-dessous peuvent vous aider à visualiser cela.
la source
Les réponses ci-dessus sont excellentes. Après avoir lu attentivement vos questions, j’ai constaté qu’il y avait deux faits importants que nous pourrions négliger.
Étant donné les 2 faits, si les valeurs de C changent dans une plage raisonnable, l'hyperplan optimal se déplacera de manière aléatoire dans une faible mesure dans la marge (l'écart formé par les vecteurs de support).
Intuitivement, supposons que la marge sur les données d'apprentissage soit petite et / ou qu'il n'y ait pas de points de données de test dans la marge également, le décalage de l'hyperplan optimal dans la marge n'affectera pas l'erreur de classification de l'ensemble de test.
Néanmoins, si vous définissez C = 0, SVM ignorera les erreurs et tentera simplement de minimiser la somme des carrés des poids (w). Vous obtiendrez peut-être des résultats différents sur l'ensemble de tests.
la source
Le paramètre C est utilisé pour contrôler les valeurs aberrantes - C bas signifie que nous autorisons plus de valeurs aberrantes, C élevé signifie que nous autorisons moins de valeurs aberrantes.
la source
C élevé (coût) signifie que le coût de la classification erronée est augmenté. Cela signifie qu'un noyau flexible deviendra plus ondulé pour éviter les erreurs de classification des observations dans l'ensemble d'apprentissage.
Si le noyau doit être ondulé, le modèle ne se généralisera pas bien lors de la prévision sur de nouvelles données.
Si le noyau est rectiligne, le modèle ne se généralisera pas bien lors de la prévision sur de nouvelles données.
la source