Condividi tramite


Set di dati di addestramento e verifica

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 sospeso 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.

La separazione dei dati in set di training e test è una parte importante della valutazione dei modelli di data mining. In genere, quando si separa un set di dati in un set di training e un set di test, la maggior parte dei dati viene usata per il training e viene usata una parte più piccola dei dati per i test. SQL Server Analysis Services campiona in modo casuale i dati per garantire che i set di test e di training siano simili. Usando dati simili per il training e il test, è possibile ridurre al minimo gli effetti delle discrepanze dei dati e comprendere meglio le caratteristiche del modello.

Dopo l'elaborazione di un modello tramite il set di training, si testa il modello eseguendo previsioni sul set di test. Poiché i dati nel set di test contengono già valori noti per l'attributo da stimare, è facile determinare se le ipotesi del modello sono corrette.

Creazione di set di test e training per strutture di data mining

In SQL Server 2017 è possibile separare il set di dati originale a livello della struttura di data mining. Informazioni sulle dimensioni dei set di dati di training e test e sulla riga a cui appartiene il set, vengono archiviate con la struttura e tutti i modelli basati su tale struttura possono usare i set per il training e il test.

È possibile definire un set di dati di test in una struttura di data mining nei modi seguenti:

  • Utilizzo della Creazione guidata di data mining per dividere la struttura di data mining quando la si crea.

  • Modifica delle proprietà della struttura nella scheda Struttura di data mining nella Progettazione di modelli di data mining.

  • Creazione e modifica di strutture a livello di codice tramite Analysis Management Objects (AMO) o DDL (XML Data Definition Language).

Utilizzo della Creazione guidata per il data mining per dividere una struttura di data mining

Per impostazione predefinita, dopo aver definito le origini dati per una struttura di data mining, la Creazione guidata per il data mining dividerà i dati in due set: uno con il 70% dei dati di origine, per il training del modello e uno con il 30% dei dati di origine, per il test del modello. Questo valore predefinito è stato scelto perché un rapporto 70-30 viene spesso usato nel data mining, ma con SQL Server Analysis Services è possibile modificare questo rapporto in base alle esigenze.

È anche possibile configurare la procedura guidata per impostare un numero massimo di casi di training oppure combinare i limiti per consentire una percentuale massima di casi fino a un numero massimo specificato di casi. Quando si specifica sia una percentuale massima di case che un numero massimo di case, SQL Server Analysis Services usa il più piccolo dei due limiti come dimensione del set di test. Ad esempio, se si specifica il 30% di esclusione per i casi di test e il numero massimo di casi di test come 1000, il numero del set di test non supererà mai i 1000 casi. Ciò può essere utile se si vuole garantire che le dimensioni del set di test rimangano coerenti anche se al modello vengono aggiunti più dati di training.

Se si utilizza la stessa vista origine dati per strutture di mining diverse e si desidera assicurarsi che i dati siano divisi approssimativamente nello stesso modo per tutte le strutture di mining e i loro modelli, è necessario specificare il valore di inizializzazione per il campionamento casuale. Quando si specifica un valore per HoldoutSeed, SQL Server Analysis Services userà tale valore per iniziare il campionamento. In caso contrario, il campionamento usa un algoritmo di hashing sul nome della struttura di mining per generare il valore seed.

Annotazioni

Se si crea una copia della struttura di data mining utilizzando le istruzioni EXPORT e IMPORT , la nuova struttura di data mining avrà gli stessi set di dati di training e test, perché il processo di esportazione crea un nuovo ID ma utilizza lo stesso nome. Tuttavia, se due strutture di data mining utilizzano la stessa origine dati sottostante ma hanno nomi diversi, i set creati per ogni struttura di data mining saranno diversi.

Modifica delle proprietà della struttura per creare un set di dati di test

Se si crea ed elabora una struttura di data mining e successivamente si decide di riservare un set di dati di test, è possibile modificare le proprietà della struttura di data mining. Per modificare la modalità di partizionamento dei dati, modificare le proprietà seguenti:

Proprietà Description
HoldoutMaxCases Specifica il numero massimo di case da includere nel set di test.
HoldoutMaxPercent Specifica il numero di case da includere nel set di test come percentuale del set di dati completo. Per non avere set di dati, è necessario specificare 0.
HoldoutSeed Specifica un valore intero da utilizzare come valore di inizializzazione quando si selezionano in modo casuale i dati per le partizioni. Questo valore non influisce sul numero di casi nel set di addestramento; invece, garantisce che la partizione possa essere ripetuta.

