Partilhar via


Consultando um modelo de série temporal (Analysis Services - Mineração de Dados)

Ao criar uma consulta para um modelo de mineração de dados, você pode criar uma consulta de conteúdo, que fornece detalhes de padrões encontrados em análises, ou uma consulta de previsão, que usa os padrões no modelo para fazer previsões para novos dados. Por exemplo, uma consulta de conteúdo para um modelo de série temporal pode fornecer detalhes adicionais sobre as estrutura periódicas encontradas, enquanto uma consulta de previsão pode informar as previsões para as próximas 5-10 frações de tempo. Você também pode recuperar metadados sobre o modelo usando uma consulta.

Esta seção explica como criar ambos os tipos de consultas para modelos que se baseiam no algoritmo MTS.

  • Consultas de conteúdo

    Recuperando dicas de periodicidade do modelo

    Recuperando a equação para um modelo ARIMA

    Recuperando a equação para um modelo ARTxp

  • Consultas de previsão

    Fazendo previsões com EXTEND_MODEL_CASES

    Fazendo previsões com REPLACE_MODEL_CASES

    Trabalhando com valores ausentes

Consultas de conteúdo em um modelo de série temporal

Uma consulta de conteúdo de modelo fornece informações básicas sobre o modelo, como parâmetros usados quando o modelo foi criado e a última vez que o modelo foi processado. O exemplo a seguir ilustra a sintaxe básica para consultar o conteúdo do modelo usando os conjuntos de linhas de esquema de mineração de dados.

Voltar ao início

Exemplo de consulta 1: Recuperando dicas de periodicidade do modelo

Você pode recuperar as periodicidades encontradas em uma série de dados ao consultar o árvore ARIMA ou ARTxp. Entretanto, as periodicidades em um modelo completo podem não ser as mesmas especificadas como dicas ao criar o modelo. Para recuperar as dicas fornecidas como parâmetros ao criar o modelo, você pode consultar o conjunto de linhas de esquema do conteúdo do modelo de mineração usando a seguinte instrução DMX:

SELECT MINING_PARAMETERS 
FROM $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = '<model name>'

Resultados parciais:

MINING_PARAMETERS

COMPLEXITY_PENALTY=0.1,MINIMUM_SUPPORT=10,PERIODICITY_HINT={1,3},….

A dica de periodicidade padrão é {1} e aparece em todos os modelos. Esse modelo de exemplo foi criado com uma dica adicional que pode não estar presente no final do modelo.

ObservaçãoObservação

Os resultados foram truncados aqui para fins de legibilidade.

Voltar ao início

Exemplo de consulta 2: Recuperando a equação para um modelo ARIMA

Você pode recuperar a equação para um modelo ARIMA consultando qualquer nó em uma árvore individual. Lembre-se de que cada árvore em um modelo ARIMA representa uma periodicidade diferente; se houver várias séries de dados, cada série terá seu próprio conjunto de árvores de periodicidade. Sendo assim, para recuperar a equação para uma série de dados específica, você deve primeiramente identificar a árvore.

Por exemplo, o prefixo TA indica que o nó faz parte de uma árvore ARIMA, enquanto que o prefixo TS é usado para árvores ARTXP. É possível localizar todas as árvores de raiz ARIMA consultando o conteúdo do modelo para nós com um NODE_TYPE de valor 27. Você também pode usar o valor ATTRIBUTE_NAME para localizar o nó raiz ARIMA para uma série de dados em particular. Este exemplo de consulta localiza os nós ARIMA que representam quantidades vendidas do modelo R250 na região Europa.

SELECT NODE_UNIQUE_NAME
FROM Forecasting.CONTENT
WHERE ATTRIBUTE_NAME = 'R250 Europe: Quantity"
AND NODE_TYPE = 27

Ao usar essa ID de nó, você poderá recuperar detalhes sobre a equação ARIMA dessa árvore. A instrução DMX a seguir recupera a forma reduzida da equação ARIMA para a série de dados. Ela também recupera a interceptação da tabela aninhada, NODE_DISTRIBUTION. Neste exemplo, a equação é obtida pela referenciação da ID exclusiva do nó, TA00000007. No entanto, talvez seja preciso usar uma ID do nó diferente e obter resultados ligeiramente diferentes do seu modelo.

