Esecuzione di una query su un modello Time Series (Analysis Services - Data mining)

Quando si crea una query su un modello di data mining, è possibile creare una query sul contenuto, che fornisce dettagli sui modelli individuati durante l'analisi, oppure una query di stima, che utilizza i modelli presenti nel modello di data mining per eseguire stime relative a nuovi dati. Una query sul contenuto per un modello Time Series, ad esempio, potrebbe fornire dettagli aggiuntivi sulle strutture periodiche rilevate, mentre una query di stima potrebbe fornire stime per i 5-10 intervalli di tempo successivi. Utilizzando una query è inoltre possibile recuperare metadati relativi al modello.

In questa sezione viene illustrato come creare entrambi i tipi di query per i modelli basati sull'algoritmo Microsoft Time Series.

  • Query sul contenuto

    Recupero di hint di periodicità per il modello

    Recupero dell'equazione per un modello ARIMA

    Recupero dell'equazione per un modello ARTxp

  • Query di stima

    Esecuzione di stime con EXTEND_MODEL_CASES

    Esecuzione di stime con REPLACE_MODEL_CASES

    Utilizzo di valori mancanti

Query sul contenuto per un modello Time Series

Una query sul contenuto del modello può fornire informazioni di base sul modello, ad esempio i parametri utilizzati durante la creazione del modello o l'ora dell'ultima volta in cui è stato elaborato il modello. Nell'esempio seguente viene illustrata la sintassi di base per l'esecuzione di una query sul contenuto del modello utilizzando i set di righe dello schema di data mining.

Torna all'inizio

Query di esempio 1: Recupero di hint di periodicità per il modello

È possibile recuperare le periodicità individuate all'interno della serie temporale eseguendo una query sull'albero ARIMA o ARTxp. Le periodicità nel modello completato, tuttavia, potrebbero non corrispondere ai periodi specificati come hint durante la creazione del modello. Per recuperare gli hint specificati come parametri durante la creazione del modello, è possibile eseguire una query sul contenuto del modello di data mining utilizzando l'istruzione DMX seguente:

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

Risultati parziali:

MINING_PARAMETERS

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

L'hint di periodicità predefinito è {1} ed è presente in tutti i modelli. Questo modello di esempio è stato creato con un hint aggiuntivo che potrebbe non essere presente nel modello finale.

[!NOTA]

Nell'esempio i risultati sono stati troncati per una maggiore leggibilità.

Torna all'inizio

Query di esempio 2: Recupero dell'equazione per un modello ARIMA

È possibile recuperare l'equazione per un modello ARIMA eseguendo una query su qualsiasi nodo in un singolo albero. Ogni albero all'interno di un modello ARIMA rappresenta una periodicità diversa e, in presenza di più serie di dati, ciascuna serie di dati disporrà di un set di alberi di periodicità. Per recuperare l'equazione per una serie di dati specifica, pertanto, è innanzitutto necessario identificare l'albero.

Il prefisso TA, ad esempio, indica che il nodo fa parte di un albero ARIMA, mentre il prefisso TS viene utilizzato per gli alberi ARTXP. È possibile trovare tutti gli alberi ARIMA eseguendo una query sul contenuto del modello per i nodi con un valore NODE_TYPE di 27. È anche possibile utilizzare il valore di ATTRIBUTE_NAME per individuare il nodo radice ARIMA per una particolare serie di dati. Questo esempio di query consente di trovare i nodi ARIMA che rappresentano le quantità vendute del modello R250 nell'area Europa.

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

Utilizzando questo ID del nodo è possibile recuperare dettagli sull'equazione ARIMA per l'albero. L'istruzione DMX seguente recupera la forma abbreviata dell'equazione ARIMA per la serie di dati. Viene inoltre recuperata l'intersezione dalla tabella nidificata, NODE_DISTRIBUTION. In questo esempio l'equazione viene ottenuta facendo riferimento all'ID univoco del nodo TA00000007. Può essere tuttavia necessario utilizzare un ID del nodo diverso ed è possibile ottenere risultati leggermente differenti dal modello.

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

Risultati dell'esempio:

Short equation

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

