Manejo de conjuntos de datos de series temporales muy grandes

10

Tengo acceso a un conjunto de datos muy grande. Los datos provienen de grabaciones MEG de personas que escuchan extractos musicales, de uno de los cuatro géneros. Los datos son los siguientes:

  • 6 sujetos
  • 3 repeticiones experimentales (épocas)
  • 120 ensayos por época
  • 8 segundos de datos por prueba a 500Hz (= 4000 muestras) de 275 canales MEG

Entonces cada "ejemplo" aquí es una matriz de tamaño [4000x275], y hay 2160 de tales ejemplos, y eso es antes de cualquier extracción de características. El objetivo es predecir el género en función de la señal cerebral (clasificación de 4 clases).

Claramente, hay algunos problemas difíciles aquí, a saber:

  1. El conjunto de datos no cabe en la memoria
  2. Habrá fuertes correlaciones temporales en los datos, y la variación entre sujetos será enorme. Como resultado, no es obvio cómo dividir los datos
  3. La relación señal / ruido es muy baja.
  4. No es obvio cuáles serían las características correctas para un clasificador

Tomando estos a su vez:

  1. Hay varias cosas que uno puede hacer. En primer lugar, podemos reducir la muestra de forma segura de 500Hz a ~ 200Hz, ya que incluso teniendo en cuenta el límite de Nyquist, la actividad cerebral realmente no ocurre a más de 100Hz. También podríamos submuestrear del conjunto de canales (por ejemplo, centrarse sobre áreas auditivas), pero preferimos no hacer esto a priori , ya que puede haber actividad en otras áreas (frontal, etc.) que podrían ser de interés. Probablemente también podamos soltar una parte de la ventana de tiempo. ¿Quizás solo los primeros 2 sean importantes para la tarea? No se sabe realmente. Por supuesto, todos gritarán " Reducción de dimensionalidad! ", pero eso tampoco es trivial. En primer lugar, tendríamos que tener mucho cuidado con nuestras divisiones de tren / prueba (ver 2.) y tampoco es obvio si hacer esto antes o después de la generación de características. En segundo lugar, aparte de caro validación cruzada o minuciosa inspección visual, no hay una manera obvia de seleccionar el método apropiado o el número apropiado de dimensiones. Por supuesto, podríamos usar, por ejemplo, PCA, ICA o proyecciones aleatorias y esperar lo mejor ...

  2. Esto es complicado Si tenemos muestras sucesivas en el conjunto de entrenamiento, es probable que sobreajustemos el conjunto de entrenamiento, mientras que si tenemos muestras sucesivas divididas en el conjunto de entrenamiento y prueba, es probable que no ajustemos el conjunto de entrenamiento, pero aún podríamos sobreajustar el conjunto de prueba. Parece que hay varias opciones aquí:

    • Clasificación de materia única . Tome cada tema individual por su cuenta y divídalo según las épocas. Esta debería ser la tarea más fácil, ya que no estamos tratando de predecir en todos los cerebros. Dentro de este se podrían usar las dos épocas restantes para la validación cruzada. Para completar, uno debe rotar todas las combinaciones. Simplemente informaríamos la precisión promedio sobre todas las materias. Por supuesto, no esperaríamos que estos modelos se generalicen bien en absoluto.
    • Dentro de la clasificación de asignaturas . Tome todos los temas juntos y divídalos según las épocas. De hecho, esta puede ser la tarea más fácil, ya que habremos visto todas las materias en formación. Sin embargo, probablemente no esperaríamos que los modelos se generalicen bien a nuevos temas. Dentro de este se podrían usar las dos épocas restantes para la validación cruzada. Para completar, uno debe rotar todas las combinaciones.
    • Clasificación entre asignaturas . También conocido como "dejar uno afuera", donde se toma un solo sujeto como datos de prueba, y el resto se usa para entrenamiento. Luego rotaríamos a través de todas las materias. La validación cruzada se realizaría sobre los sujetos. Es de esperar que esta sea una tarea mucho más difícil, ya que estamos tratando de predecir un "nuevo cerebro" cada vez. Aquí esperaríamos que los modelos se generalicen bien a la población más grande, aunque existe un problema de fiabilidad test-retest (es decir, cuánto sobreajuste es causado por correlaciones temporales).
  3. Este es un problema clásico de "aguja en un pajar": la señal real relacionada con el reconocimiento del género musical, o cualquier procesamiento específico del género, es probable que sea minúscula en comparación con la "sopa" de actividad en el cerebro. También hay artefactos notables que solo se pueden eliminar parcialmente (principalmente relacionados con el movimiento). Cualquier característica que derivemos de los datos, y las formas en que se tratan los datos, deben evitar destruir parte de la señal de interés.

  4. Aquí uno podría imaginarse haciendo varias cosas. El primero sería simplemente usar los datos sin procesar (concatenados en un vector) como el vector de características. Sin embargo, no estoy seguro de cuán fructífero es eso: creo que estos vectores probablemente serían esencialmente aleatorios de manera uniforme. Esta es realmente una pregunta de procesamiento de señales, pero hay algunas pautas generales que uno puede seguir. Una es hacer un análisis estándar de Fourier sobre una ventana deslizante, desde donde los componentes se pueden dividir en distintas bandas de frecuencia (alfa / beta / gamma, etc.), y las estadísticas de estos (desviación estándar, estándar ) se pueden usar como características. O uno podría usar Wavelets, Transformaciones de Hilbert, o incluso intentar buscar atractores caóticos. Por supuesto, entonces tenemos la opción de núcleos (lineal, polinomial, RBF, etc.) que multiplica el número de permutaciones. Quizás lo mejor que se puede hacer aquí es generar tantos conjuntos de características diferentes como sea posible, y luego usar MKL o métodos de refuerzo para combinarlos.

