Esempi di query sul modello Naive Bayes

Si applica a: SQL Server 2019 e versioni precedenti di Analysis Services Azure Analysis Services Fabric/Power BI Premium

Importante

Il data mining è stato deprecato in SQL Server 2017 Analysis Services e ora è stato interrotto in SQL Server 2022 Analysis Services. La documentazione non viene aggiornata per le funzionalità deprecate e non più disponibili. Per altre informazioni, vedere Compatibilità con le versioni precedenti di Analysis Services.

Quando si crea una query su un modello di data mining, è possibile creare una query sul contenuto, che consente di fornire dettagli sui criteri individuati durante l'analisi, o una query di stima, che consente di utilizzare i criteri presenti nel modello di data mining per eseguire stime relative ai nuovi dati. È inoltre possibile recuperare metadati relativi al modello tramite una query sul set di righe dello schema di data mining. In questa sezione viene illustrato come creare entrambi i tipi di query per i modelli basati sull'algoritmo Microsoft Naive Bayes.

Query sul contenuto

Recupero dei metadati del modello tramite DMX

Recupero di un riepilogo di dati di training

Ricerca di ulteriori informazioni sugli attributi

Utilizzo di stored procedure di sistema

Query di stima

Stima dei risultati mediante una query singleton

Recupero di stime con valori di probabilità e supporto

Stima delle associazioni

Ricerca di informazioni su un modello Naive Bayes

Il contenuto di un modello Naive Bayes fornisce informazioni aggregate sulla distribuzione di valori nei dati di training. Tramite la creazione di query sui set di righe dello schema di data mining è possibile inoltre recuperare informazioni sui metadati del modello.

Esempio di query 1: Recupero di metadati del modello tramite DMX

Tramite l'esecuzione di una query sul set di righe dello schema di data mining, è possibile trovare i metadati per il modello. Tali dati possono includere la data di creazione del modello, la data dell'ultima elaborazione del modello, il nome della struttura di data mining su cui si basa il modello e il nome delle colonne utilizzate come attributo stimabile. È inoltre possibile restituire i parametri utilizzati durante la creazione del modello.

SELECT MODEL_CATALOG, MODEL_NAME, DATE_CREATED, LAST_PROCESSED,  
SERVICE_NAME, PREDICTION_ENTITY, FILTER  
FROM $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'TM_NaiveBayes_Filtered'  

Risultati dell'esempio:

Riga Metadati
MODEL_CATALOG AdventureWorks
MODEL_NAME TM_NaiveBayes_Filtered
DATE_CREATED 3/1/2008 19:15
LAST_PROCESSED 3/2/2008 20:00
SERVICE_NAME Microsoft_Naive_Bayes
PREDICTION_ENTITY Bike Buyer,Yearly Income
FILTER [Region] = 'Europe' OR [Region] = 'America del Nord'

Il modello utilizzato per questo esempio si basa sul modello Naive Bayes creato nell' Basic Data Mining Tutorial, ma è stato modificato tramite l'aggiunta di un secondo attributo stimabile e l'applicazione di un filtro ai dati di training.

Esempio di query 2: Recupero di un riepilogo di dati di training

In un modello Naive Bayes il nodo delle statistiche marginali consente di archiviare informazioni aggregate sulla distribuzione di valori nei dati di training. Questo riepilogo risulta particolarmente utile in quanto consente di non dover creare query SQL sui dati di training per trovare le stesse informazioni.

Nell'esempio seguente viene utilizzata una query sul contenuto DMX per recuperare i dati dal nodo (NODE_TYPE = 24). Poiché le statistiche vengono archiviate in una tabella nidificata, viene utilizzata la parola chiave FLATTENED per rendere più semplice la visualizzazione dei risultati.

SELECT FLATTENED MODEL_NAME,  
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE, [SUPPORT], [PROBABILITY], VALUETYPE FROM NODE_DISTRIBUTION) AS t  
FROM TM_NaiveBayes.CONTENT  
WHERE NODE_TYPE = 26  

Nota

È necessario includere i nomi delle colonne SUPPORT e PROBABILITY tra parentesi quadre per distinguerli dalle parole chiave riservate MDX degli stessi nomi.

Risultati parziali:

MODEL_NAME T.ATTRIBUTE_NAME t.ATTRIBUTE_VALUE t.SUPPORT t.PROBABILITY t.VALUETYPE
TM_NaiveBayes Bike Buyer Missing 0 0 1
TM_NaiveBayes Bike Buyer 0 8869 0,507263784 4
TM_NaiveBayes Bike Buyer 1 8615 0,492736216 4
TM_NaiveBayes Sesso Missing 0 0 1
TM_NaiveBayes Sesso F 8656 0.495081217 4
TM_NaiveBayes Sesso M 8828 0.504918783 4

Questi risultati indicano, ad esempio, il numero di case di training per ogni valore discreto (VALUETYPE = 4), insieme alla probabilità calcolata, adattata per i valori mancanti (VALUETYPE = 1).

