Esecuzione di query sui modelli di data mining (Analysis Services - Data mining)

Dopo avere eseguito il training di un modello di data mining, è possibile esplorarlo utilizzando i visualizzatori personalizzati disponibili in SQL Server Management Studio o Business Intelligence Development Studio. Se tuttavia si desidera eseguire stime o ottenere informazioni avanzate o più specifiche dal modello, è necessario creare una query sul modello di data mining. Le query consentono di identificare e utilizzare in modo più efficace le informazioni del modello, tramite le operazioni seguenti:

  • Creazione di stime singole e in batch.

  • Acquisizione di maggiori informazioni sui modelli individuati dal modello.

  • Visualizzazione di dettagli o dei case di training relativi a un determinato modello o subset del modello.

  • Drill-through sui dettagli dei case nel modello di data mining.

  • Estrazione di formule, regole o statistiche su tutto il modello e i dati o su un subset.

In SQL Server Analysis Services è disponibile un'interfaccia di progettazione grafica per la creazione di query, oltre a un linguaggio di query denominato DMX (Data Mining Extensions) che risulta utile per la creazione di stime personalizzate e query complesse. Per creare query di stima DMX, è possibile iniziare con i generatori di query disponibili sia in SQL Server Management Studio che in Business Intelligence Development Studio. Un set di modelli di query DMX è fornito anche in SQL Server Management Studio.

Per ulteriori informazioni sull'utilizzo del generatore di query, vedere Generazione di query di stima DMX.

Per ulteriori informazioni sull'utilizzo dei modelli di query DMX, vedere Creazione di query DMX in SQL Server Management Studio o Procedura: Utilizzo di modelli in SQL Server Management Studio.

In questa sezione vengono descritti i tipi di query che è possibile creare e le informazioni fornite da ognuno di essi. Vengono inoltre forniti esempi di query per tipi specifici di modelli di data mining.

  • Query di stima

    • Query di stima singleton

    • Query di stima in batch

    • Stime basate su serie temporali

  • Query sul contenuto

  • Query di definizione dati

Query di stima

L'obiettivo principale di molti progetti di data mining consiste nell'utilizzare i modelli di data mining per eseguire stime. Ad esempio, potrebbe essere necessario stimare il numero di prodotti che verranno venduti dall'azienda nel mese di dicembre dell'anno successivo o stabilire se un potenziale cliente acquisterà un prodotto in risposta a una campagna pubblicitaria.

Quando si crea una stima, si forniscono in genere alcuni nuovi dati e si chiede al modello di generare una stima in base ai nuovi dati. È possibile eseguire stime in un batch, eseguendo il mapping del modello a un'origine esterna di dati in un prediction join. In alternativa, è possibile fornire i valori uno alla volta creando una query singleton.

Sia le query di stima singleton che quelle in batch utilizzano la sintassi PREDICTION JOIN per definire i nuovi dati: la differenza consiste nella modalità di specifica dell'input. In una query singleton, i dati vengono forniti in linea come parte della query. In una query in batch, i dati provengono da un'origine dati esterna specificata tramite la sintassi OPENQUERY. Per ulteriori informazioni, vedere OPENQUERY (DMX).

Inoltre, i modelli Time Series consentono di eseguire stime basate esclusivamente sul modello: è necessario richiedere solo stime basate sulla serie esistente, senza dover fornire nuovi dati.

Nella sezione seguente vengono fornite informazioni sulla creazione di ognuno di questi tipi di query.

Tipo di query

Opzioni query

Query di stima singleton

Eseguire una stima su un singolo nuovo case o su più nuovi case digitati nella query.

Stime in batch

Eseguire il mapping di nuovi case in un'origine dati esterna al modello ed eseguire stime.

Stime basate su serie temporali

Stimare un numero specificato di passaggi futuri, in base a un modello esistente.

Estendere un modello esistente aggiungendo nuovi dati ed eseguire stime basate sulla serie composta.

Applicare il modello esistente a una nuova serie di dati utilizzando l'opzione REPLACE_MODEL_CASES.

Oltre a stimare un valore specifico, ad esempio la quantità di vendite del mese successivo oppure un prodotto da consigliare a un cliente, è possibile personalizzare una query di stima per restituire vari tipi di informazioni correlate alla stima. Può ad esempio risultare utile conoscere la probabilità che la stima sia corretta, in modo da decidere se presentare o meno l'indicazione all'utente.

