Referência técnica do algoritmo MTS

O algoritmo Microsoft Time Series inclui dois algoritmos diferentes:

  • O algoritmo ARTXP, apresentado no SQL Server 2005, foi otimizado para prever o próximo valor provável em uma série.

  • O algoritmo ARIMA foi adicionado no SQL Server 2008 para melhorar a exatidão em previsão de longo prazo.

Por padrão, o Analysis Services usa cada algoritmo separadamente para treinar o modelo e depois mescla os resultados para produzir a melhor previsão para um número variável de previsões. Você também pode usar apenas um dos algoritmos com base nos seus dados e requisitos de previsão. Começando no SQL Server 2008 Enterprise, é possível personalizar também o ponto de corte que controla a mescla de algoritmos durante a previsão.

Este tópico fornece informações adicionais sobre como cada algoritmo é implementado e como você pode personalizar o algoritmo com a configuração de parâmetros para ajustar a análise e os resultados da previsão.

Implementação dos algoritmos de série temporal

O Microsoft Research desenvolveu o algoritmo ARTXP original que era usado no SQL Server 2005, baseando a implementação no algoritmo Árvores de Decisão da Microsoft. Portanto, o algoritmo ARTXP pode ser descrito como um modelo de árvore de regressão automática para representar dados de série temporal periódica. Este algoritmo relaciona um número variável de itens passados a cada item atual que está sendo previsto. O nome ARTXP tem origem no fato de o método de árvore de regressão automática (um algoritmo ART) ser aplicado a vários estados anteriores desconhecidos. Para obter uma explicação detalhada do algoritmo ARTXP, consulte Autoregressive Tree Models for Time-Series Analysis

O algoritmo ARIMA foi adicionado ao algoritmo Microsoft Time Series no SQL Server 2008 para melhorar a previsão de longo prazo. Ele é uma implementação do processo de computação de média de movimentação integrada de regressão automática, descrito por Box e Jenkins. A metodologia ARIMA permite determinar dependências em observações feitas consecutivamente em um determinado tempo e pode incorporar choques aleatórios como parte do modelo. O método ARIMA também aceita a periodicidade multiplicativa. Leitores com interesse em saber mais sobre o algoritmo ARIMA devem ler o trabalho seminal de Box e Jenkins; esta seção visa fornecer detalhes específicos sobre como a metodologia ARIMA foi implementada no algoritmo Microsoft Time Series.

Por padrão, o algoritmo Microsoft Times Series usa os dois métodos, ARTXP e ARIMA, combinando os resultados para aumentar a precisão da previsão. Se desejar usar apenas um método específico, você poderá definir os parâmetros de algoritmo para usar apenas ARTXP ou apenas ARIMA, ou para controlar como os resultados dos algoritmos são combinados. Note que o algoritmo ARTXP dá suporte à previsão cruzada, o que não ocorre no algoritmo ARIMA. Portanto, a previsão cruzada está disponível somente quando você usa uma mescla de algoritmos ou configura um modelo para usar somente ARTXP.

Compreendendo a ordem de diferença no ARIMA

Esta seção apresenta terminologia necessária para compreender o modelo ARIMA e aborda a implementação específica de diferenciação no algoritmo Microsoft Time Series. Para obter uma explicação completa desses termos e conceitos, recomenda-se consultar Box e Jenkins.

  • Um termo é um componente de uma equação matemática. Por exemplo, um termo em uma equação polinomial pode incluir uma combinação de variáveis e constantes.

  • A fórmula ARIMA que é incluída no algoritmo Microsoft Time Series utiliza os termos regressão automática e média de movimentação.

  • Os modelos de série temporal podem ser estáticos ou não estáticos. Modelos estáticos se convertem em um meio, apesar de poderem conter ciclos, enquanto os modelos não estáticos não têm um foco de equilíbrio e estão sujeitos a uma maior variação ou alteração, resultante de choques ou de variáveis externas.

  • A meta da diferenciação é tornar uma série temporal estável e estática.

  • A ordem de diferença representa o número de vezes em que a diferença entre os valores é considerada para uma série temporal.