¿Cómo abordaría este tipo de conjunto de datos (si no este específicamente)? ¿Hay algo que me haya perdido en el camino? ¿Cuál es la estrategia más probable para tener éxito, sin gastar cantidades interminables de tiempo de investigación y recursos computacionales?

tdc
fuente

Respuestas:

4

@tdc. La caja de herramientas EEGLAB , que se diseñó específicamente, maneja todos y muchos más problemas que ha mencionado aquí con respecto al análisis de datos de neurociencia, incluidos: reducción de dimensionalidad, clasificación dentro / entre sujetos, relación señal / ruido, etc., etc. para manejar ese tipo de datos de neurociencia:

EEGLAB es una caja de herramientas interactiva de Matlab para procesar EEG, MEG y otros datos electrofisiológicos continuos y relacionados con eventos que incorporan análisis de componentes independientes (ICA), análisis de tiempo / frecuencia, rechazo de artefactos, estadísticas relacionadas con eventos y varios modos útiles de visualización del promedio y datos de un solo ensayo.

Por lo tanto, con respecto a su pregunta "¿Cuál es la estrategia más probable para tener éxito, sin gastar cantidades interminables de tiempo de investigación", me gustaría animarlo a que vea el taller en línea EEGLAB y continúe desde allí ...

Actualización: para más cosas de ML, eche un vistazo al (nuevo) modelo BCILAB

Dov
fuente
1
De hecho, he usado EEGLAB en el pasado, aunque principalmente son funciones subyacentes en lugar de la GUI completa (que solía ser un poco lenta e inestable). Sin embargo, está orientado principalmente al análisis univariado de masas en lugar del análisis multivariado, aunque admito que no lo he visto en mucho tiempo. ¿Tienes experiencia en ello?
tdc
Creo que han progresado mucho en los últimos dos años ... y estoy usando tanto la GUI como la función matlab. Este taller de 2010 es muy útil y se corrigieron muchos errores, se agregaron muchos modelos como STUDY y otros. Estoy muy satisfecho porque me ahorra tiempo y dinero, sin embargo, tenga en cuenta que estoy trabajando principalmente con datos EEG y no con MEG.
Dov
1
ok interesante En principio, no veo ninguna diferencia entre EEG y MEG, ya que esencialmente miden la actividad eléctrica del cerebro, además de los tipos de artefactos y la cantidad de sensores. ¿Has combinado EEGLAB con Machine Learning?
tdc
seguro. todo el tiempo. todo está en matlab ... así que una vez que cargue sus datos en EEGLAB. puedes usar PCA / ICA (esto es lo que estoy haciendo) y luego entrenar a tu clasificador / agrupamiento favorito SVM, fisher o k-mean ... solo nómbralo.
Dov
1
Esta es una gran respuesta para su alcance, pero sería bueno ver un resumen de cómo se maneja cada uno de estos problemas independientemente de una caja de herramientas que se base en un sistema propietario.
estrella brillante