Per ulteriori informazioni sull'interpretazione di queste informazioni, vedere Contenuto dei modelli di data mining per i modelli Time Series (Analysis Services - Data mining).

Torna all'inizio

Query di esempio 3: Recupero dell'equazione per un modello ARTxp

Per un modello ARTxp, a ogni livello dell'albero vengono archiviate informazioni diverse. Per ulteriori informazioni sulla struttura di un modello ARTxp e su come interpretare le informazioni nell'equazione, vedere Contenuto dei modelli di data mining per i modelli Time Series (Analysis Services - Data mining).

L'istruzione DMX seguente recupera le informazioni su una parte dell'albero ARTxp che rappresenta la quantità di vendite per il modello R250 in Europa.

[!NOTA]

Il nome della colonna VARIANCE della tabella nidificata deve essere racchiuso tra parentesi per distinguerlo dalla parola chiave riservata con lo stesso nome. Le colonne della tabella nidificata, PROBABILITY e SUPPORT, non sono incluse in quanto vuote nella maggior parte dei casi.

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

Per ulteriori informazioni sull'interpretazione di queste informazioni, vedere Contenuto dei modelli di data mining per i modelli Time Series (Analysis Services - Data mining).

Torna all'inizio

Query di stima in un modello Time Series

In SQL Server 2008 Enterprise Edition è possibile aggiungere nuovi dati a un modello Time Series e incorporarli automaticamente nel modello. Aggiungere nuovi dati a un modello di data mining Time Series mediante uno dei due metodi indicati di seguito:

  • Utilizzare PREDICTION JOIN per unire in join i dati in un'origine esterna ai dati di training.

  • Utilizzare una query di stima singleton per specificare i dati un intervallo alla volta. Per ulteriori informazioni sulla creazione di una query di stima singleton, vedere Creazione di query di stima DMX.

Quando si aggiungono nuovi dati a un modello Time Series, è possibile specificare se estendere o sostituire i dati di training:

  • In caso di estensione, in Analysis Services i nuovi dati vengono aggiunti alla fine dei dati di training esistenti. Il numero di case di training aumenta. L'estensione dei case del modello risulta utile per l'aggiornamento continuo del modello con i dati nuovi.

    Per estendere i dati, creare un'istruzione PREDICTION JOIN in un modello Time Series, specificare l'origine dei nuovi dati e utilizzare l'argomento EXTEND_MODEL_CASES.

  • In caso di sostituzione dei dati, in Analysis Services il modello per il quale è stato eseguito il training viene mantenuto, ma i nuovi dati vengono utilizzati per sostituire alcuni o tutti i case di training esistenti. La dimensione dei dati di training pertanto non viene mai modificata, mentre i case vengono sostituiti continuamente con dati più aggiornati. Se si forniscono dati abbastanza nuovi, è possibile sostituire i dati di training con una serie completamente nuova.

    La sostituzione dei case del modello risulta utile qualora si desideri eseguire il training per un modello in un case set, quindi applicare il modello a una serie di dati diversa.

    Per sostituire i dati, creare un'istruzione PREDICTION JOIN in un modello Time Series, specificare l'origine dei nuovi dati e utilizzare l'argomento REPLACE_MODEL_CASES.

Non è possibile eseguire stime cronologiche quando si aggiungono nuovi dati. Indipendentemente dall'operazione eseguita sui dati di training, ovvero estensione o sostituzione, le stime iniziano sempre dal timestamp finale del set di training originale. Se i nuovi dati contengono pertanto n intervalli di tempo e si richiedono stime per gli intervalli temporali da 1 a n, le stime coincideranno con lo stesso periodo dei nuovi dati. Per ottenere nuove stime per periodi di tempo non previsti dai dati, è necessario avviare le stime nell'intervallo di tempo n+1 dopo la nuova serie dei dati oppure verificare di aver effettuato la richiesta di ulteriori intervalli di tempo.