Per personalizzare le informazioni restituite da una query di stima, aggiungere funzioni di stima alla query. Ogni tipo di modello o di query supporta funzioni specifiche. Ad esempio, i modelli di clustering supportano funzioni di stima speciali che forniscono dettagli aggiuntivi sui raggruppamenti creati dal modello. I modelli Time Series supportano le funzioni di stima che calcolano le differenze nel corso del tempo. Sono inoltre disponibili funzioni di stima generali che funzionano con quasi tutti i tipi di modello. Per un elenco delle funzioni di stima supportate nei diversi tipi di query, vedere Mapping di funzioni a tipi di query (DMX). Per un elenco completo delle funzioni di stima, vedere Guida di riferimento alle funzioni DMX (Data Mining Extensions).

Torna all'inizio

Query singleton

Una query singleton risulta utile quando si desidera creare stime semplici in tempo reale. È ad esempio possibile ottenere informazioni da un cliente mediante un sito Web, quindi utilizzare tali dati per restituire stime, presentate come indicazioni specifiche per il cliente in questione. In alternativa, è possibile analizzare il contenuto di un messaggio di posta elettronica e quindi utilizzare un modello di classificazione esistente per assegnare una categoria al messaggio e indirizzarlo di conseguenza.

Per le query singleton non è necessaria una tabella separata contenente l'input. Viene infatti passata una sola riga di dati al modello e viene restituita una sola stima in tempo reale. È anche possibile estendere la query singleton per eseguire più stime digitando un'istruzione SELECT che contiene un solo case, aggiungendo l'operatore UNION e digitando quindi un'altra istruzione SELECT per specificare un altro case.

È possibile creare query singleton su un modello esistente nei modi seguenti:

  • Utilizzando Progettazione modelli di data mining.

  • Utilizzando un modello di query singleton.

  • Creando un'istruzione DMX a livello di programmazione o in un altro client Analysis Services.

Quando si crea una query singleton, è necessario fornire i nuovi dati al modello sotto forma di un PREDICTION JOIN. Questo significa che anche se non si esegue il mapping a una tabella effettiva, è necessario assicurarsi che i nuovi dati corrispondano alle colonne esistenti nel modello di data mining. Se le nuove colonne di dati e i nuovi dati corrispondono in modo esatto, il mapping delle colonne verrà eseguito automaticamente in Analysis Services. Questa funzione è denominata NATURAL PREDICTION JOIN. Se tuttavia le colonne non corrispondono o se i nuovi dati non contengono lo stesso tipo e la stessa quantità di dati presenti nel modello, è necessario specificare quali colonne del modello mappare ai nuovi dati oppure specificare i valori mancanti.

Per informazioni sulla creazione di una query singleton in Progettazione modelli di data mining, vedere Procedura: Creazione di una query singleton nella Progettazione modelli di data mining e Generazione di query di stima DMX.

Per informazioni sull'utilizzo di DMX per la creazione di una query singleton, vedere Query di stima (DMX).

Per un esempio di utilizzo dei modelli di query DMX in SQL Server Management Studio, vedere Procedura: Creazione di una query di stima singleton da un modello.

Torna all'inizio

Query di stima in batch

Quando si esegue un prediction join, il modello viene mappato a una nuova origine dati e quindi Analysis Services esegue stime per ogni riga nei nuovi dati in base ai modelli del modello. Un prediction join risulta utile quando una tabella o un'altra origine dati esterna contiene una notevole quantità di informazioni e si desidera eseguire stime utilizzando il modello sottoposto a training.

È possibile creare query di stima in batch su un modello esistente nei modi seguenti:

  • Utilizzando Progettazione modelli di data mining.

  • Utilizzando un modello.

  • Creando un'istruzione DMX a livello di programmazione o in un altro client Analysis Services.

  • Se si crea una query di stima in batch utilizzando Progettazione modelli di data mining, è necessario innanzitutto definire l'origine dati esterna come vista origine dati.

Se si utilizza DMX per creare un prediction join, è possibile specificare l'origine dati esterna utilizzando il comando OPENQUERY, OPENROWSET o SHAPE. Il metodo predefinito di accesso ai dati nei modelli DMX è OPENQUERY. Per ulteriori informazioni su questi metodi, vedere <source data query>.

Indipendentemente da come si definiscono i dati esterni, l'origine dei dati specificati deve contenere colonne con dati simili a quelli del modello. Tuttavia, le nuove informazioni possono essere incomplete. L'elenco dei clienti può ad esempio contenere una colonna Age ma essere privo di informazioni sul reddito. Anche se sono stati utilizzati dati sul reddito quando è stato eseguito il training del modello, è possibile comunque eseguire il mapping dei nuovi dati al modello e creare una stima. In alcuni casi, la mancanza di informazioni complete potrebbe influire tuttavia sulla qualità delle stime.

