Dataset Nursery • Dataset utilizzato nell’esercitazione SQL Server & Weka http://archive.ics.uci.edu/ml/datasets/Nursery – 12960 dati (saranno usati in parte per il test e in parte per il training) • Attributi presenti Datamining Dutto Riccardo [email protected] NPS - tel.7991 http://dbdmg.polito.it/ Dutto Riccardo - SQL Server & Weka – – – – – – – – – parents: usual, pretentious, great_pret has_nurs: proper, less_proper, improper, critical, very_crit form: complete, completed, incomplete, foster children: 1, 2, 3, more housing: convenient, less_conv, critical finance: convenient, inconv social: non-prob, slightly_prob, problematic health: recommended, priority, not_recom Class: not_recom(33%), recommend(0.015%), very_recom(2.5%), priority(32%), spec_prior(31%) Dutto Riccardo - SQL Server & Weka Creazione del progetto • Creare un nuovo progetto di tipo “Analysis Services Project” Data Mining con SQL Server - creazione del modello Dutto Riccardo - SQL Server & Weka Creazione di una Mining Structure • Creare un “Data Source” (collegamento al DB coi dati) e un “Data Source View” (collegamento alle tabelle del DB) • Creare una “Mining Structure” tramite il wizard Dutto Riccardo - SQL Server & Weka Dutto Riccardo - SQL Server & Weka Data Mining Wizard – Selezione tecnica DM • Selezionare l’algoritmo di DM da utilizzare Dutto Riccardo - SQL Server & Weka 1 Data Mining Wizard – Tabella dati • Selezionare la tabella con i dati da analizzare • Selezionare: – la chiave primaria – gli attributi di input – il campo che contiene la classe da predire – se i dati di training sono in più tabelle relazionate tra loro si sceglie “Nested” Dutto Riccardo - SQL Server & Weka Data Mining Wizard – Dati per il test • Stabilire la percentuale di dati (partizionamento fisso) da usare per il Test (i restanti verranno utilizzati per la creazione del modello) Dutto Riccardo Data Mining Wizard – Selezione Attributi - SQL Server & Weka Dutto Riccardo - SQL Server & Weka Data Mining Wizard – Salvare il modello • Dare un nome alla struttura appena creata • “Allow drill through” permette, per gli algoritmi per cui è possibile (ie decision trees), di navigare il modello Dutto Riccardo - SQL Server & Weka Processamento del modello • Una volta creata la struttura occorre fare il deploy (trasferimento fisico delle strutture sul server) e processare il modello (calcolo degli aggregati), prima di poterlo utilizzare Dutto Riccardo Data Mining con SQL Server - Decision Tree - SQL Server & Weka Dutto Riccardo - SQL Server & Weka 2 Mining model viewer – Decision Tree • “Mining model viewer -> decision tree” permette di visualizzare e navigare l’albero Dutto Riccardo - Mining model viewer – Dependency Network • “Mining model viewer -> dependency network” visualizza la “rete delle dipendenze” ossia la “forza” del legame degli attributi con la classe da predire SQL Server & Weka Dutto Riccardo Variare i Parametri del modello • Nella tab “Mining Models” è possibile visualizzare e modificare i parametri che SQL Server usa come standard per la creazione del modello – Per esempio per i Decision Trees è possibile variare il tipo di split, il tipo score, il supporto minimo, etc. - SQL Server & Weka Valutazione del Modello • “Mining accuracy chart” permette di valutare il modello tramite diversi strumenti. • La tab “input selection” permette di definire alcuni parametri di classificazione e i dati da usare come test. Usa i dati definiti durante la creazione del modello (con la possibile aggiunta di filtri) Permette di selezionare una singola classe da predire Usa i dati definiti durante la creazione del modello Usa un altro dataset (che deve essere presente nel Data Soure View) Dutto Riccardo - SQL Server & Weka Dutto Riccardo Valutazione del modello (2) • “Classification Matrix” visualizza la matrice di confusione - SQL Server & Weka Valutazione del modello - Lift Chart • Lift chart – Selezionare in “Input selection” tab il “predict value” (la classe obbiettivo) – Il modello di DM creato assegna ad ogni dato (identificato dall’ID) una probabilità di appartenere alla classe obbiettivo (in questo esempio è usata la classe “Priority” come target) – Supporre di ordinare i dati per questa probabilità assegnata dal modello. ID dato • “Cross Validation” permette di effettuare la cross validation Dutto Riccardo - SQL Server & Weka Probabilità che sia “prority” Classe reale 456 100% Priority 756 99% Priority 45 99% Not Priority 34 98% Priority 76 95% Priority 42 95% … … 442 1% Nel caso ideale, l’algoritmo di DM dovrebbe assegnare a tutti i dati che realmente appartengono alla classe “Priority” una alta percentuale di probabilità e a quelli non appartenenti a “Priority” una percentuale bassa. In questa tabella quindi dovremmo trovare tutti i dati appartenenti a “Priority” in alto e quelli appartenenti a “Not Priority” in basso. Priority … Not Priority 85 1% Not Priority 724 1% Priority 835 0% 532 0% Siccome circa il 33% dei dati appartengono a Priority, nel caso ideale dovremmo trovare il 33% superiore della tabella con classe “Priority” e il restante con “Not Priority” Not Priority Not Priority Dutto Riccardo - SQL Server & Weka 3 Valutazione del modello - Lift Chart (2) Valutazione del modello - Profit Chart • Lift chart – – – – Richiede di selezionare: Considero i dati della tabella precedente in quell’ordine e li metto su un grafico (da sinistra verso destra) • • • • • Ogni volta che il dato effettivamente appartiene alla classe salgo (lift) di un po’ altrimenti mi rimango costante (mi sposto solo a destra) Nel caso ideale (curva verde) tutti i primi dati che metto sul grafico appartengono alla classe selezionata e quindi salgo sempre (poi una volta che ho finito i dati di questa classe trovo quelli delle altre classi e allora rimango costante) Nel caso reale (curva rossa) all’inizio trovo i dati appartenenti alla classe “Priority” e quindi salgo (rimango uguale alla curva ideale) ma poi inizio a trovare dei dati che, anche se hanno una alta percentuale di essere nella classe scelta, in realtà non lo sono e mi stacco dalla curva ideale Profit chart • percentuale di dati appartenenti a “Priority” trovati (sul totale dei dati appartenenti a Priority) Dutto Riccardo - Popolazione totale di casi Costo fisso per intraprendere l’azione Costo per individuo Guadagno per individuo Supponendo sempre di ordinare i dati per “probabilità che appartengano alla classe decrescente” il grafico mi indica il guadagno al variare della percentuale di individui che decido di contattare percentuale di dati analizzati sul totale (i dati sono ordinati per probabilità di appartenere alla classe “prioirty decrescente) SQL Server & Weka Dutto Riccardo - SQL Server & Weka Weka • • • Data Mining con WEKA Programma sviluppato dall’universita di Waikato in Nuova Zelanda (http://www.cs.waikato.ac.nz/) Waikato Environment for Knowledge Analysis Scaricabile gratuitamente da http://www.cs.waikato.ac.nz/~ml/weka/index.html (Versione con java incluso o senza java) Interfaccia Explorer Dutto Riccardo - Dutto Riccardo SQL Server & Weka Preprocessing - SQL Server & Weka Classificazione • Selezione dei dati da analizzare Modificare i parametri di classificazione Caricare il file (.arff) con i dati di training Scegliere il modello di classificazione Scegliere gli (eventuali) filtri per pre-processare i dati (discretizzazione, campionamento, feature selection, etc.) Scegliere il metodo per testare il modello Scegliere la classe da predire Scegliere gli attributi dei dati di training da utilizzare per la creazione del modello Statistiche sulla distribuzione dei dati Dutto Riccardo - SQL Server & Weka Statistiche della classificazione Dutto Riccardo - SQL Server & Weka 4