Eu tenho acesso a um conjunto de dados muito grande. Os dados são de gravações do MEG de pessoas ouvindo trechos musicais, de um dos quatro gêneros. Os dados são os seguintes:
- 6 Sujeitos
- 3 Repetições experimentais (épocas)
- 120 tentativas por época
- 8 segundos de dados por tentativa a 500Hz (= 4000 amostras) de 275 canais MEG
Portanto, cada "exemplo" aqui é uma matriz de tamanho [4000x275], e existem 2160 desses exemplos, e isso é antes de qualquer extração de recurso. O objetivo é prever o gênero com base no sinal do cérebro (classificação de 4 classes).
Claramente, existem algumas questões desafiadoras aqui, a saber:
- O conjunto de dados não cabe na memória
- Haverá fortes correlações temporais nos dados e a variação interindividual será enorme. Como resultado, não é óbvio como dividir os dados
- A relação sinal / ruído é muito baixa
- Não é óbvio quais seriam os recursos corretos para um classificador
Por sua vez:
Existem várias coisas que se pode fazer. Em primeiro lugar, podemos reduzir com segurança a amostra de 500Hz a ~ 200Hz, pois mesmo levando em consideração o limite de Nyquist, a atividade cerebral realmente não ocorre acima de 100Hz. Também poderíamos subamostras do conjunto de canais (por exemplo, centralizar nas áreas auditivas), mas preferimos não fazer isso a priori , pois pode haver atividades em outras áreas (frontais etc.) que possam ser de interesse. Provavelmente também podemos eliminar uma parte da janela de tempo. Talvez apenas os dois primeiros sejam importantes para a tarefa? Não é realmente conhecido. Claro que todos vão gritar " Redução de dimensionalidade! ", mas isso também não é trivial. Primeiro, teríamos que ter muito cuidado com nossas divisões de trem / teste (consulte 2.) e também não é óbvio fazer isso antes ou depois da geração de recursos. Em segundo lugar, além de caro validação cruzada ou inspeção visual minuciosa, não há maneira óbvia de selecionar o método apropriado ou o número apropriado de dimensões.É claro que poderíamos simplesmente usar, por exemplo, PCA, ICA ou projeções aleatórias e esperar o melhor ....
Isso é complicado. Se tivermos amostras sucessivas no conjunto de treinamento, é provável que super-ajustemos o conjunto de treinamento, enquanto que se tivermos amostras sucessivas divididas nos conjuntos de trem e teste, é provável que sub-ajustemos o conjunto de treinamento, mas ainda podemos super-ajustá-lo. Parece haver várias opções aqui:
- Classificação de assunto único . Pegue cada sujeito individualmente por conta própria e divida de acordo com as épocas. Essa deve ser a tarefa mais fácil, pois não estamos tentando prever através do cérebro. Dentro deste, pode-se usar as duas épocas restantes para validação cruzada. Para completar, deve-se girar todas as combinações. Simplesmente reportaríamos a precisão média de todos os assuntos. É claro que não esperaríamos que esses modelos generalizassem bem.
- Dentro da classificação dos sujeitos . Leve todos os assuntos juntos e divida de acordo com as épocas. De fato, essa pode ser a tarefa mais fácil, pois já vimos todos os assuntos em treinamento. No entanto, provavelmente não esperaríamos que os modelos generalizassem bem para novos assuntos. Dentro deste, pode-se usar as duas épocas restantes para validação cruzada. Para completar, deve-se girar todas as combinações.
- Classificação entre sujeitos . Também conhecido como "deixar de fora", onde um único sujeito é considerado como dados de teste e o restante é usado para treinamento. Em seguida, alternaríamos entre todos os assuntos. A validação cruzada seria realizada sobre os sujeitos. Esperamos que essa seja uma tarefa muito mais difícil, pois estamos tentando prever um "novo cérebro" a cada vez. Aqui esperamos que os modelos generalizem bem para a população maior, embora exista um problema de confiabilidade teste-reteste (ou seja, quanto o excesso de ajuste é causado por correlações temporais).
Esse é um problema clássico da "agulha no palheiro" - o sinal real relacionado ao reconhecimento de gênero musical ou qualquer processamento específico a esse gênero provavelmente será minúsculo em comparação à "sopa" de atividade no cérebro. Também existem artefatos notáveis que só podem ser parcialmente removidos (principalmente relacionados ao movimento). Quaisquer recursos que derivamos dos dados e quaisquer maneiras pelas quais os dados são tratados devem evitar destruir parte do sinal de interesse.
Aqui alguém poderia imaginar fazendo várias coisas. O primeiro seria simplesmente usar os dados brutos (concatenados em um vetor) como o vetor de recurso. Não sei ao certo quão frutífero isso é - acho que esses vetores provavelmente seriam essencialmente uniformemente aleatórios. Essa é realmente uma questão de processamento de sinal, mas existem algumas diretrizes gerais que podemos seguir. Uma é fazer a análise de Fourier padrão em uma janela deslizante, de onde os componentes podem ser divididos em faixas de frequência distintas (alfa / beta / gama, etc.), e as estatísticas delas (média, desvio padrão) podem ser usadas como recursos. Ou pode-se usar Wavelets, Hilbert Transforms, ou mesmo tentar procurar atratores caóticos. Obviamente, temos a opção de kernels (lineares, polinomiais, RBF etc) que multiplicam o número de permutações. Talvez a melhor coisa a fazer aqui seja gerar o maior número possível de conjuntos de recursos e, em seguida, use o MKL ou métodos de aprimoramento para combiná-los.
Como você abordaria esse tipo de conjunto de dados (se não este especificamente)? Há algo que eu perdi ao longo do caminho? Qual é a estratégia mais provável para ter sucesso, sem gastar uma quantidade infinita de tempo e recursos computacionais do pesquisador?