Si supponga ad esempio che il modello esistente contenga dati relativi a sei mesi. Si desidera estendere il modello aggiungendo le cifre relative alle vendite degli ultimi tre mesi ed effettuare una stima sui prossimi tre mesi. Per ottenere solo le nuove stime quando si aggiungono i nuovi dati, specificare l'intervallo di tempo 4 come punto iniziale e l'intervallo di tempo 7 come punto finale. È anche possibile richiedere un totale di sei stime, ma, in questo caso, gli intervalli di tempo per le prime tre stime si sovrapporrebbero ai nuovi dati aggiunti.

Per esempi di query e ulteriori informazioni sulla sintassi per l'utilizzo di REPLACE_MODEL_CASES e EXTEND_MODEL_CASES, vedere PredictTimeSeries (DMX).

Torna all'inizio

Esecuzione di stime con EXTEND_MODEL_CASES

Il comportamento delle stime varia a seconda se si esegue l'estensione o la sostituzione dei case del modello. Se si estende un modello, i nuovi dati vengono aggiunti alla fine della serie e le dimensioni del set di training aumentano. Gli intervalli di tempo utilizzati per le query di stima iniziano tuttavia sempre alla fine della serie originale. Se si aggiungono pertanto tre nuovi punti dati e si richiedono sei stime, le prime tre stime restituite si sovrappongono tuttavia ai nuovi dati. In questo caso, Analysis Services restituisce i nuovi punti dati effettivi anziché eseguire una stima, finché non vengono utilizzati tutti i nuovi punti dati. In Analysis Services vengono quindi eseguite le stime in base alla serie composta.

Questo comportamento consente di aggiungere nuovi dati e di visualizzare le cifre effettive relative alle vendite nell'apposito grafico, anziché visualizzare le proiezioni.

Per aggiungere tre nuovi punti dati ed eseguire tre nuove stime, è ad esempio necessario effettuare quanto segue:

  • Creare un'istruzione PREDICTION JOIN in un modello Time Series e specificare l'origine di nuovi dati relativi a tre mesi.

  • Richiedere stime per sei intervalli di tempo. A tale scopo, specificare 6 intervalli di tempo, dove il punto iniziale è l'intervallo di tempo 1 e il punto finale è l'intervallo di tempo 7. Questa indicazione si applica solo a EXTEND_MODEL_CASES.

  • Per ottenere solo le nuove stime, specificare 4 come punto iniziale e 7 come punto finale.

  • È necessario utilizzare l'argomento EXTEND_MODEL_CASES.

    Le cifre relative alle vendite effettive vengono restituite per i primi tre intervalli di tempo, mentre le stime basate sul modello esteso vengono restituite per i tre intervalli di tempo successivi.

Torna all'inizio

Esecuzione di stime con REPLACE_MODEL_CASES

Se si sostituiscono i case in un modello, le dimensioni del modello rimangono invariate, ma i singoli case nel modello vengono sostituiti in Analysis Services. Ciò risulta utile per le stime incrociate e scenari in cui è importante mantenere dimensioni consistenti del training set.

Si supponga ad esempio che i dati relativi alle vendite di uno dei negozi non siano sufficienti. È possibile creare un modello generale calcolando la media delle vendite per tutti i negozi in una particolare regione, quindi eseguire il training di un modello. Per eseguire stime per il negozio i cui dati relativi alle vendite non sono sufficienti, creare quindi un'istruzione PREDICTION JOIN sui nuovi dati di vendita solo per il negozio in questione. In questo caso, in Analysis Services vengono mantenuti i modelli che derivano dal modello regionale, mentre i case di training esistenti vengono sostituiti con i dati del singolo negozio. Si otterrà pertanto una maggiore corrispondenza tra i valori della stima e le linee di tendenza del singolo negozio.

Quando si utilizza l'argomento REPLACE_MODEL_CASES, in Analysis Services nuovi case vengono continuamente aggiunti alla fine del case set e un numero corrispondente di case viene eliminato dall'inizio del case set. Se si aggiunge una quantità di nuovi dati maggiore rispetto a quella nel set di training originale, i dati meno recenti vengono eliminati in Analysis Services. Se si specifica un numero sufficiente di nuovi valori, le stime possono essere basate sui dati completamente nuovi.

