Lidando com conjuntos de dados de séries temporais muito grandes

10

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:

  1. O conjunto de dados não cabe na memória
  2. Haverá fortes correlações temporais nos dados e a variação interindividual será enorme. Como resultado, não é óbvio como dividir os dados
  3. A relação sinal / ruído é muito baixa
  4. Não é óbvio quais seriam os recursos corretos para um classificador

Por sua vez:

  1. 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 ....

  2. 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).
  3. 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.

  4. 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?

tdc
fonte

Respostas:

4

@tdc. Todas e muitas outras questões que você mencionou aqui sobre a análise de dados de neurociência, incluindo: Redução de dimensionalidade, classificação dentro / entre sujeitos, razão sinal / ruído, etc., estão sendo tratadas pela caixa de ferramentas EEGLAB , que foram projetadas especificamente para lidar com esse tipo de dados de neurociência:

O EEGLAB é uma caixa de ferramentas interativa do Matlab para processar EEG, MEG e outros dados eletrofisiológicos contínuos e relacionados a eventos, incorporando análise de componentes independentes (ICA), análise de tempo / frequência, rejeição de artefatos, rejeição de artefatos, estatísticas relacionadas a eventos e vários modos úteis de visualização da média e dados de avaliação única.

Assim, com relação à sua pergunta "Qual é a estratégia mais provável de ter sucesso, sem gastar uma quantidade infinita de tempo de pesquisador", gostaria de encorajá-lo a assistir ao workshop on-line do EEGLAB e continuar a partir daí ...

Atualização: para mais informações sobre ML, dê uma olhada no (novo) modelo BCILAB

Dov
fonte
11
Na verdade, eu usei o EEGLAB no passado, embora principalmente sejam funções subjacentes e não a GUI completa (que costumava ser um pouco lenta e instável). No entanto, é mais voltado para a análise univariada em massa do que para a análise multivariada, embora eu admita que não a analise há algum tempo. Você tem experiência com isso?
tdc 17/02/12
Eu acho que eles fizeram grandes progressos nos últimos dois anos ... e eu estou usando tanto a interface gráfica quanto a função matlab. Este workshop de 2010 é muito útil e muitos bugs foram corrigidos, muitos modelos foram adicionados, como ESTUDO e outros. Estou muito satisfeito com isso, economizando tempo e dinheiro; no entanto, observe que estou trabalhando principalmente com dados de EEG e não com MEG.
Dov
11
ok interessante. Em princípio, não vejo diferença entre o EEG e o MEG, pois ambos medem a atividade elétrica do cérebro, além dos tipos de artefatos e do número de sensores. Você combinou o EEGLAB com o Machine Learning?
tdc 17/02/12
certo. o tempo todo. está tudo no matlab ... então, depois de carregar seus dados no EEGLAB. você pode usar PCA / ICA (é isso que eu estou fazendo) e, em seguida, treinar seu classificador / cluster SVM favorito, fisher ou k-mean ... apenas o nome.
Dov
11
Essa é uma ótima resposta para seu escopo, mas seria bom ver um resumo de como cada um desses problemas é tratado independentemente de uma caixa de ferramentas que depende de um sistema proprietário.
bright-star