Comment gérer un SVM avec des attributs catégoriels

18

J'ai un espace de 35 dimensions (attributs). Mon problème analytique est un problème de classification simple.

Sur 35 dimensions, plus de 25 sont catégoriques et chaque attribut prend plus de 50 types de valeurs.

Dans ce scénario, l'introduction d'une variable fictive ne fonctionnera pas non plus pour moi.

Comment puis-je exécuter un SVM sur un espace qui a beaucoup d'attributs catégoriels?

Hima
la source

Réponses:

22
  1. Si vous êtes sûr que l'attribut catégoriel est réellement ordinal, alors traitez-le simplement comme attribut numérique.
  2. Sinon, utilisez une astuce de codage pour le transformer en attribut numérique. Selon la suggestion de l'auteur de libsvm, on peut simplement utiliser le codage 1-of-K. Par exemple, supposons un attribut de catégorie à 1 dimension prenant la valeur de . Il suffit de le transformer en nombres tridimensionnels tels que , B = (0,1,0) , C = (0,0,1) . Bien sûr, cela entraînera des dimensions considérablement supplémentaires dans votre problème, mais je pense que ce n'est pas un problème sérieux pour le solveur SVM moderne (quel que soit le type linéaire ou le type de noyau que vous adoptez).{UNE,B,C}UNE=(1,0,0)B=(0,1,0)C=(0,0,1)
pengsun.thu
la source
+1 C'est ce que j'allais dire aussi! En passant, j'ajouterais également que le partitionnement récursif est parfois utilisé pour identifier le meilleur endroit pour effectuer des coupes dans les fonctionnalités à valeur continue, pour les partitionner en bacs.
Kyle.
Intéressant! Le "partitionnement récursif" me semble être un arbre (binaire). Une différence entre ces deux idées? De plus, SVM est déjà capable de gérer une fonctionnalité continue, pourquoi la transformer en bacs (encore une fois, des données catégoriques)?
pengsun.thu
3
La création de variables fictives k-1 n'est-elle pas suffisante pour une variable catégorielle de niveau k? par exemple A = (1,0,0), B = (0,1,0) ici, en sautant (0,0,1)?
Valeur aberrante
question de suivi: aucune mise à l'échelle supplémentaire n'est-elle requise pour les données factices 0-1?
AZhao