Compartilhar via


Referência técnica do algoritmo MTS

O algoritmo MTS (Microsoft Time Series) inclui dois algoritmos separados para análise de série temporal:

  • O algoritmo ARTXP, introduzido 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 da previsão de longo prazo.

Por padrão, o Analysis Services usa cada algoritmo separadamente para treinar o modelo e, em seguida, 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. 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 do algoritmo MTS

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ódicos. Esse 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 term é 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 MTS (Microsoft Time Series) aceita os seguintes parâmetros que afetam o comportamento, o desempenho e a exatidão do modelo de mineração resultante.

ObservaçãoObservação

O algoritmo MTS está disponível em todas as edições do SQL Server; no entanto, alguns recursos avançados, incluindo parâmetros para personalização da análise de série temporal, têm suporte apenas em edições específicas do SQL Server. Para obter uma lista de recursos com suporte pelas edições do SQL Server, consulte Recursos com suporte pelas edições do SQL Server 2012 (https://go.microsoft.com/fwlink/?linkid=232473).

Detecção de periodicidade

Os algoritmos ARIMA e de ARTXP dão suporte à detecção de sazonalidade ou periodicidade. O Analysis Services usa transformação Fast Fourier para detectar sazonalidade antes de treinar. No entanto, é possível afetar a detecção de sazonalidade e os resultados de análise de série temporal, com a definição de parâmetros de algoritmo.

  • Com a alteração do valor de AUTODETECT_SEASONALITY, é possível influenciar o número de segmentos de tempo possíveis que são gerados.

  • Com a definição de um ou de vários valores para PERIODICITY_HINT, é possível fornecer informações ao algoritmo sobre os ciclos esperados nos dados e potencialmente aumentar a precisão da detecção.

ObservaçãoObservação

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

Escolhendo um algoritmo e especificando a mistura de algoritmos

Por padrão, ou quando você seleciona a opção de MIXED, o Analysis Services combina os algoritmos e atribui o mesmo peso a eles. No entanto, no SQL Server 2008 Enterprise, você pode especificar um algoritmo específico ou personalizar a proporção de cada algoritmo nos resultados com a configuração de um parâmetro que pondera os resultados em relação à previsão de curto ou de longo prazo. Por padrão, o parâmetro FORECAST_METHOD está definido como MIXED e o Analysis Services usa os dois algoritmos e, em seguida, pondera seus valores para maximizar a intensidade de cada algoritmo.

  • Para controlar a escolha do algoritmo, você define o parâmetro FORECAST_METHOD.

  • Se desejar usar a previsão cruzada, você deve usar a opção ARTXP ou MIXED, pois o ARIMA não dá suporte a esse tipo de previsão.

  • Defina o FORECAST_METHOD como ARTXP se você desejar favorecer a previsão a curto prazo.

  • Defina o FORECAST_METHOD como ARIMA se você desejar melhorar a previsão a longo prazo.

No 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 alteração com a definição do parâmetro PREDICTION_SMOOTHING:

  • Se você definir PREDICTION_SMOOTHING como 0, o modelo usará apenas ARTxp.

  • Se você definir PREDICTION_SMOOTHING como 1, o modelo usará apenas ARIMA.

  • Se você definir 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 previsão, 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, o ARIMA e o 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 primeira 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 Microsoft Time Series:

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 em algumas edições do SQL Server.

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 em algumas edições do SQL Server.

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 em algumas edições do SQL Server.

INSTABILITY_SENSITIVITY

Controla o ponto no qual a variância de previsão excede determinado limite, depois do qual 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 de 1 fornece o mesmo comportamento como no SQL Server 2005. O Analysis Services monitora o desvio padrão normalizado para cada previsão. Assim que esse valor excede o limite de qualquer previsão, o algoritmo de série temporal retorna NULL e interrompe o processo de 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 em algumas edições do SQL Server.

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 em algumas edições do SQL Server.

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:

Valor

Descrição

Previous

Repete o valor do intervalo de tempo anterior.

Mean

Usa uma média de movimentação de intervalos de tempo usada no treinamento.

Numeric constant

Usa o número especificado para substituir todos os valores ausentes.

None

Substitui 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. O parâmetro assume o formato de {n [, n]}, em que 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.

Valor

Descrição

0

Especifica que a previsão usa somente ARTXP. A previsão é otimizada para poucos casos.

1

Especifica 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 em algumas edições do SQL Server.

Sinalizadores de modelagem

O algoritmo MTS (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.

Consulte também

Referência

Conteúdo do modelo de mineração para modelos de série temporal (Analysis Services – Mineração de dados)

Conceitos

Algoritmo MTS

Exemplos de consulta de um modelo de série temporal