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:
- El conjunto de datos no cabe en la memoria
- 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
- La relación señal / ruido es muy baja.
- No es obvio cuáles serían las características correctas para un clasificador
Tomando estos a su vez:
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 ...
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).
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.
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?