Per una definizione dei valori forniti nella tabella NODE_DISTRIBUTION in un modello Naive Bayes, vedere Contenuto del modello di data mining per i modelli Naive Bayes (Analysis Services - Data mining). Per altre informazioni su come i calcoli di supporto e probabilità sono interessati dai valori mancanti, vedere Valori mancanti (Analysis Services - Data mining).

Esempio di query 3: Ricerca di ulteriori informazioni sugli attributi

Poiché un modello Naive Bayes spesso contiene informazioni complesse sulle relazioni fra attributi diversi, il modo più semplice per visualizzare tali relazioni consiste nell'utilizzare il Visualizzatore Microsoft Naive Bayes. È tuttavia possibile creare query DMX per restituire i dati.

Nell'esempio seguente viene illustrato come restituire informazioni dal modello su un particolare attributo, Region.

SELECT NODE_TYPE, NODE_CAPTION,   
NODE_PROBABILITY, NODE_SUPPORT, MSOLAP_NODE_SCORE  
FROM TM_NaiveBayes.CONTENT  
WHERE ATTRIBUTE_NAME = 'Region'  

Questa query restituisce due tipi di nodi: il nodo che rappresenta l'attributo di input (NODE_TYPE = 10) e i nodi per ogni valore dell'attributo (NODE_TYPE = 11). La didascalia del nodo viene utilizzata per identificare il nodo, anziché il nome dello stesso, in quanto mostra sia il nome che il valore dell'attributo.

NODE_TYPE NODE_CAPTION NODE_PROBABILITY NODE_SUPPORT MSOLAP_NODE_SCORE NODE_TYPE
10 Bike Buyer -> Area geografica 1 17484 84.51555875 10
11 Bike Buyer -> Region = Missing 0 0 0 11
11 Bike Buyer -> Region = America del Nord 0.508236102 8886 0 11
11 Bike Buyer -> Region = Pacific 0.193891558 3390 0 11
11 Bike Buyer -> Region = Europe 0.29787234 5208 0 11

Alcune delle colonne archiviate nei nodi corrispondono a quelle che è possibile ottenere dai nodi delle statistiche marginali, ad esempio il punteggio di probabilità e i valori di supporto del nodo. Tuttavia, MSOLAP_NODE_SCORE è un valore speciale fornito solo per i nodi dell'attributo di input e indica l'importanza relativa di questo attributo nel modello. Gran parte delle stesse informazioni è disponibile nel riquadro Rete di dipendenze, ma il visualizzatore non fornisce punteggi.

La query seguente restituisce i punteggi di importanza di tutti gli attributi nel modello:

SELECT NODE_CAPTION, MSOLAP_NODE_SCORE  
FROM TM_NaiveBayes.CONTENT  
WHERE NODE_TYPE = 10  
ORDER BY MSOLAP_NODE_SCORE DESC  

Risultati dell'esempio:

NODE_CAPTION MSOLAP_NODE_SCORE
Bike Buyer -> Total Children 181.3654836
Bike Buyer -> distanza Tragitto casa/lavoro 179.8419482
Bike Buyer -> English Education 156.9841928
Bike Buyer -> Numero bambini a casa 111.8122599
Bike Buyer -> Area geografica 84.51555875
Bike Buyer -> Marital Status 23.13297354
Bike Buyer -> English Occupation 2.832069191

Esplorando il contenuto del modello in Microsoft Generic Content Tree Viewer, sarà possibile identificare le statistiche più interessanti. Alcuni degli esempi più semplici sono stati già illustrati qui. Molto spesso diventa necessario invece eseguire più query o archiviare i risultati ed elaborarli sul client.

Esempio di query 4: Utilizzo di stored procedure di sistema

Oltre a scrivere query sul contenuto personalizzate, è possibile utilizzare alcune stored procedure di sistema di Analysis Services per esplorare i risultati. Per utilizzare una stored procedure di sistema, aggiungere davanti al nome della stessa la parola chiave CALL:

CALL GetPredictableAttributes ('TM_NaiveBayes')  

Risultati parziali:

ATTRIBUTE_NAME NODE_UNIQUE_NAME
Bike Buyer 100000001

Nota

Queste stored procedure di sistema vengono utilizzate nelle comunicazioni interne tra il server di Analysis Services e il client e risultano utili solo durante lo sviluppo e il test di modelli di data mining. Le query destinate a un sistema di produzione, invece, devono essere scritte sempre tramite DMX.

Per altre informazioni sulle stored procedure di sistema di Analysis Services, vedere Stored procedure di data mining (Analysis Services - Data mining).

Utilizzo di un modello Naive Bayes per eseguire stime

L'algoritmo Microsoft Naive Bayes in genere viene utilizzato meno per la stima che per l'esplorazione di relazioni tra attributi di input e stimabili. Tuttavia, il modello supporta l'utilizzo di funzioni di stima sia per la stima che per l'associazione.

