Lors de l'utilisation de SVM, pourquoi dois-je faire évoluer les fonctionnalités?

9

Selon la documentation de l' objet StandardScaler dans scikit-learn:

Par exemple, de nombreux éléments utilisés dans la fonction objective d'un algorithme d'apprentissage (comme le noyau RBF des machines à vecteurs de support ou les régularisateurs L1 et L2 des modèles linéaires) supposent que toutes les fonctionnalités sont centrées autour de 0 et ont des variances dans le même ordre. Si une caractéristique présente une variance de plusieurs ordres de grandeur plus grande que d'autres, elle pourrait dominer la fonction objective et empêcher l'estimateur d'apprendre correctement des autres caractéristiques comme prévu.

Je devrais mettre à l'échelle mes fonctionnalités avant la classification. Existe-t-il un moyen simple de montrer pourquoi je dois le faire? Des références à des articles scientifiques seraient encore meilleures. J'en ai déjà trouvé un mais il y en a probablement beaucoup d'autres.

voyou
la source

Réponses:

16

Toutes les méthodes du noyau sont basées sur la distance. La fonction du noyau RBF est (en utilisant pour simplicité).κ(u,v)=exp(uv2)γ=1

Étant donné 3 vecteurs de fonctionnalités:

x1=[1000,1,2],x2=[900,1,2],x3=[1050,10,20].

alors , c'est-à-dire que est censé être plus similaire à qu'à .κ(x1,x2)=exp(10000)κ(x1,x3)=exp(2905)x1x3x2

Les différences relatives entre et: x1

x2[0.1,0,0],x3[0.05,10,10].

Donc, sans mise à l'échelle, nous concluons que est plus similaire à qu'à , même si les différences relatives par fonctionnalité entre et sont beaucoup plus grands que ceux de et .x1x3x2x1x3x1x2

En d'autres termes, si vous ne mettez pas à l'échelle toutes les fonctionnalités à des plages comparables, les fonctionnalités avec la plus grande plage domineront complètement dans le calcul de la matrice du noyau.

Vous pouvez trouver des exemples simples pour illustrer cela dans le document suivant: Un guide pratique pour prendre en charge la classification des vecteurs (section 2.2).

Marc Claesen
la source
vous voudrez peut-être aussi discuter de la régularisation: l'échelle des poids dépend de l'échelle des entrées ...
seanv507
L'effet de la régularisation est que différentes échelles impliquent différents optimaux , ce qui est quelque peu orthogonal à ce problème particulier. C
Marc Claesen
2
Mais il se pourrait en effet que la proximité le long d'une dimension soit plus importante. Le but n'est donc pas vraiment d'avoir la même variance dans toutes les entités, mais de les faire évoluer de telle sorte que les distances le long de chaque entité aient à peu près la même importance par rapport à la tâche.
isarandi
@Marc Claesen, si vos variables sont de différents ordres de grandeur, alors vos poids seront également de différents ordres de grandeur, et la norme l2 se concentrera sur les entrées qui ont une petite variance et des poids correspondants importants. autrement dit, la régularisation des normes de poids garantit que les «petits» intrants ont de petits effets. Cela n'a de sens que si vous avez standardisé "petit" (sur vos entrées), par exemple en normalisant vos variables
seanv507
1
@ seanv507 qui ne s'applique qu'aux SVM linéaires.
Marc Claesen
0

Cela dépend du noyau que vous utilisez. De loin le plus couramment utilisé (en dehors du linéaire) est le noyau gaussien, qui a la forme

f=exp(||x1x2||22σ2)

Un SVM prend cette fonction et l'utilise pour comparer la similitude d'un point ( ) à tous les autres points de l'ensemble d'apprentissage en additionnant les différences comme suit :x1

(x1l1)2+(x2l2)2...+(xnln)2

où est votre exemple et les valeurs de sont les points de repère.xl

Si la fonction va de 0 à 50 000 tandis que la fonction va de 0 à 0,01, vous pouvez voir que va dominer cette somme tandis que n'aura pratiquement aucun impact. Pour cette raison, il est nécessaire de mettre à l'échelle les fonctionnalités avant d'appliquer le kernal.x1x2x1x2

Si vous voulez en savoir plus, je recommande le module 12 (Support Vector Machines) du cours en ligne de Stanford sur l'apprentissage automatique à Coursera (gratuit et disponible à tout moment): https://www.coursera.org/course/ml

ralph346526
la source