Si supponga ad esempio di avere eseguito il training per il modello in un case set contenente 1000 righe. Si aggiungono quindi 100 righe di nuovi dati. In Analysis Services vengono eliminate le prime 100 righe dal set di training e le 100 righe di nuovi dati vengono aggiunte alla fine del set, in modo da ottenere un totale di 1000. Se si aggiungono 1100 righe di dati nuovi, vengono utilizzate solo le 1000 righe più recenti.

Per fare un altro esempio, si supponga di volere aggiungere nuovi dati relativi a tre mesi ed eseguire tre nuove stime. In tal caso, effettuare quanto segue:

  • Creare un'istruzione PREDICTION JOIN in un modello Time Series e utilizzare l'argomento REPLACE_MODEL_CASE.

  • Specificare l'origine dei nuovi dati relativi a tre mesi. È possibile che tali dati provengano da un'origine completamente diversa da quella dei dati di training originali.

  • Richiedere stime per sei intervalli di tempo. A tale scopo, specificare 6 intervalli di tempo oppure specificare l'intervallo di tempo 1 come punto iniziale e l'intervallo di tempo 7 come punto finale.

    [!NOTA]

    A differenza di EXTEND_MODEL_CASES, non è possibile restituire gli stessi valori aggiunti come dati di input. Tutti i sei valori restituiti sono stime basate sul modello aggiornato che include sia i vecchi che i nuovi dati.

    [!NOTA]

    Se con REPLACE_MODEL_CASES si utilizza il timestamp 1 come punto iniziale, si ottengono nuove stime basate sui nuovi dati, che sostituiscono i dati di training precedenti.

Per esempi di query e ulteriori informazioni sulla sintassi per l'utilizzo di REPLACE_MODEL_CASES e EXTEND_MODEL_CASES, vedere PredictTimeSeries (DMX).

Torna all'inizio

Utilizzo di valori mancanti

Quando si aggiungono nuovi dati a un modello Time Series utilizzando un'istruzione PREDICTION JOIN, nel nuovo set di dati non può mancare alcun valore. Se una serie è incompleta, il modello deve fornire i valori mancanti utilizzando un valore Null, più medie numeriche, una media numerica specifica o un valore stimato. Se si specifica EXTEND_MODEL_CASES, Analysis Services i valori mancanti vengono sostituiti con stime basate sul modello originale. Quando si utilizza REPLACE_MODEL_CASES, in Analysis Services i valori mancanti vengono sostituiti con il valore specificato nel parametro MISSING_VALUE_SUBSTITUTION.

Torna all'inizio

Elenco delle funzioni di stima

Tutti gli algoritmi Microsoft supportano un set comune di funzioni. L'algoritmo Microsoft Time Series, tuttavia, supporta funzioni aggiuntive, elencate nella tabella seguente.

Lag (DMX)

Restituisce un numero di intervalli di tempo tra la data del case corrente e l'ultima data del set di training.

Un tipico utilizzo di questa funzione consiste nell'identificare i case di training recenti per poter recuperare dati dettagliati sui case.

PredictNodeId (DMX)

Restituisce l'ID nodo per la colonna stimabile specificata.

Un tipico utilizzo di questa funzione consiste nell'identificare il nodo che genera un determinato valore stimato per poter esaminare i case associati al nodo, l'equazione e altri dettagli.

PredictStdev (DMX)

Restituisce la deviazione standard delle stime nella colonna stimabile specificata.

Questa funzione sostituisce l'argomento INCLUDE_STATISTICS, non supportato per i modelli Time Series.

PredictVariance (DMX)

Restituisce la varianza delle stime per la colonna stimabile specificata.

Questa funzione sostituisce l'argomento INCLUDE_STATISTICS, non supportato per i modelli Time Series.

PredictTimeSeries (DMX)

Restituisce i valori futuri stimati o cronologici per una serie temporale.

È inoltre possibile eseguire una query sui modelli della serie temporale utilizzando la funzione di stima generale Predict (DMX).

Per un elenco delle funzioni comuni a tutti gli algoritmi Microsoft, vedere Mapping di funzioni a tipi di query (DMX). Per informazioni sulla sintassi di funzioni specifiche, vedere Guida di riferimento alle funzioni DMX (Data Mining Extensions).