Aidez-moi à comprendre les machines à vecteurs de support


76

Je comprends les principes de base de l'objectif d'un support vectoriel en termes de classification d'un jeu d'entrées dans plusieurs classes différentes, mais ce que je ne comprends pas, ce sont certains détails de base. Pour commencer, l'utilisation des variables Slack me laisse un peu perplexe. Quel est leur but?

Je fais un problème de classification où j'ai capturé les lectures de pression des capteurs que j'ai placés sur la semelle intérieure d'une chaussure. Un sujet va s'asseoir, se tenir debout et marcher pendant quelques minutes pendant que les données de pression sont enregistrées. Je souhaite former un classificateur pour pouvoir déterminer si une personne est assise, debout ou marcher et pouvoir le faire pour toute donnée de test future. Quel type de classificateur dois-je essayer? Quel est le meilleur moyen pour moi de former un classificateur à partir des données que j'ai saisies? J'ai 1000 entrées pour être assis, debout et marcher (3x1000 = 3000 au total), et elles ont toutes la forme de vecteur de caractéristiques suivante. (pressionfromsensor1, pressionfromsensor2, pressionfromsensor3, pressionfromsensor4)


Réponses:


103

Je pense que vous essayez de partir d'une mauvaise fin. Ce que l’on doit savoir à propos de SVM, c’est que cet algorithme trouve un hyperplan dans un hyperespace d’attributs qui sépare le mieux deux classes, ce qui signifie mieux avec la plus grande marge entre les classes (la connaissance de la façon dont cela est fait brouille l'image globale), comme illustré par une image célèbre comme celle-ci: texte alternatif

Maintenant, il reste quelques problèmes.
Tout d’abord, qu’en est-il de ces aberrants vilains qui s’installent sans vergogne dans un centre de nuages ​​de points d’une autre classe?
texte alternatif
À cette fin, nous permettons à l'optimiseur de laisser certains échantillons mal étiquetés tout en punissant chacun de ces exemples. Pour éviter une optimisation multiobjectif, les pénalités pour les cas mal étiquetés sont fusionnées avec la taille de la marge avec l'utilisation du paramètre supplémentaire C qui contrôle l'équilibre entre ces objectifs.
Ensuite, parfois, le problème n’est tout simplement pas linéaire et aucun bon hyperplan ne peut être trouvé. Ici, nous introduisons l’astuce du noyau - nous projetons simplement l’espace non linéaire original dans un espace de dimension supérieure avec une transformation non linéaire, bien sûr défini par un ensemble de paramètres supplémentaires, en espérant que dans l’espace résultant le problème conviendra à un SVM:

texte alternatif

Encore une fois, avec quelques calculs et nous pouvons voir que toute cette procédure de transformation peut être élégamment cachée en modifiant la fonction objectif en remplaçant le produit scalaire des objets par la fonction dite du noyau.
Enfin, tout cela fonctionne pour 2 classes et vous en avez 3; Que dois-je faire avec ça? Ici, nous créons 3 classificateurs de classe 2 (assis - pas assis, debout - pas debout, marchez - pas marchez) et dans le classement, combinez ceux avec le vote.

Ok, les problèmes semblent résolus, mais nous devons sélectionner le noyau (ici nous consultons avec notre intuition et choisir RBF) et ajuster au moins quelques paramètres (noyau C +). Et nous devons avoir pour cela une fonction objective sûre, par exemple l'approximation d'erreur issue de la validation croisée. Nous laissons donc l'ordinateur en état de marche, prenons un café, revenons et constatons qu'il existe des paramètres optimaux. Génial! Nous commençons maintenant la validation croisée imbriquée pour avoir une approximation d'erreur et le tour est joué.

Ce bref flux de travail est bien sûr trop simplifié pour être parfaitement correct, mais il montre les raisons pour lesquelles je pense que vous devriez d’abord essayer avec une forêt aléatoire , qui est presque indépendante des paramètres, multiclassée de manière native, fournit une estimation non biaisée des erreurs et des performances presque aussi performantes que des SVM bien ajustés. .


5
(+1) Bien que vous ajoutiez des images pour illustrer le tout!
chl

3
@mbq Puisque vous semblez très compétent en SVM, laissez-moi vous demander de clarifier mon doute: une fois que nous avons trouvé le meilleur hyperplan séparateur, à quoi l'utilisons-nous? Nous pouvons définir SVM comme une méthode qui, d’une part, choisit le meilleur hyperplan pour classifier correctement les points de données et, d’autre part, elle utilise cet hyperplan pour diviser de nouveaux points de données dans les deux classes. Droite? (J'ai des doutes sur la deuxième partie)
DavideChicco.it

3
@ DavideChicco.it Fondamentalement, le problème central de l'ensemble du ML est de créer un modèle permettant de prédire de manière fiable de nouvelles données, alors oui.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.