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:
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?
À 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:
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. .