Esempio di query 5: Stima dei risultati mediante una query singleton

Nella query seguente viene utilizzata una query singleton per fornire un nuovo valore e stimare, in base al modello, se è probabile che un cliente con queste caratteristiche acquisti una bicicletta. Il modo più semplice per creare una query singleton in un modello di regressione consiste nell'utilizzare la finestra di dialogo Input query singleton . È ad esempio possibile compilare la query DMX seguente selezionando il modello TM_NaiveBayes , scegliendo Query singleton, quindi selezionando valori dagli elenchi a discesa per [Commute Distance] e Gender.

SELECT  
  Predict([TM_NaiveBayes].[Bike Buyer])  
FROM  
  [TM_NaiveBayes]  
NATURAL PREDICTION JOIN  
(SELECT '5-10 Miles' AS [Commute Distance],  
  'F' AS [Gender]) AS t  

Risultati dell'esempio:

Expression
0

Tramite la funzione di stima viene restituito il valore più probabile, in questo caso, 0, che indica che è improbabile che questo tipo di cliente acquisti una bicicletta.

Esempio di query 6: Recupero di stime con valori di probabilità e supporto

Oltre a stimare un risultato, spesso si desidera conoscere l'attendibilità della stima. La query seguente usa la stessa query singleton dell'esempio precedente, ma aggiunge la funzione di stima PredictHistogram (DMX) per restituire una tabella nidificata contenente statistiche a supporto della stima.

SELECT  
  Predict([TM_NaiveBayes].[Bike Buyer]),  
  PredictHistogram([TM_NaiveBayes].[Bike Buyer])  
FROM  
  [TM_NaiveBayes]  
NATURAL PREDICTION JOIN  
(SELECT '5-10 Miles' AS [Commute Distance],  
  'F' AS [Gender]) AS t  

Risultati dell'esempio:

Bike Buyer $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY $VARIANCE $STDEV
0 10161.5714 0.581192599 0.010530981 0 0
1 7321.428768 0.418750215 0.008945684 0 0
0.999828444 5.72E-05 5.72E-05 0 0

Nella riga finale nella tabella vengono mostrate le modifiche apportate a supporto e probabilità per il valore mancante. I valori della varianza e della deviazione standard sono sempre 0, perché tramite i modelli Naive Bayes non è possibile modellare valori continui.

Esempio di query 7: Stima delle associazioni

L'algoritmo Microsoft Naive Bayes può essere utilizzato per l'analisi di associazione, se nella struttura di data mining è contenuta una tabella nidificata con l'attributo stimabile come chiave. Ad esempio, è possibile creare un modello Naive Bayes usando la struttura di data mining creata nella lezione 3: Creazione di uno scenario Market Basket (esercitazione intermedia sul data mining) dell'esercitazione sul data mining. Il modello utilizzato in questo esempio è stato modificato per aggiungere informazioni sul reddito e sulla regione del cliente nella tabella del case.

Nell'esempio di query seguente viene illustrata una query singleton che stima prodotti relativi ad acquisti del prodotto, 'Road Tire Tube'. È possibile utilizzare queste informazioni per consigliare prodotti a un tipo specifico di cliente.

SELECT   PredictAssociation([Association].[v Assoc Seq Line Items])  
FROM [Association_NB]  
NATURAL PREDICTION JOIN  
(SELECT 'High' AS [Income Group],  
  'Europe' AS [Region],  
  (SELECT 'Road Tire Tube' AS [Model])   
AS [v Assoc Seq Line Items])   
AS t  

Risultati parziali:

Modello
Women's Mountain Shorts
Water Bottle
Touring-3000
Touring-2000
Touring-1000

Elenco di funzioni

Tutti gli algoritmi Microsoft supportano un set comune di funzioni. Tuttavia, l'algoritmo Microsoft Naive Bayes supporta le funzioni aggiuntive elencate nella tabella seguente.

Funzione di stima Utilizzo
IsDescendant (DMX) Viene determinato se un nodo è figlio di un altro nodo nel modello.
Predict (DMX) Viene restituito un valore, o un set di valori, stimato per una colonna specificata.
PredictAdjustedProbability (DMX) Viene restituita la probabilità ponderata.
PredictAssociation (DMX) Viene stimata l'appartenenza a un set di dati associativo.
PredictNodeId (DMX) Viene restituito l'oggetto Node_ID per ogni case.
PredictProbability (DMX) Viene restituita la probabilità per il valore stimato.
PredictSupport (DMX) Viene restituito il valore di supporto per uno stato specificato.

Per visualizzare la sintassi di funzioni specifiche, vedere Informazioni di riferimento sulle funzioni DMX (Data Mining Extensions).

Vedere anche

Riferimento tecnico per l'algoritmo Microsoft Naive Bayes
Algoritmo Microsoft Naive Bayes
Contenuto dei modelli di data mining per i modelli Naive Bayes (Analysis Services - Data mining)