Me gustaría saber si existe un código para entrenar una red neuronal convolucional para hacer una clasificación de series de tiempo.
He visto algunos documentos recientes ( http://www.fer.unizg.hr/_download/repository/KDI-Djalto.pdf ) pero no estoy seguro de si existe algo o si lo he codificado yo mismo.
Respuestas:
Si desea una solución de caja negra de código abierto, intente buscar en Weka , una biblioteca java de algoritmos de ML. Este tipo también ha usado Capas Covolucionales en Weka y puedes editar su código de clasificación para adaptarse a una tarea de clasificación de series de tiempo.
En cuanto a la codificación de la suya ... Estoy trabajando en el mismo problema usando la biblioteca de Python, theano ( editaré esta publicación con un enlace a mi código si la descifro pronto). Aquí hay una lista exhaustiva de todos los documentos que utilizaré para ayudarme después de una buena hora de búsqueda en la web:
Como punto de partida, puede editar el código que se encuentra aquí para clasificarlo en un número diferente de categorías, o editarlo desde la clasificación hasta la regresión. Lo hice eliminando la capa final de softmax y creando un solo nodo de salida. Lo entrené en rodajas de una función
y=sin(x)
como una prueba.fuente
Es completamente posible usar un CNN para hacer predicciones de series de tiempo, ya sea regresión o clasificación. Las CNN son buenas para encontrar patrones locales y, de hecho, las CNN funcionan con el supuesto de que los patrones locales son relevantes en todas partes. También la convolución es una operación bien conocida en series de tiempo y procesamiento de señales. Otra ventaja sobre los RNN es que pueden ser muy rápidos de calcular ya que pueden ser paralelos en oposición a la naturaleza secuencial de RNN.
En el siguiente código, demostraré un estudio de caso en el que es posible predecir la demanda de electricidad en R utilizando keras. Tenga en cuenta que este no es un problema de clasificación (no tenía un ejemplo a mano) pero no es difícil modificar el código para manejar un problema de clasificación (use una salida softmax en lugar de una salida lineal y una pérdida de entropía cruzada).
El conjunto de datos está disponible en la biblioteca fpp2:
A continuación creamos un generador de datos. Esto se utiliza para crear lotes de datos de capacitación y validación que se utilizarán durante el proceso de capacitación. Tenga en cuenta que este código es una versión más simple de un generador de datos que se encuentra en el libro "Aprendizaje profundo con R" (y la versión en video del mismo "Aprendizaje profundo con R en movimiento") de publicaciones de personal.
A continuación, especificamos algunos parámetros para pasar a nuestros generadores de datos (creamos dos generadores, uno para capacitación y otro para validación).
El parámetro de retrospectiva es qué tan lejos en el pasado queremos mirar y qué tan lejos en el futuro queremos predecir.
Luego dividimos nuestro conjunto de datos y creamos dos generadores:
train_dm <- dm [1: 15000,]
Luego creamos una red neuronal con una capa convolucional y entrenamos el modelo:
Finalmente, podemos crear un código para predecir una secuencia de 24 puntos de datos usando un procedimiento simple, explicado en los comentarios de R.
y voilá:
No está mal.
fuente