O algoritmo Microsoft Time Series opera considerando valores em uma série de dados e tentando ajustar os dados a um padrão. Se a série de dados ainda não for estática, o algoritmo aplicará uma ordem de diferença. Quanto maior a ordem de diferença, mais estática a série temporal tenderá a ser.

Por exemplo, se você tem a série temporal (z1, z2, …, zn) e faz cálculos usando uma ordem de diferença, você obtém uma nova série (y1, y2, …., yn-1), onde yi = zi+1-zi. Quando a ordem de diferença é 2, o algoritmo gera outra série (x1, x2, …, xn-2), com base nas y séries derivadas da primeira equação de ordem. A quantidade correta de diferenciação depende dos dados. Uma única ordem de diferenciação é mais comum em modelos que apresentam uma tendência constante; uma segunda ordem de diferenciação pode indicar uma tendência que varia com o tempo.

Por padrão, a ordem de diferenciação usada nos algoritmos Microsoft Time Series é -1; isso significa que o algoritmo detectará automaticamente o melhor valor da ordem de diferenciação. Em geral, o melhor valor é 1 (quando é necessária uma diferenciação), mas em certos casos, o algoritmo aumentará esse valor para no máximo 2.

O algoritmo Microsoft Time Series determina a ordem de diferenciação ARIMA ideal usando os valores de regressão automática. O algoritmo examine os valores AR e define um parâmetro oculto, ARIMA_AR_ORDER, que representa a ordem dos termos AR. Esse parâmetro oculto, ARIMA_AR_ORDER, tem um intervalo de valores de -1 a 8. No valor padrão -1, o algoritmo selecionará automaticamente a ordem de diferenciação adequada.

Sempre que o valor ARIMA_AR_ORDER for maior que 1, o algoritmo multiplicará a série temporal por um termo polinomial. Se um termo da fórmula polinomial for resolvido para uma raiz de 1 ou próxima de 1, o algoritmo tentará preservar a estabilidade do modelo, removendo o termo e aumentando a ordem de diferenciação em 1. Se a ordem de diferenciação já estiver no valor máximo, o termo será removido e a ordem de diferenciação não mudará.

Por exemplo, se o valor for AR = 2, o termo polinomial AR resultante provavelmente terá esta aparência: 1 – 1.4B + .45B^2 = (1- .9B) (1- 0.5B). Observe o termo (1- .9B), cuja raiz é cerca de 0,9. O algoritmo elimina este termo da fórmula polinomial, mas não pode aumentar a ordem de diferenciação em um pois ele já se encontra no valor máximo de 2.

Lembre-se de que a única maneira de forçar uma mudança na ordem de diferenciação é usando o parâmetro sem suporte, ARIMA_DIFFERENCE_ORDER. O parâmetro oculto controla quantas vezes o algoritmo faz diferenciação na série temporal, e pode ser definido digitando um parâmetro de algoritmo personalizado. Entretanto, recomenda-se alterar este valor, a menos que você esteja preparado para fazer uma experiência e esteja familiarizado com os cálculos envolvidos. Note também que no momento não existe um mecanismo, incluindo parâmetros ocultos, que o permita controlar o limite no qual o aumento na ordem de diferenciação é disparado.

Finalmente, note que a fórmula descrita antes é o caso simplificado, sem dicas de periodicidade. Se forem fornecidas dicas de periodicidade, um termo polinomial AR separado será adicionado à esquerda da equação para cada dica de periodicidade. Além disso, a mesma estratégia será aplicada para eliminar termos que possam desestabilizar a série diferenciada.

Personalizando o algoritmo MTS

O algoritmo Microsoft Time Series aceita diversos parâmetros que afetam o comportamento, o desempenho e a precisão do modelo de mineração resultante.

Detecção de periodicidade

