Cómo lidiar con un SVM con atributos categóricos

18

Tengo un espacio de 35 dimensiones (atributos). Mi problema analítico es simple de clasificación.

De las 35 dimensiones, más de 25 son categóricas y cada atributo toma más de 50 tipos de valores.

En ese escenario, la introducción de una variable ficticia tampoco funcionará para mí.

¿Cómo puedo ejecutar un SVM en un espacio que tiene muchos atributos categóricos?

Hima
fuente

Respuestas:

22
  1. Si está seguro de que el atributo categórico es realmente ordinal, simplemente trátelo como un atributo numérico.
  2. Si no, use algún truco de codificación para convertirlo en atributo numérico. Según la sugerencia del autor de libsvm, uno simplemente puede usar la codificación 1-de-K. Por ejemplo, suponga que un atributo de categoría unidimensional toma valor de . Simplemente conviértalo en números tridimensionales como , , . Por supuesto, esto incurrirá en dimensiones significativamente adicionales en su problema, pero creo que no es un problema serio para el solucionador SVM moderno (sin importar el tipo lineal o el tipo de núcleo que adopte).{UN,si,C}UN=(1,0 0,0 0)si=(0 0,1,0 0)C=(0 0,0 0,1)
pengsun.thu
fuente
+1 ¡Esto es lo que iba a decir también! Como comentario adicional, también agregaría que la partición recursiva a veces se usa para identificar dónde hacer mejores cortes en las características de valor continuo, para dividirlas en contenedores.
Kyle.
¡Interesante! La "partición recursiva" me suena un árbol (binario). ¿Alguna diferencia entre estas dos ideas? Además, SVM ya es capaz de manejar la función continua, ¿por qué debemos convertirla en contenedores (nuevamente, datos categóricos)?
pengsun.thu 01 de
3
¿No es suficiente crear variables ficticias k-1 para una variable categórica de nivel k? por ejemplo, A = (1,0,0), B = (0,1,0) aquí, omitiendo (0,0,1)?
Outlier
pregunta de seguimiento: ¿no se requiere una escala adicional de los datos 0-1 simulados?
AZhao