Classificação de sequências de vetores

9

Meu conjunto de dados é composto por seqüências de vetores. Cada vetor possui 50 dimensões com valor real. O número de vetores em uma sequência varia de 3-5 a 10-15. Em outras palavras, o comprimento de uma sequência não é fixo.

Alguma quantidade razoável de seqüências (não vetores!) É anotada com um rótulo de classe. Minha tarefa é aprender um classificador que, dada uma sequência de vetores, o rótulo da classe para toda a sequência seja computado.

Não sei dizer a natureza exata dos dados, mas a natureza das sequências não é temporal. No entanto, um vector xEu não podem ser permutados com um vector sem alterar a etiqueta ( ). Em outras palavras, a ordem dos vetores é importante. Os vetores são comparáveis; por exemplo, faz sentido calcular um produto escalar e usar esse valor de similaridade.xjEuj

Minha pergunta é: quais são as ferramentas / algoritmos que podem ajudar a classificar esses dados?

UPDATE: Os dados têm uma propriedade que um ou muito poucos vetores influenciam fortemente o rótulo da classe.

SOLUÇÃO POSSÍVEL: Depois de algumas pesquisas, parece que as Redes Neurais Recorrentes (RNN) se encaixam perfeitamente na conta. A idéia geral é escolher um tamanho de contexto , concatenar vetores de palavras, fazer um pool máximo e alimentá-lo através do NN clássico. Em cada posição possível da janela de contexto em uma frase, um vetor de característica é construído. O vetor de recurso final é construído usando o pool máximo, por exemplo. A retropropagação é feita para ajustar os parâmetros da rede. Eu já obtive alguns resultados positivos (a GPU é uma obrigação).k

Vladislavs Dovgalecs
fonte

Respostas:

3

Como você não pode divulgar muitos detalhes, sou forçado a ser um pouco genérico na minha resposta. Espero que seja útil, no entanto. Antes de tudo, eu consideraria apenas reduzir as seqüências antes da classificação (seja usando o produto escalar ou qualquer outra coisa) se você puder ter certeza de que não perderá as informações necessárias para a classificação posteriormente. Portanto, essa abordagem só é viável se você tiver uma ideia da natureza da classificação. Para dar um exemplo simples: se o rótulo da classe for apenas o número de vetores em sua sequência, você não terá muito sucesso em prever o rótulo da classe no produto escalar.

Portanto, eu pegaria a sequência completa como uma entrada para classificação e imporia um máximo no comprimento da sequência que você deseja considerar. Você pode fazer isso encontrando primeiro o comprimento máximo da sequência m no seu conjunto de treinamento e depois transformando cada sequência de vetores 50-dimensionais em um vetor de dimensão 50 * m, possivelmente com alguns valores ausentes no final, se a sua sequência não tiver comprimento máximo. Você provavelmente desejará se livrar desses valores ausentes e pode simplesmente substituí-los por zeros.

Existem duas estradas a partir daqui: 1.) Você aplica diretamente métodos de classificação conhecidos por serem adequados para altas dimensões. Tente algo simples que não precise de muito ajuste como o ingênuo Bayes. Dessa forma, você pode ver se essa abordagem é viável sem perder muito tempo, se não for. 2.) Você tenta primeiro reduzir a dimensão e entender melhor a natureza da classificação. Você pode usar algo como análise de componentes principais ou analisar correlação / associação entre cada componente vetorial e o rótulo da classe. Se você tiver sucesso, sabe como reduzir adequadamente a dimensão de sua entrada antes de aplicar a classificação.

Se você deseja seguir alguma dessas idéias, lembre-se de que os detalhes concretos de seus dados e a classificação podem inviabilizar as idéias propostas acima. Portanto, verifique com atenção os detalhes que você conhece, mas não pode postar aqui antes de tentar garantir que não está perdendo tempo.

MightyCurious
fonte
0

Os dados têm uma propriedade que um ou muito poucos vetores influenciam fortemente o rótulo da classe.

A melhor (e mais fácil) abordagem provavelmente seria simplesmente treinar um classificador em cada vetor e, em seguida, calcular a média das previsões entre os vetores para uma determinada sequência. Os vetores importantes teriam forte influência em suas previsões, enquanto as previsões para os vetores sem importância seriam próximas de 0,5 (ou semelhantes para um problema de classificação não binário).

pir
fonte
Na verdade não. Especialmente se você tem muitos vectores sem informações importantes .. Se você ir por esse caminho, então definitivamente usar LSTM :)
pir