Como lidar com um SVM com atributos categóricos

18

Eu tenho um espaço de 35 dimensões (atributos). Meu problema analítico é de classificação simples.

Das 35 dimensões, mais de 25 são categóricas e cada atributo leva mais de 50 tipos de valores.

Nesse cenário, a introdução de uma variável dummy também não funcionará para mim.

Como posso executar um SVM em um espaço que possui muitos atributos categóricos?

Hima
fonte

Respostas:

22
  1. Se você tem certeza de que o atributo categórico é realmente ordinal, trate-o apenas como atributo numérico.
  2. Caso contrário, use algum truque de codificação para transformá-lo em atributo numérico. De acordo com a sugestão do autor da libsvm, pode-se simplesmente usar a codificação 1-de-K. Por exemplo, suponha que um atributo de categoria unidimensional obtenha valor de . Basta transformá-lo em números tridimensionais, de modo que A = ( 1 , 0 , 0 ) , B = ( 0 , 1 , 0 ) , C = ( 0 , 0 , 1 ){UMA,B,C}UMA=(1,0 0,0 0)B=(0 0,1,0 0)C=(0 0,0 0,1). Obviamente, isso implicará em dimensões significativamente adicionais no seu problema, mas acho que esse não é um problema sério para o solucionador SVM moderno (independentemente do tipo Linear ou do Kernel que você adotar).
pengsun.thu
fonte
+1 Isso é o que eu ia dizer também! Como um aparte, eu também acrescentaria que o particionamento recursivo às vezes é usado para identificar onde melhor fazer cortes em recursos de valor contínuo, para particioná-los em compartimentos.
Kyle.
Interessante! O "particionamento recursivo" parece uma árvore (binária) para mim. Alguma diferença entre essas duas idéias? Além disso, o SVM já é capaz de lidar com recursos contínuos, por que devemos transformá-los em compartimentos (novamente, dados categóricos)?
precisa saber é o seguinte
3
A criação de variáveis ​​fictícias k-1 não é suficiente para a variável categórica no nível ak? por exemplo, A = (1,0,0), B = (0,1,0) aqui, pulando (0,0,1)?
Outlier
pergunta de acompanhamento: não é necessário dimensionamento adicional dos dados 0-1 simulados?
AZhao