Loading [MathJax]/jax/element/mml/optable/BasicLatin.js

1 votos

Problema de clasificación temporal (¿cómo formatear los datos?)

Estoy trabajando en un proyecto en el que se realiza una prueba física a lo largo del tiempo para decidir si un objeto es diagnosticado como clase A o clase B. Normalmente, estas pruebas pueden durar alrededor de 2.5-3 horas, por lo que se registra cada paso de tiempo t. t suele durar alrededor de un segundo, por lo que cada fila tiene un conjunto de características en un segundo en particular durante la prueba. Una vez completada la prueba, se decide si el objeto es del tipo A o B. Normalmente, los humanos miran el gráfico de la serie temporal de la prueba para determinar esta clasificación, pero a mí me han encargado automatizarlo.

El problema es que cada archivo CSV de una prueba tiene aproximadamente de 9000 a 11000 (2.5 a 3 multiplicado por 3600 segundos en una hora) filas, ya que la duración de la prueba puede variar. La cantidad de características/columnas es fija. Tengo N archivos CSV, que representan los datos de la serie temporal de una prueba realizada en un objeto de muestra (nota: siempre se evalúa una muestra una vez). Entonces, mi pregunta: ¿Hay alguna manera de agregar cada muestra para tener un solo marco de datos para entrenar mi clasificador? ¿O hay otro enfoque?

Para agregar más claridad, tendré que hacer predicciones en archivos CSV que tienen dimensiones de fila inconsistentes debido a la variabilidad en el tiempo de prueba.

Por ejemplo:

  • csv1.shape = (8751, 1257) --> Predicción: Clase A
  • csv2.shape = (10321, 1257) --> Predicción: Clase A
  • csv3.shape = (9978, 1257) --> Predicción: Clase B

0 votos

Entonces, en tu conjunto de entrenamiento, digamos que hay M objetos. ¿Significa esto que tienes MN archivos?

0 votos

@gunes una prueba realizada para un objeto, por lo que tengo N archivos para N objetos (realicé una edición en la publicación original).

0 votos

En mi opinión, no es una buena idea clasificar esto como un problema de clasificación (elección forzada, decisión prematura) (ver esto). En su lugar, considere usar un modelo de probabilidad (por ejemplo, regresión logística) o una máquina de probabilidad. Lo que más interesa es estimar la tendencia para la clase de diagnóstico B, no hacer clasificaciones arbitrarias (que son especialmente irrelevantes cuando la probabilidad de pertenencia a la clase es alrededor de 0.5).

3voto

Josiah Puntos 151

Puedes intentar tratar la serie temporal de cada objeto como una función, y usar herramientas de análisis de series temporales funcionales (o análisis de datos funcionales) para analizarla.

Aquí tienes un artículo Clustering and Forecasting Multiple Functional Time Series que intenta hacer esto.

También hay un paquete de R para el análisis de series temporales funcionales aquí. Posiblemente podrías intentar realizar un análisis de componentes principales y luego clasificar las series temporales en base a los coeficientes.

1voto

Una opción sería calcular estadísticas resumen (por ejemplo, media, mínima, máxima, autocorrelación de diferentes grados, etc.) de cada serie temporal para cada característica y representar un objeto con un largo conjunto de características.

Otra opción es alimentar la serie temporal multivariada en una arquitectura similar a LSTM y entrenar con la serie cruda. Aunque cabe señalar que hacer que las LSTMs funcionen con series temporales de diferentes longitudes es posible pero puede requerir atención especial.

0 votos

Tengo la idea de resumen estadístico anotada para cosas que debería probar, sin embargo, estoy un poco escéptico al respecto ya que siento que podría perder información importante, como picos anómalos en una característica en un paso de tiempo particular. ¿Podrías expandir más sobre cómo puedo usar un modelo LSTM para entrenar en cada archivo CSV de series temporales (una vez más, cada archivo describe lo que debería ser un ejemplo de entrenamiento)? Por lo que entiendo sobre LSTM utilizando un marco de ML como TensorFlow, solo puedes usar 1 dataframe/CSV como entrada.

0 votos

Necesitas preparar tus datos, no es lo mismo, pero este enlace puede ayudarte: machinelearningmastery.com/…

0 votos

Estoy pensando en seguir el enfoque visto en el comentario de Saad aquí: stackoverflow.com/questions/54794867/… Me gustaría conocer tu opinión.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X