Ambos os algoritmos oferecem suporte a detecção de sazonalidade ou periodicidade. O Analysis Services usa transformação Fast Fourier para detectar a periodicidade antes do treinamento.

Para obter os melhores resultados, você pode controlar a detecção de periodicidade configurando parâmetros de algoritmo. Ao alterar o valor de AUTODETECT_SEASONALITY, você pode influenciar o número de segmentos de tempo possíveis que são gerados. Ao definir um ou vários valores para PERIODICITY_HINT, você pode fornecer informações ao algoritmo sobre períodos de repetição conhecidos e aumentar a precisão da detecção.

ObservaçãoObservação

Ambos os algoritmos ARTxp e ARIMA são sensíveis a dicas de periodicidade. Portanto, fornecer uma dica incorreta pode afetar os resultados de forma adversa.

Mesclando os algoritmos

Por padrão, o Analysis Services combina e pondera igualmente os algoritmos. Entretanto, começando no SQL Server 2008 Enterprise, você pode personalizar a mescla dos resultados selecionando a opção MIXED e configurando um parâmetro que pondera os resultados em relação à previsão de curto ou longo prazo.

Se quiser usar a previsão cruzada, deve usar a opção ARTXP ou MIXED, pois o ARIMA não oferece suporte a esse tipo de previsão.

Para controlar a escolha do algoritmo, você define o parâmetro FORECAST_METHOD. Por padrão, o parâmetro FORECAST_METHOD está definido como MIXED e o Analysis Services usa ambos os algoritmos e depois pondera seus valores para maximizar a intensidade de cada algoritmo. Entretanto, você poderá definir FORECAST_METHOD como ARTXP se quiser usar apenas o algoritmo ARTxp ou como ARIMA se quiser usar apenas o algoritmo ARIMA.

Começando pelo SQL Server 2008 Enterprise, você também pode personalizar como o Analysis Services mistura a combinação dos algoritmos ARIMA e ARTXP. É possível controlar o ponto de partida da mistura e a taxa de mudança, definindo o parâmetro PREDICTION_SMOOTHING:

  • Se você definir PREDICTION_SMOOTHING como 0, o modelo se tornará ARTxp puro.

  • Se você definir PREDICTION_SMOOTHING como 1, o modelo se tornará ARIMA puro.

  • Se você definir set PREDICTION_SMOOTHING como um valor entre 0 e 1, o modelo irá ponderar o algoritmo ARTxp como uma função das etapas de previsão que diminui exponencialmente. Ao mesmo tempo, o modelo também pondera o algoritmo ARIMA como o complemento 1 do peso do ARTxp. O modelo usa a normalização e uma constante de estabilização para amenizar as curvas.

Em geral, se você prever até 5 intervalos de tempo, o ARTxp quase sempre será a melhor escolha. Porém, à medida que você aumentar o número de intervalos de tempo para prever, o ARIMA normalmente executará melhor.

O diagrama a seguir ilustra como o modelo mescla os algoritmos quando PREDICTION_SMOOTHING é definido como o valor padrão, 0,5. Primeiramente, ARIMA e ARTxp são ponderados igualmente; mas à medida que as etapas de previsão aumentam, o ARIMA é ponderado com um peso maior.

curva de declínio para combinar algoritmos de série temporal

Em contraste, o diagrama a seguir ilustra a mesclagem dos algoritmos quando PREDICTION_SMOOTHING é definido como 0,2. Para a etapa 0, o modelo pondera o ARIMA como 0,2 e o ARTXP como 0,8. Depois disso, o peso do ARIMA aumenta exponencialmente e o peso do ARTxp diminui exponencialmente.

curva de declínio para a combinação de modelo de série temporal

Definindo parâmetros de algoritmo

A tabela a seguir descreve os parâmetros que podem ser usados com o algoritmo MTS:

Parâmetro

Descrição

AUTO_DETECT_PERIODICITY

Especifica um valor numérico entre 0 e 1 que detecta periodicidade. O padrão é 0,6.

