Sunday 27 August 2017

Exponencial Moving Average Mysql


Esta é uma questão Evergreen Joe Celko. Ignoro qual plataforma DBMS é usada. Mas, em qualquer caso, Joe conseguiu responder há mais de 10 anos com o SQL padrão. Citação de Joe Celko SQL Puzzles and Answers: Essa última tentativa de atualização sugere que poderíamos usar o predicado para construir uma consulta que nos daria uma média móvel: a coluna extra ou a abordagem de consulta melhor. A consulta é tecnicamente melhor porque a abordagem UPDATE Desmoralize o banco de dados. No entanto, se os dados históricos que estão sendo registrados não mudem e o cálculo da média móvel é caro, você pode considerar usar a abordagem da coluna. Consulta SQL Puzzle: por todos os meios uniforme. Você apenas joga no balde de peso apropriado dependendo da distância do ponto de tempo atual. Por exemplo, quottake weight1 para datapoints dentro de 24 horas a partir do ponto de dados atual0.5 para pontos de dados dentro de 48hrsquot. Esse caso é importante quantos pontos de dados consecutivos (como 6:12 e 11:48) estão distantes um do outro. Um caso de uso que eu posso pensar seria uma tentativa de alisar o histograma sempre que os pontos de dados não forem suficientemente densos. 22:22 Não estou certo de que seu resultado esperado (saída) mostre uma média simples em movimento simples (rolando) por 3 dias. Como, por exemplo, o primeiro triplo dos números, por definição, dá: mas você espera 4.360 e é confuso. No entanto, sugiro a seguinte solução, que usa o AVG de função de janela. Essa abordagem é muito mais eficiente (clara e menos intensiva em recursos) do que a SELF-JOIN introduzida em outras respostas (e estou surpreso que ninguém tenha dado uma solução melhor). Você vê que o AVG está envolvido com o caso quando rownum gt p. days, em seguida, para forçar NULL s nas primeiras filas, onde 3 Day Moving Average não tem sentido. Respondeu 23 de fevereiro às 13:12. Podemos aplicar o método de junção externa suja esquerda de Joe Celkos (como citado acima por Diego Scaravaggi) para responder a pergunta como foi feita. Gera o resultado solicitado: respondeu Jan 9 às 0:33 Sua resposta 2016 Stack Exchange, Inc Na minha conversa recente sobre Surge e Percona Live sobre a detecção adaptativa de falhas (slides), eu afirmei que os limiares codificados para alertar sobre condições de erro geralmente são melhores para evitar Em favor de limiares dinâmicos ou adaptativos. (Eu realmente fui muito mais longe do que isso e disse que é possível detectar falhas com grande confiança em muitos sistemas como o MySQL, sem estabelecer nenhum limiar.) Nesta publicação, quero explicar um pouco mais sobre as médias móveis que eu usei para Determinando o comportamento normal nos exemplos que dei. Existem dois candidatos óbvios para médias móveis: médias móveis diretas e médias móveis ponderadas exponencialmente. Uma média móvel direta apenas calcula a média (média) sobre as últimas N amostras de dados. No meu caso, usei 60 amostras. Isso requer manter uma matriz das amostras N anteriores e atualizar a média para cada amostra. Uma média móvel exponencial não requer manter amostras. A média é um único número e você tem um chamado fator de suavização. Para cada nova amostra, você multiplica a média antiga em 1 e depois adicione-a aos novos tempos de amostra: avg: (1-alpha) avg alphasample. Ambas as técnicas têm suas desvantagens. Ambos requerem um período de aquecimento, por exemplo. Obviamente, no caso de uma janela de mudança de 60 amostras, você precisa de 60 amostras antes de começar. A média móvel exponencial pode ser preparada a partir da média das primeiras 10 amostras, na minha experiência. Ambas as técnicas também atrasam a tendência nas amostras até certo ponto. Quando há uma mudança dramática no padrão, eles demoram um tempo para recuperar o atraso. É um enredo de alguns dados reais e as duas técnicas. Clique para ver uma imagem maior. A linha azul é o dado amostrado, a linha vermelha é uma média móvel exponencial com uma memória média de 60 segundos, e a linha amarela é uma média móvel de 60 segundos. Observe como a linha vermelha tende a corrigir o curso mais rapidamente e permanecer mais fiel ao comportamento atual da linha azul. Esta é uma vantagem da média móvel exponencial, se é isso que você deseja. Não é óbvio nesses dados, mas a média móvel simples tem outra desvantagem. Suponha que haja um pico de valores muito altos nos dados amostrados por alguns segundos. Nos próximos 60 segundos, este pico vai estar dentro da janela, inflando a média móvel. Quando é descartado da janela, faz com que a média móvel caia de repente. Descobriu que isso era problemático em vários casos. É especialmente óbvio quando você está calculando o desvio padrão das amostras (ou outras estatísticas sensíveis) na janela em movimento. A média móvel exponencial não tem esse problema, porque esse pico nunca se move para fora da janela. Sua influência existe para sempre, mas com o passar do tempo, gradualmente se torna menor, de uma maneira suave. Então, você não obtém picos abruptos na média atual com base no que aconteceu 60 segundos atrás. Isso é apenas arranhando a superfície das técnicas que eu explorei em um grande conjunto de dias a semanas de dados de dezenas de milhares de servidores reais. Quando eu tiver tempo, tentarei escrever mais sobre isso no futuro.

No comments:

Post a Comment