Se si aggiunge o si modifica un set di dati di test su una struttura esistente, è necessario rielaborare la struttura e tutti i modelli associati. Inoltre, poiché la divisione dei dati di origine determina il training del modello in un subset diverso dei dati, è possibile che vengano visualizzati risultati diversi dal modello.

Specificazione del "Holdout" programmaticamente

È possibile definire set di dati di test e training in una struttura di data mining usando istruzioni DMX, AMO o DDL XML. L'istruzione ALTER MINING STRUCTURE non supporta l'uso di parametri di riserva.

  • DMX Nel linguaggio DMX (Data Mining Extensions), l'istruzione CREATE MINING STRUCTURE è stata estesa per includere una clausola WITH HOLDOUT.

  • ASSL È possibile creare una nuova struttura di data mining o aggiungere un set di dati di test a una struttura di data mining esistente usando il linguaggio ASSL (SQL Server Analysis Services Scripting Language).

  • AMO È anche possibile visualizzare e modificare set di dati di controllo usando AMO..

È possibile visualizzare informazioni sul set di dati di controllo in una struttura di data mining esistente eseguendo una query sul set di righe dello schema di data mining. A tale scopo, è possibile effettuare una chiamata DISCOVER ROWSET oppure usare una query DMX.

Recupero di informazioni sui dati di controllo

Per impostazione predefinita, tutte le informazioni sui set di dati di training e test vengono memorizzate nella cache, in modo da poter usare i dati esistenti per eseguire il training e quindi testare nuovi modelli. È anche possibile definire filtri da applicare ai dati di controllo memorizzati nella cache in modo da poter valutare il modello sui subset dei dati.

Il modo in cui i casi sono suddivisi in set di dati di addestramento e di test dipende da come configuri l'holdout e dai dati che fornisci. Se si desidera determinare il numero di casi usati per il training o per i test oppure se si desidera trovare altri dettagli sui case inclusi nei set di training e di test, è possibile eseguire una query sulla struttura del modello creando una query DMX. Ad esempio, la query seguente restituisce i casi usati nell'insieme di addestramento del modello.

SELECT * from <structure>.CASES WHERE IsTrainingCase()  

Per recuperare solo i test case e filtrare ulteriormente i test case in una delle colonne della struttura di data mining, utilizzare la sintassi seguente:

SELECT * from <structure>.CASES WHERE IsTestCase() AND <structure column name> = '<value>'  

Limitazioni sull'uso dei dati di controllo

  • Per utilizzare il metodo di holdout, la MiningStructureCacheMode proprietà della struttura di data mining deve essere impostata sul valore predefinito KeepTrainingCases. Se si modifica la proprietà CacheMode in ClearAfterProcessing e quindi si rielabora la struttura di data mining, la partizione andrà persa.

  • Non è possibile rimuovere i dati da un modello time series; pertanto, non è possibile separare i dati di origine in set di training e test. Se si inizia a creare una struttura di data mining e un modello e si sceglie l'algoritmo Microsoft Time Series, l'opzione di creare un set di dati di verifica è disabilitata. L'uso dei dati di controllo è disabilitato anche se la struttura di data mining contiene una colonna KEY TIME a livello di tabella dei casi o tabella annidata.

  • È possibile configurare inavvertitamente il set di dati di validazione in modo che il set di dati completo venga usato per il test e che non rimangano dati per l'addestramento. Tuttavia, in questo caso, SQL Server Analysis Services genererà un errore in modo che sia possibile risolvere il problema. SQL Server Analysis Services avverte anche quando viene processata la struttura se per il test è stato mantenuto fuori più del 50% dei dati.

  • Nella maggior parte dei casi, il valore di blocco predefinito pari a 30 offre un buon equilibrio tra i dati di training e di test. Non esiste un modo semplice per determinare quanto grande dovrebbe essere il set di dati per fornire un addestramento sufficiente o quanto sparso possa essere il set di addestramento e evitare comunque l'overfitting. Tuttavia, dopo aver creato un modello, è possibile usare la convalida incrociata per valutare il set di dati rispetto a un determinato modello.

  • Oltre alle proprietà elencate nella tabella precedente, una proprietà di sola lettura, HoldoutActualSize, viene fornita in AMO e XML DDL. Tuttavia, poiché le dimensioni effettive di una partizione non possono essere determinate in modo accurato fino a quando la struttura è stata elaborata, è necessario verificare se il modello è stato elaborato prima di recuperare il valore della proprietà HoldoutActualSize .

Vedere anche

Strumenti di data mining
Concetti relativi al data mining
Soluzioni di data mining
Test e convalida (Data Mining)