Se o valor for mais próximo a 0, a periodicidade será detectada somente para dados fortemente periódicos.

Definir esse valor mais próximo a 1 favorece a descoberta de vários padrões que são praticamente periódicos e a geração automática de dicas de periodicidade.

ObservaçãoObservação
Lidar com muitas dicas de periodicidade provavelmente resultará em tempo de treinamento de modelos significativamente maior, mas também em modelos mais precisos.

COMPLEXITY_PENALTY

Controla o crescimento da árvore de decisão. O padrão é 0,1.

Diminuir esse valor aumenta a chance de uma divisão. Aumentar esse valor diminui a chance de uma divisão.

ObservaçãoObservação
Esse parâmetro está disponível somente no SQL Server Enterprise.

FORECAST_METHOD

Especifica qual algoritmo deve ser usado para análise e previsão. Os valores possíveis são ARTXP, ARIMA e MIXED. O padrão é MIXED.

HISTORIC_MODEL_COUNT

Especifica o número de modelos de histórico que será criado. O padrão é 1.

ObservaçãoObservação
Esse parâmetro está disponível somente no SQL Server Enterprise.

HISTORICAL_MODEL_GAP

Especifica o intervalo de tempo entre dois modelos de histórico consecutivos. O padrão é 10. O valor representa um número de unidades de tempo, onde a unidade é definida pelo modelo.

Por exemplo, a configuração desse valor como g resulta na criação de modelos de histórico para dados truncados por frações de tempo em intervalos de g, 2*g, 3*g e assim por diante.

ObservaçãoObservação
Esse parâmetro está disponível somente no SQL Server Enterprise.

INSTABILITY_SENSITIVITY

Controla o ponto no qual a variância de previsão excede certo limite e o algoritmo ARTxp suprime previsões. O valor padrão é 1.

ObservaçãoObservação
Esse parâmetro não se aplica a modelos que usam apenas ARIMA.

O valor padrão 1 cria o mesmo comportamento que no SQL Server 2005. O Analysis Services monitora o desvio padrão normalizado para cada previsão. Assim que os desvios padronizados de qualquer previsão excedem o limite, o algoritmo de série temporal retorna NULL e interrompe a previsão.

Um valor de 0 interrompe a detecção de instabilidade. Isso significa que você pode criar um número infinito de previsões, independentemente da variação.

ObservaçãoObservação
Esse parâmetro pode ser modificado somente no SQL Server Enterprise. No SQL Server Standard, o Analysis Services usa somente o valor padrão 1.

MAXIMUM_SERIES_VALUE

Especifica o valor máximo para usar em previsões. Esse parâmetro é usado, juntamente com MINIMUM_SERIES_VALUE, para restringir as previsões a algum intervalo esperado. Por exemplo, você pode especificar que a quantidade de vendas prevista para qualquer dia nunca deve exceder o número de produtos no inventário.

ObservaçãoObservação
Esse parâmetro está disponível somente no SQL Server Enterprise.

MINIMUM_SERIES_VALUE

Especifica o valor mínimo que pode ser previsto. Esse parâmetro é usado, juntamente com MAXIMUM_SERIES_VALUE, para restringir as previsões a algum intervalo esperado. Por exemplo, você pode especificar que a quantidade de vendas prevista nunca deve ser um número negativo.

ObservaçãoObservação
Esse parâmetro está disponível somente no SQL Server Enterprise.

MINIMUM_SUPPORT

Especifica o número mínimo de intervalos de tempo necessário para gerar uma divisão em cada árvore de série temporal. O padrão é 10.

MISSING_VALUE_SUBSTITUTION

Especifica como falhas em dados do histórico são resolvidas. Por padrão, não são permitidas falhas nos dados.

A tabela a seguir lista os possíveis valores para esse parâmetro:

ValorDescrição
PreviousRepete o valor do intervalo de tempo anterior.
MeanUsa uma média de movimentação de intervalos de tempo usada no treinamento.
Numeric constantUsa o número especificado para substituir todos os valores ausentes.
NoneSubstitui valores ausentes por valores plotados ao longo da curva do modelo treinado. Esse é o valor padrão.

