¿Es mejor codificar características como mes y hora como factor o numérico en un modelo de aprendizaje automático?
Por un lado, creo que la codificación numérica podría ser razonable, porque el tiempo es un proceso progresivo (el quinto mes es seguido por el sexto mes), pero por otro lado, creo que la codificación categorial podría ser más razonable debido a la naturaleza cíclica de años y días (al mes 12 le sigue el primero).
¿Existe una solución o convención general para esto?
Respuestas:
¿Ha considerado agregar la transformación (seno, coseno) de la variable de hora del día? Esto asegurará que las 0 y 23 horas, por ejemplo, estén cerca una de la otra, permitiendo así que la naturaleza cíclica de la variable brille.
( Más información )
fuente
La respuesta depende del tipo de relaciones que desee representar entre la característica de tiempo y la variable de destino.
Si codifica el tiempo como numérico, está imponiendo ciertas restricciones al modelo. Para un modelo de regresión lineal, el efecto del tiempo ahora es monótono, ya sea que el objetivo aumente o disminuya con el tiempo. Para los árboles de decisión, los valores de tiempo cercanos entre sí se agruparán.
Codificar el tiempo como categórico le da al modelo más flexibilidad, pero en algunos casos, el modelo puede no tener suficientes datos para aprender bien. Una técnica que puede ser útil es agrupar valores de tiempo en un cierto número de conjuntos y usar el conjunto como un atributo categórico.
Algunos grupos de ejemplos:
Cada uno de los anteriores también se puede usar directamente como un atributo categórico, dados los datos suficientes. Además, las agrupaciones también se pueden descubrir mediante análisis de datos, para complementar un enfoque basado en el conocimiento del dominio.
fuente
Recomiendo usar características numéricas. El uso de características categóricas significa esencialmente que no considera la distancia entre dos categorías como relevante (por ejemplo, la categoría 1 está tan cerca de la categoría 2 como de la categoría 3). Este definitivamente no es el caso durante horas o meses.
Sin embargo, el problema que plantea es que desea representar las horas y los meses de manera que 12 sea tan cercano a 11 como a 1. Para lograrlo, le recomiendo ir con lo sugerido en los comentarios y usar una función seno / coseno antes de usar las horas / meses como características numéricas.
fuente
Depende de qué algoritmo estés usando.
Si está utilizando algoritmos basados en árboles como bosque aleatorio, simplemente pase esta pregunta. La codificación categórica no es necesaria para los algoritmos basados en árboles.
Para otros algoritmos como la red neuronal, sugiero probar ambos métodos (continuo y categórico). El efecto difiere entre diferentes situaciones.
fuente
Debido a que todos los datos que tiene están bien definidos, le sugiero una codificación categórica, que también es más fácil de aplicar.
fuente
Para reformular la respuesta proporcionada por @raghu . Una diferencia importante entre las características categóricas y numéricas es si la magnitud de los números es comparable, es decir, ¿2019 es más grande que 2018 o diciembre (12) más grande que marzo (3)? Realmente no. Si bien hay un orden secuencial en estos números, su magnitud no es comparable. Por lo tanto, la transformación en un valor categórico puede tener más sentido.
fuente