Algoritmo para normalização em tempo real de dados de séries temporais?

12

Estou trabalhando em um algoritmo que utiliza um vetor do ponto de dados mais recente de um número de fluxos de sensores e compara a distância euclidiana aos vetores anteriores. O problema é que os diferentes fluxos de dados são de sensores completamente diferentes; portanto, tomar uma distância euclidiana simples enfatizará drasticamente alguns valores. Claramente, preciso de uma maneira de normalizar os dados. No entanto, como o algoritmo foi projetado para ser executado em tempo real, não posso usar nenhuma informação sobre nenhum fluxo de dados como um todo na normalização. Até agora, apenas acompanhei o maior valor visto para cada sensor na fase de inicialização (os primeiros 500 vetores de dados) e depois dividi todos os dados futuros desse sensor por esse valor. Isso está funcionando surpreendentemente bem, mas parece muito deselegante.

Não tive muita sorte em encontrar um algoritmo pré-existente para isso, mas talvez eu simplesmente não esteja procurando nos lugares certos. Alguém sabe de um? Ou tem alguma idéia? Vi uma sugestão de usar uma média corrente (provavelmente calculada pelo algoritmo de Wellford), mas se fizesse isso, várias leituras do mesmo valor não apareceriam como sendo iguais, o que parece ser um grande problema, a menos que eu estou faltando alguma coisa. Quaisquer pensamentos são apreciados! Obrigado!

seaotternerd
fonte

Respostas:

1

Pela sua pergunta, entendo que você está procurando:

  1. Encontre uma maneira que normalize a contribuição dos dados de cada sensor.
  2. Veja se o novo ponto de dados é muito diferente dos pontos anteriores.

Aqui é onde eu começaria

1.Para sua primeira pergunta: remover o meio e clarear é o que você está procurando. Uma transformação de clareamento garante que seus recursos estejam todos no mesmo intervalo dinâmico.

Farei algumas suposições simplificadoras que podem ser perfeitamente relevantes, mas que são perfeitamente adequadas como ponto de partida a ser construído.

Supondo que seus dados sejam uni-modais, que tenham apenas uma média pronunciada. Eu começaria subtraindo a média dos dados e realizando uma transformação de clareamento (provavelmente PCA, talvez ZCA, dependendo dos seus dados)

Se você quiser fazer isso em tempo real, eu usaria uma contagem de amostras em execução que realiza o clareamento em uma janela em movimento. Certifique-se de ter amostras suficientes para que seu clareamento seja preciso (o clareamento precisa que a matriz de covariância seja invertível e para isso você precisa de mais amostras temporais do que seus sensores).

Agora, se seus dados não forem unimodais, eu provavelmente agruparia os dados para ver onde os modos residem. No básico, para cada novo ponto que chegasse, eu o associaria ao cluster apropriado e passaria a partir daí.

2.Para medir efetivamente uma distância de pontos passados, eu usaria a distância de Mahalanobis . Na verdade, a distância de Mahalanobis é praticamente a distância euclidiana no espaço embranquecido.

Em resumo, por favor, leia sobre o clareamento e a distância de Mahalanobis; acho que eles apontarão a direção que você procura.

rhadar
fonte