Tengo un conjunto de datos compuesto por series de tiempo (8 puntos) con aproximadamente 40 dimensiones (por lo que cada serie de tiempo es de 8 por 40). La salida correspondiente (los posibles resultados para las categorías) es 0 o 1.
¿Cuál sería el mejor enfoque para diseñar un clasificador para series de tiempo con múltiples dimensiones?
Mi estrategia inicial fue extraer características de esas series de tiempo: media, estándar, variación máxima para cada dimensión. Obtuve un conjunto de datos que utilicé para entrenar un RandomTreeForest. Conociendo la ingenuidad total de esto, y después de obtener malos resultados, ahora estoy buscando un modelo más mejorado.
Mis leads son los siguientes: clasificar las series para cada dimensión (usando el algoritmo KNN y DWT), reducir la dimensionalidad con PCA y usar un clasificador final a lo largo de las categorías multidimensionales. Siendo relativamente nuevo en ML, no sé si estoy totalmente equivocado.
fuente
Respuestas:
Estás en el camino correcto. Observe el cálculo de algunas características más, tanto en el dominio del tiempo como en el de la frecuencia. Mientras el número de muestras >> el número de características, no es probable que se sobreajuste. ¿Existe alguna literatura sobre un problema similar? Si es así, eso siempre proporciona un excelente punto de partida.
Pruebe con un clasificador de árbol mejorado, como xgboost o LightGBM. Tienden a ser más fáciles de ajustar los hiperparámetros y proporcionan buenos resultados con los parámetros predeterminados. Tanto el bosque aleatorio como los clasificadores de árbol potenciados pueden devolver la importancia de la característica, por lo que puede ver qué características son relevantes para el problema. También puede intentar eliminar características para verificar cualquier covarianza.
Sin embargo, lo más importante es que si sus resultados son inesperadamente pobres, asegúrese de que su problema esté definido correctamente. Revise manualmente los resultados para asegurarse de que no haya errores en su cartera.
fuente
Si está en Python, hay un par de paquetes que pueden extraer automáticamente cientos o miles de funciones de su serie de tiempo, correlacionarlas con sus etiquetas, elegir los modelos más significativos y entrenar para usted.
https://github.com/blue-yonder/tsfresh
https://github.com/rtavenar/tslearn
fuente
Puede agregar más funciones a su conjunto de datos como se muestra a continuación.
Puede probar el paquete nolds si sus datos provienen de un proceso altamente no lineal.
max, min, mean, sesgo, curtosis y, si es posible, algunas estadísticas continuas.
Estoy trabajando en algo similar y formulé una pregunta relacionada .
fuente
Estoy de acuerdo con Jan van der Vegt, la estandarización (p. Ej., [-1, 1]) o la normalización N (0, 1) combinada con la función de activación pueden ser muy importantes con las redes neuronales. Verificaría la disertación de Pichaid Varoonchotikul: "Pronóstico de inundaciones utilizando redes neuronales artificiales" para los entresijos de las ANN. Tiene advertencias muy interesantes. De todos modos, estoy acostumbrado a probar primero sin, pero cuando los resultados no son satisfactorios, estoy acostumbrado a hacer ensayos con ambos. No estoy seguro de que ayude, pero comprobaría el paquete R TSclust y los documentos relacionados. Los autores son muy amables y te ayudarán a encontrar modelos específicos para hacerlo. ¡Son expertos en análisis de series temporales! ¡Buena suerte!
fuente