Esecuzione di query su un modello di clustering (Analysis Services - Data mining)
Quando si crea una query su un modello di data mining, è possibile recuperare i metadati sul modello oppure creare una query contenuto che fornisca dettagli sui modelli individuati nell'analisi. In alternativa, è possibile creare una query di stima che utilizza i modelli nel modello per eseguire stime per i nuovi dati. Ogni tipo di query fornirà informazioni diverse. Ad esempio, una query contenuto potrebbe fornire dettagli aggiuntivi sui cluster trovati, mentre una query di stima potrebbe indicare a quale cluster è più probabile che appartenga un nuovo punto dati.
In questa sezione viene illustrato come creare query per i modelli basati sull'algoritmo Microsoft Clustering.
Query contenuto
Recupero di metadati del modello tramite DMX
Recupero di metadati del modello dal set di righe dello schema
Restituzione di un cluster o di un elenco di cluster
Restituzione di attributi per un cluster
Restituzione del profilo di un cluster tramite stored procedure di sistema
Individuazione dei fattori discriminanti per un cluster
Restituzione di case appartenenti a un cluster
Query di stima
Stima dei risultati da un modello di clustering
Determinazione dell'appartenenza al cluster
Restituzione di tutti i cluster possibili con probabilità e distanza
Ricerca di informazioni sul modello
Tutti i modelli di data mining espongono il contenuto appreso dall'algoritmo secondo uno schema standard, ovvero il set di righe dello schema del modello di data mining. È possibile creare query sul set di righe dello schema del modello di data mining tramite istruzioni DMX (Data Mining Extension). In SQL Server 2008 è anche possibile eseguire una query direttamente sui set di righe dello schema come tabelle di sistema.
Torna all'inizio
Esempio di query 1: Recupero di metadati del modello tramite DMX
Con la query seguente vengono restituiti i metadati di base sul modello di clustering TM_Clustering creato nell'Esercitazione di base sul data mining. I metadati disponibili nel nodo padre di un modello di clustering includono il nome del modello, il database in cui è archiviato e il numero di nodi figlio del modello. Questa query utilizza una query contenuto DMX per recuperare i metadati dal nodo padre del modello:
SELECT MODEL_CATALOG, MODEL_NAME, NODE_CAPTION,
NODE_SUPPORT, [CHILDREN_CARDINALITY], NODE_DESCRIPTION
FROM TM_Clustering.CONTENT
WHERE NODE_TYPE = 1
Nota
È necessario includere il nome della colonna CHILDREN_CARDINALITY tra parentesi quadre per distinguerlo dalla parola chiave riservata MDX con lo stesso nome.
Risultati dell'esempio:
MODEL_CATALOG |
TM_Clustering |
MODEL_NAME |
Adventure Works DW |
NODE_CAPTION |
Cluster Model |
NODE_SUPPORT |
12939 |
CHILDREN_CARDINALITY |
10 |
NODE_DESCRIPTION |
Tutti |
Per una definizione del significato di queste colonne in un modello di clustering, vedere Contenuto dei modelli di data mining per i modelli di clustering (Analysis Services - Data mining).
Torna all'inizio
Esempio di query 2: Recupero di metadati del modello dal set di righe dello schema
Se si esegue una query sul set di righe dello schema di data mining, è possibile trovare le stesse informazioni restituite in una query contenuto DMX. Tuttavia, il set di righe dello schema contiene alcune colonne aggiuntive, tra cui i parametri utilizzati durante la creazione del modello, la data e l'ora dell'ultima elaborazione del modello e il proprietario del modello.
Nell'esempio seguente vengono restituite le date di creazione, modifica e ultima elaborazione del modello. Vengono inoltre restituiti i parametri di clustering utilizzati per la compilazione del modello e la dimensione del set di training. Queste informazioni possono essere utili per documentare il modello o per determinare quali opzioni di clustering sono state utilizzate per creare un modello esistente.
SELECT MODEL_NAME, DATE_CREATED, LAST_PROCESSED, PREDICTION_ENTITY, MINING_PARAMETERS
from $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'TM_Clustering'
Risultati dell'esempio:
MODEL_NAME |
TM_Clustering |
DATE_CREATED |
12/10/2007 19.42.51 |
LAST_PROCESSED |
12/10/2007 20.09.54 |
PREDICTION_ENTITY |
Bike Buyer |
MINING_PARAMETERS |
CLUSTER_COUNT=10, CLUSTER_SEED=0, CLUSTERING_METHOD=1, MAXIMUM_INPUT_ATTRIBUTES=255, MAXIMUM_STATES=100, MINIMUM_SUPPORT=1, MODELLING_CARDINALITY=10, SAMPLE_SIZE=50000, STOPPING_TOLERANCE=10 |
Torna all'inizio
Ricerca di informazioni sui cluster
Le query contenuto più utili sui modelli di clustering generalmente restituiscono lo stesso tipo di informazioni che è possibile esplorare utilizzando il Visualizzatore cluster, ovvero i profili e le caratteristiche del cluster e l'analisi discriminante tra cluster. In questa sezione vengono forniti esempi di query che recuperano queste informazioni.
Esempio di query 3: Restituzione di un cluster o di un elenco di cluster
Poiché tutti i cluster includono un nodo di tipo 5, è possibile recuperare facilmente un elenco dei cluster eseguendo una query sul contenuto del modello per individuare solo i nodi di tale tipo. È inoltre possibile filtrare i nodi restituiti per probabilità o per supporto, come illustrato in questo esempio.
SELECT NODE_NAME, NODE_CAPTION ,NODE_SUPPORT, NODE_DESCRIPTION
FROM TM_Clustering.CONTENT
WHERE NODE_TYPE = 5 AND NODE_SUPPORT > 1000
Risultati dell'esempio:
NODE_NAME |
002 |
NODE_CAPTION |
Cluster 2 |
NODE_SUPPORT |
1649 |
NODE_DESCRIPTION |
English Education=Graduate Degree , 32 <=Age <=48 , Number Cars Owned=0 , 35964.0771121808 <=Yearly Income <=97407.7163393957 , English Occupation=Professional , Commute Distance=2-5 Miles , Region=North America , Bike Buyer=1 , Number Children At Home=0 , Number Cars Owned=1 , Commute Distance=0-1 Miles , English Education=Bachelors , Total Children=1 , Number Children At Home=2 , English Occupation=Skilled Manual , Marital Status=S , Total Children=0 , House Owner Flag=0 , Gender=F , Total Children=2 , Region=Pacific |
Gli attributi che definiscono il cluster sono disponibili in due colonne del set di righe dello schema di data mining.
La colonna NODE_DESCRIPTION contiene un elenco delimitato da virgole di attributi. Si noti che l'elenco di attributi potrebbe essere abbreviato ai fini della visualizzazione.
La tabella nidificata nella colonna NODE_DISTRIBUTION contiene l'elenco completo di attributi per il cluster. Se il client non supporta set di righe gerarchici, è possibile restituire la tabella nidificata aggiungendo la parola chiave FLATTENED prima dell'elenco di colonne SELECT. Per ulteriori informazioni sull'utilizzo della parola chiave FLATTENED, vedere SELECT FROM <model>.CONTENT (DMX).
Torna all'inizio
Esempio di query 4: Restituzione di attributi per un cluster
Per ogni cluster, nel Visualizzatore cluster viene visualizzato un profilo con l'elenco degli attributi e dei relativi valori. Viene inoltre visualizzato un istogramma che indica la distribuzione dei valori per l'intera popolazione dei case nel modello. Se si esplora il modello nel visualizzatore, è possibile copiare facilmente l'istogramma dalla Legenda data mining e quindi incollarlo in Excel o in un documento di Word. È inoltre possibile utilizzare il riquadro Caratteristiche cluster del visualizzatore per confrontare graficamente gli attributi di cluster diversi.
Se tuttavia è necessario ottenere valori per più di un cluster alla volta, risulta più semplice eseguire una query sul modello. Ad esempio, quando si esplora il modello, si potrebbe notare che i primi due cluster differiscono tra loro in relazione a un attributo, ovvero Number Cars Owned. Pertanto, si desidera estrarre i valori per ogni cluster.
SELECT TOP 2 NODE_NAME,
(SELECT ATTRIBUTE_VALUE, [PROBABILITY] FROM NODE_DISTRIBUTION WHERE ATTRIBUTE_NAME = 'Number Cars Owned')
AS t
FROM [TM_Clustering].CONTENT
WHERE NODE_TYPE = 5
La prima riga del codice specifica che si desiderano solo i primi due cluster.
Nota
Per impostazione predefinita, i cluster sono ordinati per supporto. Pertanto, la colonna NODE_SUPPORT può essere omessa.
La seconda riga del codice aggiunge un'istruzione sub-SELECT che restituisce solo determinate colonne della colonna della tabella nidificata. Limita inoltre le righe della tabella nidificata a quelle correlate all'attributo di destinazione, Number Cars Owned. Per semplificare la visualizzazione, la tabella è associata a un alias.
Nota
La colonna della tabella nidificata, PROBABILITY, deve essere racchiusa tra parentesi quadre perché corrisponde anche al nome di una parola chiave riservata MDX.
Risultati dell'esempio:
NODE_NAME |
T.ATTRIBUTE_VALUE |
T.PROBABILITY |
---|---|---|
001 |
2 |
0.829207754 |
001 |
1 |
0.109354156 |
001 |
3 |
0.034481552 |
001 |
4 |
0.013503302 |
001 |
0 |
0.013453236 |
001 |
Missing |
0 |
002 |
0 |
0.576980023 |
002 |
1 |
0.406623939 |
002 |
2 |
0.016380082 |
002 |
3 |
1,60E-05 |
002 |
4 |
0 |
002 |
Mancante |
0 |
Torna all'inizio
Esempio di query 5: Restituzione del profilo di un cluster tramite stored procedure di sistema
Come alternativa rapida, anziché scrivere query utilizzando DMX, è anche possibile chiamare le stored procedure di sistema utilizzate da Analysis Services per gestire i cluster. Nell'esempio seguente viene illustrato come utilizzare le stored procedure interne per restituire il profilo per un cluster con ID 002.
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterProfiles('TM_Clustering", '002',0.0005
Analogamente, è possibile utilizzare una stored procedure di sistema per restituire le caratteristiche di un cluster specifico, come illustrato nell'esempio seguente:
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterCharacteristics('TM_Clustering", '009',0.0005
Risultati dell'esempio:
Attributi |
Valori |
Frequenza |
Supporto |
---|---|---|---|
Number Children at Home |
0 |
0.999999829076798 |
899 |
Region |
North America |
0.999852875241508 |
899 |
Total Children |
0 |
0.993860958572323 |
893 |
Nota
Le stored procedure di sistema per il data mining sono per uso interno e Microsoft si riserva il diritto di modificarle, se necessario. Per l'utilizzo in un ambiente di produzione, si consiglia di creare query utilizzando DMX, AMO o XMLA.
Torna all'inizio
Esempio di query 6: Individuazione dei fattori discriminanti per un cluster
La scheda Analisi discriminante tra cluster del Visualizzatore cluster consente di confrontare facilmente un cluster con un altro o con tutti i case rimanenti (il complemento del cluster).
La creazione di query per restituire queste informazioni può tuttavia essere complessa e potrebbe essere necessario eseguire un'elaborazione aggiuntiva sul client per archiviare i risultati temporanei e confrontare i risultati di due o più query. Come alternativa rapida, è possibile utilizzare le stored procedure di sistema.
Con la query seguente viene restituita una singola tabella che indica i principali fattori discriminanti tra i due cluster con ID nodo 009 e 007. Gli attributi con valori positivi prediligono il cluster 009, mentre quelli con valori negativi il cluster 007.
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterDiscrimination('TM_Clustering','009','007',0.0005,true)
Risultati dell'esempio:
Attributi |
Valori |
Punteggio |
---|---|---|
Region |
North America |
100 |
English Occupation |
Skilled Manual |
94.9003803898654 |
Region |
Europe |
-72.5041051379789 |
English Occupation |
Manual |
-69.6503163202722 |
Queste informazioni sono identiche a quelle presentate nel grafico del visualizzatore Analisi discriminante tra cluster se si seleziona Cluster 9 dal primo elenco a discesa e Cluster 7 dal secondo elenco a discesa. Per confrontare il cluster 9 con il relativo complemento, utilizzare la stringa vuota nel secondo parametro, come illustrato nell'esempio seguente:
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterDiscrimination('TM_Clustering','009','',0.0005,true)
Nota
Le stored procedure di sistema per il data mining sono per uso interno e Microsoft si riserva il diritto di modificarle, se necessario. Per l'utilizzo in un ambiente di produzione, si consiglia di creare query utilizzando DMX, AMO o XMLA.
Torna all'inizio
Esempio d query 7: Restituzione di case appartenenti a un cluster
Se per il modello di data mining è stato abilitato il drill-through, è possibile creare query che restituiscono informazioni dettagliate sui case utilizzati nel modello. Inoltre, se il drill-through è stato abilitato per la struttura di data mining, è possibile includere le colonne della struttura sottostante utilizzando la funzione StructureColumn (DMX).
Nell'esempio seguente vengono restituite due colonne utilizzate nel modello, Age e Region, e un'altra colonna, First Name, che non è stata utilizzata nel modello. La query restituisce solo i case classificati in Cluster 1.
SELECT [Age], [Region], StructureColumn('First Name')
FROM [TM_Clustering].CASES
WHERE IsInNode('001')
Per restituire i case che appartengono a un cluster, è necessario conoscere l'ID del cluster. È possibile ottenere questo valore esplorando il modello in uno dei visualizzatori. In alternativa, è possibile rinominare un cluster per farvi riferimento in modo più semplice e in seguito utilizzare il nome al posto di un numero ID. Tenere presente, tuttavia, che i nomi assegnati a un cluster andranno persi se il modello viene rielaborato.
Torna all'inizio
Esecuzione di stime tramite il modello
Anche se il clustering viene solitamente utilizzato per descrivere e comprendere i dati, l'implementazione Microsoft consente anche di eseguire una stima sull'appartenenza al cluster e di restituire le probabilità associate alla stima. In questa sezione vengono forniti alcuni esempi su come creare query di stima sui modelli di clustering. È possibile eseguire stime per più case, specificando un'origine dati tabulare, oppure fornire nuovi valori contemporaneamente creando una query singleton. Per maggiore chiarezza, negli esempi di questa sezione vengono utilizzate tutte query singleton.
Per ulteriori informazioni sulla creazione di query di stima tramite DMX, vedere Creazione di query di stima DMX.
Per informazioni sulla compilazione di query di stima utilizzando gli strumenti grafici di BI Development Studio, vedere Procedure per la scheda Stima modello di data mining.
Torna all'inizio
Esempio di query 8: Stima dei risultati da un modello di clustering
Se il modello di clustering creato contiene un attributo stimabile, è possibile utilizzarlo per eseguire stime sui risultati. Tuttavia, il modello gestisce l'attributo stimabile in modo diverso a seconda che la colonna stimabile venga impostata su Predict o su PredictOnly. Se si imposta l'utilizzo della colonna su Predict, i valori relativi a tale attributo vengono aggiunti al modello di clustering e vengono visualizzati come attributi nel modello finito. Se invece si imposta l'utilizzo della colonna su PredictOnly, i valori non vengono utilizzati per creare cluster. Al contrario, al termine della modalità, l'algoritmo di clustering crea nuovi valori per l'attributo PredictOnly in base ai cluster a cui appartiene ogni case.
Con la query seguente viene fornito un nuovo case singolo al modello, in cui le uniche informazioni sul case sono l'età e il sesso. L'istruzione SELECT specifica la coppia attributo/valore stimabile di interesse, mentre la funzione PredictProbability (DMX) indica la probabilità che un case con tali attributi genererà il risultato di destinazione.
SELECT
[TM_Clustering].[Bike Buyer], PredictProbability([Bike Buyer],1)
FROM
[TM_Clustering]
NATURAL PREDICTION JOIN
(SELECT 40 AS [Age],
'F' AS [Gender]) AS t
Esempio dei risultati quando l'utilizzo è impostato su Predict:
Bike Buyer |
Expression |
---|---|
1 |
0.592924735740338 |
Esempio dei risultati quando l'utilizzo è impostato su PredictOnly e il modello viene rielaborato:
Bike Buyer |
Expression |
---|---|
1 |
0.55843544003102 |
In questo esempio la differenza nel modello non è significativa. Tuttavia, talvolta può essere importante individuare le differenze tra la distribuzione effettiva dei valori e le stime del modello. La funzione PredictCaseLikelihood (DMX) è utile in questo scenario, perché indica il livello di probabilità di un case, dato il modello.
Il numero restituito dalla funzione PredictCaseLikelihood è una probabilità e pertanto è sempre compreso tra 0 e 1, con il valore 0,5 che rappresenta il risultato casuale. Pertanto, un punteggio minore di 0,5 significa che il case stimato è improbabile, dato il modello, mentre un punteggio maggiore di 0,5 indica che è molto probabile ottenere un fit tra il case stimato e il modello.
Ad esempio, con la query seguente vengono restituiti due valori che caratterizzano il livello di probabilità di un nuovo case di esempio. Il valore non normalizzato rappresenta la probabilità dato il modello corrente. Quando si utilizza la parola chiave NORMALIZED, il punteggio di probabilità restituito dalla funzione viene adattato dividendo la "probabilità con il modello" per la "probabilità senza il modello".
SELECT
PredictCaseLikelihood(NORMALIZED) AS [NormalizedValue], PredictCaseLikelihood(NONNORMALIZED) AS [NonNormalizedValue]
FROM
[TM_Clustering_PredictOnly]
NATURAL PREDICTION JOIN
(SELECT 40 AS [Age],
'F' AS [Gender]) AS t
Risultati dell'esempio:
NormalizedValue |
NonNormalizedValue |
---|---|
5,56438372679893E-11 |
8,65459953145182E-68 |
Si noti che i numeri di questi risultati sono espressi tramite la notazione scientifica.
Torna all'inizio
Esempio di query 9: Determinazione dell'appartenenza al cluster
In questo esempio vengono utilizzate la funzione Cluster (DMX) per restituire il cluster a cui è più probabile che appartenga il nuovo case e la funzione ClusterProbability (DMX) per restituire la probabilità di appartenenza a tale cluster.
SELECT Cluster(), ClusterProbability()
FROM
[TM_Clustering]
NATURAL PREDICTION JOIN
(SELECT 40 AS [Age],
'F' AS [Gender],
'S' AS [Marital Status]) AS t
Risultati dell'esempio:
$CLUSTER |
Expression |
---|---|
Cluster 2 |
0.397918596951617 |
Nota Per impostazione predefinita, la funzione ClusterProbability restituisce la probabilità del cluster più probabile. Tuttavia, è possibile specificare un cluster diverso utilizzando la sintassi ClusterProbability('cluster name'). In questo caso, tenere presente che i risultati di ogni funzione di stima sono indipendenti dagli altri risultati. Pertanto, il punteggio di probabilità nella seconda colonna può fare riferimento a un cluster diverso rispetto a quello specificato nella prima colonna.
Torna all'inizio
Esempio di query 10: Restituzione di tutti i cluster possibili con probabilità e distanza
Nell'esempio precedente il punteggio di probabilità non è molto alto. Per determinare se è disponibile un cluster migliore, è possibile utilizzare la funzione PredictHistogram (DMX) insieme alla funzione Cluster (DMX) per restituire una tabella nidificata che includa tutti i cluster possibili, oltre alla probabilità che il nuovo case appartenga a ogni cluster. La parola chiave FLATTENED viene utilizzata per modificare il set di righe gerarchico in una tabella flat per semplificare la visualizzazione.
SELECT FLATTENED PredictHistogram(Cluster())
From
[TM_Clustering]
NATURAL PREDICTION JOIN
(SELECT 40 AS [Age],
'F' AS [Gender],
'S' AS [Marital Status])
Expression.$CLUSTER |
Expression.$DISTANCE |
Expression.$PROBABILITY |
---|---|---|
Cluster 2 |
0.602081403048383 |
0.397918596951617 |
Cluster 10 |
0.719691686785675 |
0.280308313214325 |
Cluster 4 |
0.867772590378791 |
0.132227409621209 |
Cluster 5 |
0.931039872200985 |
0.0689601277990149 |
Cluster 3 |
0.942359230072167 |
0.0576407699278328 |
Cluster 6 |
0.958973668972756 |
0.0410263310272437 |
Cluster 7 |
0.979081275926724 |
0.0209187240732763 |
Cluster 1 |
0.999169044818624 |
0.000830955181376364 |
Cluster 9 |
0.999831227795894 |
0.000168772204105754 |
Cluster 8 |
1 |
0 |
Per impostazione predefinita, i risultati sono classificati per probabilità. I risultati indicano che, anche se la probabilità per Cluster 2 è relativamente bassa, Cluster 2 rappresenta comunque il miglior fit per il nuovo punto dati.
Nota La colonna aggiuntiva, $DISTANCE, rappresenta la distanza tra il punto dati e il cluster. Per impostazione predefinita, l'algoritmo Microsoft Clustering utilizza il clustering EM scalabile, che utilizza più cluster a ogni punto dati e classifica i cluster possibili. Tuttavia, se si crea il modello di clustering utilizzando l'algoritmo K-medie, è possibile assegnare un unico cluster a ogni punto dati e questa query restituisce solo una riga. Per interpretare i risultati della funzione PredictCaseLikelihood (DMX), è necessario comprendere queste differenze. Per ulteriori informazioni sulle differenze tra i clustering EM e K-medie, vedere Riferimento tecnico per l'algoritmo Microsoft Clustering.
Torna all'inizio
Elenco di funzioni
Tutti gli algoritmi Microsoft supportano un set comune di funzioni. Tuttavia, i modelli compilati utilizzando l'algoritmo Microsoft Clustering supportano le funzioni aggiuntive elencate nella tabella seguente.
|
Per un elenco delle funzioni comuni a tutti i tipi di modello Microsoft, vedere Guida di riferimento agli algoritmi (Analysis Services - Data mining). Per informazioni sulla sintassi di funzioni specifiche, vedere Guida di riferimento alle funzioni DMX (Data Mining Extensions).