SELECT FLATTENED NODE_CAPTION as [Short equation], 
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE 
FROM NODE_DISTRIBUTION) as t
FROM Forecasting.CONTENT
WHERE NODE_NAME = 'TA00000007'

Resultados do exemplo:

Equação reduzida

t.ATTRIBUTE_NAME

t.ATTRIBUTE_VALUE

ARIMA (2,0,7)x(1,0,2)(12)

R250 Europe:Quantity(Intercept)

15.24….

ARIMA (2,0,7)x(1,0,2)(12)

R250 Europe:Quantity(Periodicity)

1

ARIMA (2,0,7)x(1,0,2)(12)

R250 Europe:Quantity(Periodicity)

12

Para obter mais informações sobre como interpretar esses dados, consulte Conteúdo do modelo de mineração para modelos de série temporal (Analysis Services – Mineração de dados).

Voltar ao início

Exemplo de consulta 3: Recuperando a equação para um modelo ARTxp

No caso de um modelo ARTxp, as informações diferentes são armazenadas em cada nível da árvore. Para obter mais informações sobre a estrutura de um modelo ARTxp e como interceptar as informações na equação, consulte Conteúdo do modelo de mineração para modelos de série temporal (Analysis Services – Mineração de dados).

A instrução DMX a seguir recupera informações como parte da árvore ARTxp para a série que representa a quantidade do modelo R250 vendida na região Europa.

ObservaçãoObservação

O nome da coluna da tabela aninhada, VARIANCE, deve estar entre colchetes para distingui-lo da palavra-chave reservada de mesmo nome. As colunas da tabela aninhada, PROBABILITY e SUPPORT, não são incluídas porque estão vazias na maioria dos casos.

SELECT NODE_CAPTION as [Split information], 
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE,
   [VARIANCE]
   FROM NODE_DISTRIBUTION) AS t
FROM Forecasting.CONTENT
WHERE NODE_ATTRIBUTE_NAME = 'R250 Europe:Quantity'
AND NODE_TYPE = 15

Para obter mais informações sobre como interpretar esses dados, consulte Conteúdo do modelo de mineração para modelos de série temporal (Analysis Services – Mineração de dados).

Voltar ao início

Consultas de previsão em um modelo de série temporal

No SQL Server 2008 Enterprise, é possível adicionar novos dados ao modelo de série temporal e incorporar automaticamente os novos dados no módulo. Você adiciona novos dados a um modelo de mineração de série temporal de um de dois modos:

  • Use um PREDICTION JOIN para unir dados em uma fonte externa para os dados de treinamento.

  • Use uma consulta de previsão singleton para fornecer dados para uma fatia de cada vez. Para obter informações sobre como criar uma consulta de previsão singleton, consulte Criando consultas de previsão DMX.

Ao adicionar novos dados a um modelo de série temporal, é possível especificar se deseja estender ou substituir os dados de treinamento:

  • Se você estender os dados, o Analysis Services adicionará os novos dados no final dos dados de treinamento existentes. O número de casos de treinamento aumenta. Estender os casos de modelo é útil para atualizar o modelo continuamente com dados novos.

    Para estender os dados, você cria uma PREDICTION JOIN em um modelo de série temporal, especifica a origem dos novos dados e usa o argumento EXTEND_MODEL_CASES.

  • Se você substituir os dados, o Analysis Services mantém o modelo treinado, mas usa os novos dados para substituir alguns ou todos os casos de treinamento existentes. Portanto, o tamanho dos dados de treinamento nunca muda, mas os casos em si estão continuamente sendo substituídos com dados mais novos. Se você fornecer dados novos suficientes, será possível substituir os dados de treinamento com uma série completamente nova.

    Substituir os casos de modelo é útil quando você desejar treinar um modelo em um conjunto de casos e, então, aplicar o modelo a uma série de dados diferente.

    Para substituir os dados, você cria uma PREDICTION JOIN em um modelo de série temporal, especifica a origem dos novos dados e usa o argumento REPLACE_MODEL_CASES.

