¿Está bien mezclar datos categóricos y continuos para SVM (Support Vector Machines)?

14

Tengo un conjunto de datos como

+--------+------+-------------------+
| income | year |        use        |
+--------+------+-------------------+
|  46328 | 1989 | COMMERCIAL EXEMPT |
|  75469 | 1998 | CONDOMINIUM       |
|  49250 | 1950 | SINGLE FAMILY     |
|  82354 | 2001 | SINGLE FAMILY     |
|  88281 | 1985 | SHOP & HOUSE      |
+--------+------+-------------------+

Lo incrusto en un espacio vectorial de formato LIBSVM

+1 1:46328 2:1989 3:1
-1 1:75469 2:1998 4:1
+1 1:49250 2:1950 5:1
-1 1:82354 2:2001 5:1
+1 1:88281 2:1985 6:1

Índices de características:

  • 1 es "ingreso"
  • 2 es "año"
  • 3 es "uso / EXENTOS COMERCIALES"
  • 4 es "uso / CONDOMINIO"
  • 5 es "uso / UNA SOLA FAMILIA"
  • 6 es "uso / TIENDA Y CASA"

¿Está bien entrenar una máquina de vectores de soporte (SVM) con una combinación de datos continuos (año, ingresos) y categóricos (uso) como este?

Seamus Abshere
fuente
3
Debes deletrear "SVM", al menos una vez.
Peter Flom - Restablece a Monica
1
¡Asegúrese de escalar esos datos!
Patrick Caldon

Respuestas:

7

¡Si! Pero tal vez no de la manera que quieres decir. En mi investigación, con frecuencia creo características categóricas a partir de valores continuamente valorados utilizando un algoritmo como la partición recursiva . Usualmente uso este enfoque con la implementación SVMLight de máquinas de vectores de soporte, pero también lo he usado con LibSVM. Deberá asegurarse de asignar sus características categóricas particionadas a un lugar específico en su vector de características durante el entrenamiento y la clasificación, de lo contrario, su modelo terminará confundido.

Editar: es decir, cuando he hecho esto, asigno los primeros n elementos del vector a los valores binarios asociados con la salida de la partición recursiva. En el modelado de características binarias, solo tiene un vector gigante de 0 y 1, por lo que todo se ve igual para el modelo, a menos que indique explícitamente dónde están las diferentes características. Esto probablemente sea demasiado específico, ya que imagino que la mayoría de las implementaciones de SVM lo harán por sí solas, pero, si te gusta programar las tuyas, ¡podría ser algo en lo que pensar!

Kyle
fuente
1
gracias Kyle, ¿puedes ser un poco más específico? ¿Qué quiere decir "asignar sus características categóricas particionadas a un lugar específico"?
Seamus Abshere
@SeamusAbshere ¡No hay problema! ¡Edité mi respuesta para abordar esto!
Kyle.
Siento que escuché que libsvm hace lo que estás hablando automáticamente, ¿alguna idea?
Seamus Abshere
@SeamusAbshere Me imagino que tienes razón, pero no estoy seguro. Ahora que lo pienso, no estoy seguro de cómo podría funcionar de otra manera.
Kyle.
Envalentonado por la respuesta de @ Kyle, escribí una biblioteca Ruby ( VectorEmbed ) que realiza esta conversión (incrustación) automáticamente, tanto para datos categóricos (usando hashes Murmur32) como continuos. Produce archivos con formato libsvm.
Seamus Abshere