Per ottenere i migliori risultati, è necessario unire in join il numero massimo possibile di colonne corrispondenti tra i nuovi dati e il modello. Tuttavia, la query riuscirà anche se non sono presenti corrispondenze. Se non si esegue il join di alcuna colonna, la query restituirà la stima marginale, che è l'equivalente dell'istruzione SELECT <predictable-column> FROM <model> senza una clausola PREDICTION JOIN.

Utilizzo dei risultati di una query di stima

Una query di stima è diversa da una query eseguita su un database relazionale. Ogni funzione di stima aggiunta alla query restituisce un set di righe specifico. Pertanto, quando si esegue una stima su un singolo case, il risultato può essere un valore stimato insieme a diverse colonne di tabelle nidificate contenenti ulteriori dettagli.

Ogni volta che si combinano più funzioni in un'unica query, i risultati restituiti vengono combinati in un set di righe gerarchico. Se tuttavia il provider non è in grado di gestire i set di righe gerarchici, è possibile fare in modo che i risultati vengano restituiti in formato flat utilizzando la parola chiave FLATTEN nella query di stima.

Per ulteriori informazioni, inclusi esempi di set di righe bidimensionali, vedere SELECT (DMX).

Stime nei modelli di data mining Time Series

I modelli Time Series consentono di utilizzare i nuovi dati e creare stime in modo più flessibile. È possibile utilizzare il modello così com'è per creare stime oppure fornire nuovi dati al modello per aggiornare le stime in base alle tendenze recenti. Se si aggiungono nuovi dati, è possibile specificare in che modo devono essere utilizzati, ossia per estendere i case del modello o per sostituirli.

Quando si estendono i case del modello, si aggingono nuovi dati relativi ai fatti al modello Time Series e le ulteriori stime sono basate sulla nuova serie combinata. Quando si sostituiscono i case del modello, si mantiene il modello sottoposto a training, ma i case sottostanti vengono sostituiti con un nuovo set di dati del case.

Indipendentemente dall'approccio adottato, il punto iniziale per le stime corrisponde sempre alla fine della serie originale.

Si supponga ad esempio che un modello Time Series esistente sia stato sottoposto a training sui dati delle vendite relativi all'anno precedente. Dopo aver raccolto diversi mesi di nuovi dati delle vendite, si decide di aggiornare le previsioni di vendita per l'anno corrente. È possibile creare un prediction join che aggiorna il modello aggiungendo nuovi dati ed estende il modello per creare nuove stime.

In alternativa, è possibile creare il modello in base ai dati esistenti e quindi creare un prediction join che sostituisce i dati del case con i nuovi dati. Questa funzione è ad esempio utile se in un archivio mancano numerosi dati e si desidera utilizzare un modello basato sui dati di un altro archivio per eseguire stime. Per ulteriori informazioni sulla creazione di prediction join sui modelli Time Series, vedere Esecuzione di una query su un modello Time Series o PredictTimeSeries (DMX).

Torna all'inizio

Query contenuto

Una query sul contenuto consente di estrarre informazioni sulle statistiche interne e sulla struttura del modello di data mining. Talvolta una query sul contenuto può fornire dettagli che non sono immediatamente disponibili nel visualizzatore. È anche possibile utilizzare i risultati di una query sul contenuto per estrarre a livello di codice informazioni per altri utilizzi. È ad esempio possibile estrarre formule o probabilità per creare calcoli personalizzati o recuperare informazioni utilizzabili sui case di un modello.

In questa sezione vengono fornite informazioni generali sui tipi di informazione che è possibile recuperare tramite una query contenuto. Le query contenuto utilizzano la sintassi DMX illustrata nella tabella seguente:

Tipo di query

Opzioni query

SELECT FROM <modello>.CASES

Trovare i case utilizzati per il training o il test di un modello Eseguire il drill-through nei dati, incluse le colonne della struttura di data mining sottostante.

SELECT FROM <struttura>.CASES

Visualizzare tutti i dati presenti nella struttura, incluse le colonne non comprese in un determinato modello di data mining.

SELECT FROM <modello>.CONTENT

Recuperare informazioni dettagliate su specifici nodi del modello, incluse regole e formule, statistiche sul supporto e sulla varianza e così via.

SELECT FROM <modello>.DIMENSIONCONTENT

Supporta query su una dimensione di data mining.

Questo tipo di query è destinato principalmente a uso interno. Se si sviluppa un algoritmo plug-in, è possibile utilizzare questa sintassi per testare i modelli.

Non tutti gli algoritmi supportano questa funzionalità. Il supporto è indicato da un flag nel set di righe dello schema MINING_SERVICES.