Não é possível fazer previsões históricas quando você adiciona novos dados. Além disso, independentemente de você estender ou substituir os dados de treinamento, as previsões sempre começam no carimbo de data e hora que encerra o conjunto de treinamento original. Portanto, caso os seus novos dados contenham n frações de tempo e você solicitar previsões para os períodos de 1 a n, as previsões coincidirão com o mesmo período dos dados novos. Para conseguir previsões para períodos de tempo não cobertos pelos seus dados, você deve iniciar as previsões na fração de tempo n+1 após a nova série de dados ou assegurar-se de solicitar frações de tempo adicionais.

Por exemplo, suponha que o modelo existente possua seis de meses de dados. Você deseja estender esse modelo adicionando os valores de vendas dos últimos três meses. Ao mesmo tempo, você quer fazer uma previsão sobre os próximos três meses. Para obter apenas as previsões novas ao adicionar os novos dados, especifique o ponto de partida como fração de tempo 4 e o ponto final como fração de tempo 7. Você também pode solicitar um total de seis previsões, mas as frações de tempo para as três primeiras seriam sobrepostas com os novos dados recém adicionados.

Para obter exemplos de consultas e mais informações sobre a sintaxe para usar REPLACE_MODEL_CASES e EXTEND_MODEL_CASES, consulte PredictTimeSeries (DMX).

Voltar ao início

Fazendo previsões com EXTEND_MODEL_CASES

O comportamento de previsão difere dependendo do fato de você estender ou substituir os casos de modelo. Quando você estende um modelo, os novos dados são anexados ao fim da série e o tamanho do conjunto de treinamento aumenta. Porém, as frações de tempo usadas para consultas de previsão sempre iniciam no término da série original. Portanto, se você adicionar três novos pontos de dados e solicitar seis previsões, as três primeiras previsões retornariam sobrepostas com os novos dados. Nesse caso, o Analysis Services retorna os pontos de dados novos reais ao invés de fazer uma previsão, até que os novos pontos de dados sejam usados. Então, o Analysis Services faz previsões com base na série composta.

Esse comportamento permite a você adicionar novos dados e, em seguida, exibir os valores de vendas reais no gráfico da previsão, ao invés de fazer projeções.

Por exemplo, para adicionar três pontos de dados novos e fazer três previsões novas, você deveria fazer o seguinte:

  • Criar uma PREDICTION JOIN em um modelo de série temporal e especificar a origem dos três meses de dados novos.

  • Solicitar previsões para seis frações de tempo. Para isso, especifique 6 frações de tempo, onde o ponto de partida é 1 e o ponto final é a fração de tempo 7. Isso só é verdadeiro para EXTEND_MODEL_CASES.

  • Para obter apenas as previsões novas, especifique o ponto de partida como 4 e o ponto final como 7.

  • Você deve usar o argumento EXTEND_MODEL_CASES.

    Os valores reais de vendas são retornados nas três primeiras frações de tempo, e as previsões com base no modelo estendido são retornadas para as próximas três frações de tempo.

Voltar ao início

Fazendo previsões com REPLACE_MODEL_CASES

Quando você substitui os casos em um modelo, o tamanho do modelo sempre permanece o mesmo, mas o Analysis Services substitui os casos individuais no modelo. Isso é útil em previsões cruzadas e cenários em que manter o conjunto de dados de treinamento em um tamanho consistente é importante.

Por exemplo, uma de suas lojas tem insuficientes dados de vendas. Você poderia criar um modelo geral pela média de vendas para todas as lojas em uma determinada região e, em seguida, treinar um modelo. Então, para fazer previsões para a loja sem dados de vendas suficientes, você cria uma PREDICTION JOIN sobre os novos dados de vendas apenas para aquela loja. Ao fazer isso, o Analysis Services mantém os padrões derivados do modelo regional, mas substitui os casos de treinamento existentes com os dados da loja individual. Como resultado, os valores de sua previsão serão mais próximos às linhas de tendência para a loja individual.

