¿Mezclando datos continuos y binarios con SVM lineal?

15

Así que he estado jugando con SVM y me pregunto si esto es algo bueno:

Tengo un conjunto de características continuas (0 a 1) y un conjunto de características categóricas que convertí en variables ficticias. En este caso particular, codifico la fecha de la medición en una variable ficticia:

Hay 3 períodos de los que tengo datos y reservé 3 números de función para ellos:

20: 21: 22:

Entonces, dependiendo de qué período provengan los datos, se asignarán 1 características diferentes; los otros obtendrán 0.

¿Funcionará correctamente la SVM con esto o es algo malo?

Yo uso SVMLight y un núcleo lineal.

usuario3010273
fuente
Esto funciona bien
Marc Claesen
Lo que has hecho es lo suficientemente bueno. He dado una respuesta un poco detallada aquí - quora.com/Machine-Learning/…
TenaliRaman
@TenaliRaman, por favor, no publique enlaces a sitios que requieran uno para iniciar sesión antes de poder leer algo.
Marc Claesen
@MarcClaesen He replicado la respuesta a continuación.
TenaliRaman

Respuestas:

8

Los SVM manejarán tanto las variables binarias como las continuas siempre que realice algún preprocesamiento: todas las características deben escalarse o normalizarse. Después de ese paso, desde la perspectiva de los algoritmos, no importa si las características son continuas o binarias: para los binarios, ve muestras que están "lejos" o muy similares; para continuo también están los valores intermedios. El núcleo no importa con respecto al tipo de variables.

iliasfl
fuente
1
¿Cuál sería la mejor técnica de normalización?
Shlomi Schwartz
23

Replicando mi respuesta de http://www.quora.com/Machine-Learning/What-are-good-ways-to-handle-discrete-and-continuous-inputs-together/answer/Arun-Iyer-1

  • Reescalar características continuas acotadas: todas las entradas continuas que están acotadas, reescalarlas a hasta x = 2 x - max - min[1,1] .x=2xmaxminmaxmin
  • μσx=xμσ
  • Binarizar características categóricas / discretas: para todas las características categóricas, representarlas como múltiples características booleanas. Por ejemplo, en lugar de tener una característica llamada matrimonio_estado, tenga 3 características booleanas: casada_estado_solidario, casada_estado_mariado, casada_estado_divorciado y establezca adecuadamente estas características en 1 o -1. Como puede ver, para cada característica categórica, está agregando k característica binaria donde k es el número de valores que toma la característica categórica.

Rn

Rn

TenaliRaman
fuente
Bueno, este artículo es bastante interesante con respecto a las características categóricas. No se dice que la codificación única sea la mejor opción para las características categóricas, es lo que obtengo de ella.
mostrar
1
esta es una excelente respuesta, leí el enlace en el comentario de @displayname y es una comparación útil. Del artículo, parece que la codificación binaria es la mejor (no la que se describe en esta respuesta) y también bastante simple) Desde el enlace "Binario: primero las categorías se codifican como ordinales, luego esos enteros se convierten en binarios código, luego los dígitos de esa cadena binaria se dividen en columnas separadas. Esto codifica los datos en menos dimensiones que uno caliente, pero con cierta distorsión de las distancias ".
shelbypereira
El artículo dado por @displayname es un buen artículo, pero no debe tomarse al pie de la letra. Lo primero que debe recordar es que casi todos los métodos de ML funcionan con similitud o medida de distancia. La elección del método de codificación influye directamente en cómo se miden las distancias o similitudes entre dos puntos. Una codificación en caliente 1 dice que un objeto de una categoría es similar solo a sí mismo o de manera equivalente, coloca todas las categorías en la misma distancia entre sí. Sin embargo, hay casos en que ciertas categorías están más cerca que otras. En cuyo caso, una codificación diferente puede ayudar.
TenaliRaman