Se seus dados contêm várias séries, as séries também não podem ter extremidades desbalanceadas. Isso quer dizer que todas as séries devem ter os mesmos pontos de início e de extremidade.

O Analysis Services também usa o valor desse parâmetro para preencher as falhas em novos dados quando você realiza uma PREDICTION JOIN no modelo de série temporal.

PERIODICITY_HINT

Fornece uma dica para o algoritmo sobre a periodicidade dos dados. Por exemplo, se as vendas variam de acordo com o ano e a unidade de medida da série são meses, a periodicidade é 12. Esse parâmetro tem o formato {n [, n]}, onde n é qualquer número positivo.

n nos colchetes [] é opcional e pode ser repetido sempre que necessário. Por exemplo, para criar várias dicas de periodicidade para dados fornecidos mensalmente, você pode inserir {12, 3, 1} para detectar parâmetros para o ano, trimestre e mês. Entretanto, a periodicidade tem um efeito mais visível na qualidade do modelo. Se a dica que você dá diferir da periodicidade atual, seus resultados poderão ser afetados adversamente.

O padrão é {1}.

ObservaçãoObservação
As chaves são necessárias. Além disso, esse parâmetro tem um tipo de dados de cadeia de caracteres. Com isso, se você digitar esse parâmetro como parte de uma instrução DMX (Data Mining Extensions), deve colocar o número e as chaves entre aspas.

PREDICTION_SMOOTHING

Especifica como o modelo deveria ser mesclado para otimizar a previsão. Você pode digitar qualquer valor entre 0 e 1 ou pode usar um dos seguintes valores:

ObservaçãoObservação
Use o parâmetro FORECAST_METHOD para controlar o treinamento.
ValorDescrição
0 Especifica que a previsão usa somente ARTxp. A previsão é otimizada para poucos casos.
1Especifica que a previsão usa somente ARIMA. A previsão é otimizada para vários casos.
0.5(Default) Especifica que ambos os algoritmos da previsão devem ser usados para a previsão e os resultados mesclados.
ObservaçãoObservação
Esse parâmetro está disponível somente no SQL Server Enterprise.

Sinalizadores de modelagem

O algoritmo Microsoft Time Series oferece suporte aos seguintes sinalizadores de modelagem. Ao criar um modelo ou uma estrutura de mineração, você define sinalizadores de modelagem para especificar como os valores em cada coluna são manipulados durante a análise. Para obter mais informações, consulte Sinalizadores de modelagem (Mineração de Dados).

Sinalizador de modelagem

Descrição

NOT NULL

Indica que a coluna não pode conter um nulo. Um erro ocorrerá se o Analysis Services encontrar um valor nulo durante o treinamento do modelo.

Aplica-se às colunas de estrutura de mineração.

MODEL_EXISTENCE_ONLY

Significa que a coluna será tratada como tendo dois estados possíveis: Ausente e Existente. Nulo é um valor ausente.

Aplica-se às colunas de modelo de mineração.

Requisitos

Um modelo de série temporal deve conter uma coluna Key Time com valores únicos, colunas de entrada e, pelo menos, uma coluna previsível.

Colunas de entrada e colunas previsíveis

O algoritmo Microsoft Time Series oferece suporte a tipos de conteúdo da coluna de entrada, tipos de conteúdo da coluna previsível e sinalizadores de modelagem específicos, relacionados na tabela a seguir:

Coluna

Tipos de conteúdo

Atributo de entrada

Continuous, Key, Key Time e Table

Atributo previsível

Continuous e Table

ObservaçãoObservação

Os tipos de conteúdo Cíclico e Ordenado têm suporte, mas o algoritmo os trata como valores discretos e não executa processamento especial.

Histórico de alterações

Conteúdo atualizado

  • Foi adicionada uma nova seção que descreve a implementação da diferenciação no algoritmo ARIMA.