Quando você usa o argumento REPLACE_MODEL_CASES, o Analysis Services adiciona continuamente novos casos ao fim do conjunto de casos e exclui o número correspondente do inicio do conjunto de casos. Se você adicionar mais dados novos do que havia no conjunto de treinamento original, o Analysis Services descarta os dados mais antigos. Se você fornecer valores novos suficientes, as previsões poderão ser fundadas em dados completamente novos.

Por exemplo, você treinou seu modelo em um conjunto de dados de caso que continha 1000 linhas. Então você adiciona 100 linhas de dados novos. O Analysis Services descarta as primeiras 100 linhas do conjunto de treinamento e adicionas as 100 linhas de dados novos no final do conjunto para um total de 1000 linhas. Se você adicionar 1100 linhas de dados novos, só as 1000 linhas mais recentes serão usadas.

Segue mais um exemplo. Para adicionar os valores de três meses de dados novos e fazer três previsões novas, você deveria executar as seguintes ações:

  • Criar um PREDICTION JOIN em um modelo de série temporal e usar o argumento REPLACE_MODEL_CASE.

  • Especificar a fonte de três meses de dados novos. Tais dados poderiam ser de uma fonte completamente diferente que os dados de treinamento originais.

  • Solicitar previsões para seis frações de tempo. Para isso, especifique 6 frações de tempo ou especifique o ponto de partida como fração de tempo 1 e o ponto final como fração de tempo 7.

    ObservaçãoObservação

    Diferentemente doEXTEND_MODEL_CASES, você não pode retornar os mesmos valores que você adicionou como dados de entrada. Todos os seis valores retornados são previsões baseadas no modelo atualizado, que inclui os dados novos e antigos.

    ObservaçãoObservação

    Com REPLACE_MODEL_CASES, iniciar no timestamp 1 fornece novas previsões com base em novos dados que substituem os dados de treinamento antigos.

Para obter exemplos de consultas e mais informações sobre a sintaxe para usar REPLACE_MODEL_CASES e EXTEND_MODEL_CASES, consulte PredictTimeSeries (DMX).

Voltar ao início

Trabalhando com valores ausentes

Ao adicionar novos dados em um modelo de série temporal usando uma instrução PREDICTION JOIN, o novo conjunto de dados não poderá ter dados ausentes. Se qualquer série estiver incompleta, o modelo deverá fornecer os valores ausentes usando um valor nulo, uma média numérica, uma média numérica específica ou um valor previsto. Se você especificar o EXTEND_MODEL_CASES, o Analysis Services substituirá os valores ausentes com previsões baseadas no modelo original. Se você usar REPLACE_MODEL_CASES, o Analysis Services substituirá os valores ausentes pelo valor especificado no parâmetro MISSING_VALUE_SUBSTITUTION.

Voltar ao início

Lista de funções de previsão

Todos os algoritmos Microsoft fornecem suporte a um conjunto comum de funções. Entretanto, o algoritmo MTS oferece suporte às funções adicionais relacionadas na tabela a seguir:

Latência (DMX)

Retorna várias frações de tempo entre a data do caso atual e a última data do conjunto de treinamento.

Um uso típico dessa função é para identificar casos recentes de treinamento, de forma que você possa recuperar dados detalhados sobre os casos.

PredictNodeId (DMX)

Retorna o identificador do nó para a coluna previsível especificada.

Um uso típico dessa função é para identificar o nó que gerou um valor previsto específico, de forma que você possa revisar os casos associados ao nó, a equação e outros detalhes.

PredictStdev (DMX)

Retorna o desvio padrão das previsões na coluna previsível especificada.

Essa função substitui o argumento INCLUDE_STATISTICS, para o qual não há suporte nos modelos da série temporal.

PredictVariance (DMX)

Retorna a variação das previsões na coluna previsível especificada.

Essa função substitui o argumento INCLUDE_STATISTICS, para o qual não há suporte nos modelos da série temporal.

PredictTimeSeries (DMX)

Retorna valores de histórico previstos ou futuros para os dados da série temporal.

Você também pode consultar os modelos da série temporal usando a função de previsão geral, Predict (DMX).

Para obter uma lista das funções comuns a todos os algoritmos Microsoft, consulte Mapeando funções para tipos de consulta (DMX). Para obter a sintaxe de funções específicas, consulte Referência de função de DMX (Data Mining Extensions).