Perte de charnière avec un classificateur un contre tous

9

Je regarde actuellement la forme primitive non contrainte du classificateur un contre tous

i=1NIk=1,kyiNKL(1+wkxiwyixi)

NI est le nombre d'instances, est le nombre de classes, est le nombre d'entités, est une matrice de données , est un vecteur d'étiquettes de classe, est une où chacune correspond aux poids de l'hyperplan divisant une classe du reste, est une fonction de perte arbitraire.
NK
NF
XNK×NF
y
WNK×NI
L

Ma compréhension est que la fonctionnalité ci-dessus essaie de trouver un hyperplan pour chaque classe qui maximise la distance entre les échantillons de la classe associée à tous les autres échantillons. Si les hyperplans sont correctement positionnés, doit toujours être négatif, doit toujours être positif et notre fonction de perte doit revenir. Plutot bas.wkxiwyixi

J'essaie de mettre en œuvre cela en utilisant la perte de charnière qui, je crois dans ce cas, finira par être

max(0,1+wkxiwyixi ).

Cependant, dans ce qui précède, nous ne pourrions pas nous retrouver dans une situation où les hyperplans classeraient tous les échantillons comme appartenant à chaque classe. Par exemple, si nous examinons l'hyperplan séparant la classe 1 de toutes les autres classes, à condition que alors la perte encourue sera de 0 bien que soit classé dans la mauvaise classe.1+wkxi<wyixixi

Où ai-je mal tourné? Ou n'a-t-il pas d'importance si est négatif ou positif à condition que se retrouve avec un score plus élevé? J'ai le sentiment que mon utilisation de la fonction de charnière telle que je l'ai décrite ici est incorrecte, mais mon utilisation de Google aujourd'hui n'a fait qu'engendrer plus de confusion.wkxiwyixi

Sur une note connexe, pourquoi y a-t-il un 1 dans la fonctionnalité ci-dessus? Je pense que cela aurait peu d'impact.

brcs
la source

Réponses:

2

Votre message semble être globalement correct.

La façon dont les classificateurs linéaires multiclasses sont configurés est qu'un exemple, , est classé par l'hyperplan qui donne le score le plus élevé: . Peu importe que ces scores soient positifs ou négatifs.xargmaxkwkx

Si la perte de charnière pour un exemple particulier est nulle, cela signifie que l'exemple est correctement classé. Pour voir cela, la perte de charnière sera nulle lorsque . C'est une condition plus forte que , ce qui indiquerait que l'exemple été correctement classé comme .1+wkxi<wyixikwkxi<wyixikiyi

Le 1 dans la perte de charnière est lié à la "marge" du classificateur.

La perte de charnière encourage les scores de la classe correcte, non seulement à être plus élevés que les scores de toutes les autres classes, , mais à être supérieurs à ces scores par un facteur additif.wyixiwkxi

Nous pouvons utiliser la valeur 1 pour la marge car la distance d'un point à un hyperplan est mise à l'échelle par la magnitude des poids linéaires: est la distance de à l'hyperplan avec vecteur normal . Étant donné que les pondérations sont les mêmes pour tous les points de l'ensemble de données, il importe seulement que le facteur d'échelle - 1 - soit le même pour tous les points de données.w|w|xxw

En outre, cela peut rendre les choses plus faciles à comprendre si vous paramétrez la fonction de perte comme . Vous disposez actuellement des fonctions de perte en fonction de la marge linéaire, et ce n'est pas forcément le cas.L(x,y;w)

user1149913
la source
Bienvenue sur le site. Vous pouvez utiliser ici. Pour obtenir un rendu correct, il suffit de l'envelopper dans des signes de dollar simples pour les mathématiques en ligne (comme dans un document ) et des signes de double dollar pour les mathématiques d'affichage. Consultez l'historique des révisions si vous avez besoin de plus d'aide. LATEXLATEX
Cardinal
En outre, je suppose que vous aviez peut-être l'intention d'utiliser \cdotau lieu de \dot. Si c'est le cas, veuillez continuer et apporter ces modifications. À votre santé. :)
Cardinal
0

Il manque le résultat / label binaire (qui peut prendre la valeur +1 et -1 pour une classe donnée) dans la fonction de perte: max (0, 1 - y * (w * x)) (voir détails ci-dessous).

Dans l'ensemble, je pense que la spécification ci-dessus (à la fois la notation et la fonction de perte) complique excessivement un contre tous - au lieu de cela, on pourrait simplement prendre une classe particulière, construire + 1 / -1 résultat y ainsi que la matrice de données correspondante X (avec Nf colonnes et lignes Ni) et le vecteur de paramètres w pour cette classe, et écrivez la fonction de perte de charnière correspondante pour un classificateur binaire classique pour cette classe: sum (max (0, 1 - y * (w * x)))) où la somme est sur toutes les instances de données, x est une ligne de X qui correspond à une instance particulière. On a besoin de "1" dans la fonction de perte de charnière (puisque y * (w * x)> = 1 correspond à la bonne prédiction du modèle en ce qui concerne la fonction de perte).

Yevgeny
la source