Parte del contenuto del modello è standard tra algoritmi. In generale, tuttavia, il contenuto di ogni modello dipende dall'algoritmo utilizzato per crearlo. Pertanto, quando si crea una query contenuto, è necessario identificare i tipi di informazione del modello che sono maggiormente utili.

Se ad esempio viene creata una query che utilizza la sintassi SELECT FROM <model>.CONTENT, tale query restituisce informazioni diverse in base al tipo di modello: Sequence Clustering, Decision Trees o Time Series. Per un modello di associazione, può essere necessario recuperare le descrizioni di regole specifiche in modo da utilizzare le regole in un'applicazione personalizzata, mentre in un modello Time Series o Sequence Clustering è possibile che si desideri trovare ulteriori informazioni sui modelli temporali rilevati dal modello.

Nelle sezioni seguenti sono inclusi alcuni esempi per illustrare la gamma di informazioni che è possibile ottenere da una query contenuto. Per informazioni sul contenuto dei modelli di data mining e di ogni tipo di modello, vedere Contenuto del modello di data mining (Analysis Services - Data mining).

Esempio 1: Query contenuto su un modello di associazione

È possibile utilizzare un'istruzione SELECT FROM <modello>.CONTENT per restituire tipi diversi di contenuto, a seconda del tipo di modello su cui viene eseguita la query. Per un modello di associazione, i nodi che rappresentano regole hanno un valore NODE_TYPE pari a 8, mentre i set di elementi hanno un valore NODE_TYPE pari a 7. Pertanto, la query seguente restituisce i primi 10 set di elementi, classificati per supporto (ordinamento predefinito).

SELECT TOP 10 NODE_DESCRIPTION, NODE_PROBABILITY, SUPPORT
FROM <model>.CONTENT WHERE NODE_TYPE = 7

Nell'esempio seguente vengono restituite tre colonne: l'ID del nodo, la regola completa e il prodotto sul lato destro del set di elementi, ovvero il prodotto che, secondo la stima, è associato ad altri prodotti come parte di un set di elementi.

La parola chiave FLATTENED indica che il set di righe nidificato deve essere convertito in una tabella flat. L'attributo che rappresenta il prodotto sul lato destro della regola è contenuto nella tabella NODE_DISTRIBUTION; pertanto, si recupera solo la riga che contiene un nome di attributo aggiungendo un requisito in base al quale la lunghezza deve essere maggiore di 2. Per rimuovere il nome del modello dalla terza colonna viene utilizzata una semplice funzione stringa. Generalmente il nome del modello viene sempre aggiunto come prefisso ai valori delle colonne nidificate. La clausola WHERE specifica che il valore di NODE_TYPE deve essere 8, per recuperare solo le regole.

SELECT FLATTENED NODE_UNIQUE_NAME , NODE_DESCRIPTION,
     (SELECT RIGHT(ATTRIBUTE_NAME, (LEN(ATTRIBUTE_NAME)-LEN('Association model name'))) 
FROM NODE_DISTRIBUTION
WHERE LEN(ATTRIBUTE_NAME)>2
) 
AS RightSideProduct
FROM [<Association model name>].CONTENT
WHERE NODE_TYPE = 8 
ORDER BY NODE_SUPPORT DESC

Per ulteriori esempi, vedere Esecuzione di query su un modello di associazione (Analysis Services - Data mining).

Esempio 2: Query sul contenuto su un modello Decision Trees

Uno degli scenari in cui risulta utile l'esecuzione di query sul contenuto del modello è quando si desidera completare una query di stima restituendo la regola che spiega il motivo per cui tale stato è stato stimato. Ad esempio, è possibile aggiungere la funzione di stima PredictNodeId (DMX) a una query per ottenere l'ID del nodo che contiene la regola, utilizzando la sintassi seguente:

SELECT  Predict([Bike Buyer]), PredictNodeID([Bike Buyer]) 
FROM [<decision tree model name>]
PREDICTION JOIN 
<input rowset> 

Per un modello di albero delle decisioni, la didascalia contiene la descrizione del percorso fino al risultato. Pertanto, una volta ottenuto l'ID del nodo che contiene il risultato, è possibile recuperare la regola o il percorso che spiega la stima creando una query contenuto, come illustrato di seguito:

SELECT NODE_CAPTION
FROM [<decision tree model name>] 
WHERE NODE_UNIQUE_NAME= '<node id>'

Per ulteriori esempi, vedere Esecuzione di query su un modello Decision Trees (Analysis Services - Data mining).

Torna all'inizio

Query di definizione dati

In Analysis Services è disponibile un'ampia varietà di istruzioni di definizione dati per la creazione e la gestione di strutture e modelli di data mining. Per ulteriori informazioni, vedere Gestione di strutture e modelli di data mining.