Classificazione Validazione Decision Tree & kmeans Renato Mainetti
Apprendimento Supervisionato e Non Supervisionato: forniamo input e output Non supervisionato: forniamo solo input 2
Apprendimento Supervisionato e Non http://quantdare.com/2016/03/machine-learning-a-brief-breakdown/ 3
Pipeline: cosa fare per classificare 1) Dati Noti (Predittori) Risposte Note (Etichette) Modello 2) Modello Nuovi dati (non etichettati) Predizione Risposte 4
Proviamo a creare dei decision-tree: (usando come dati di addestramento le funzioni logiche booleane AND e XOR) AND XOR ma prima rapido ripasso della logica booleana 5
Algebra di Boole (wiki) In matematica l'algebra di Boole è il ramo dell'algebra in cui le variabili possono assumere solamente i valori vero e falso (valori di verità), denotati come 1 e 0; Le operazioni fondamentali non sono addizione e sottrazione ma gli operatori logici: la congiunzione o prodotto logico indicata con oppure AND; la disgiunzione o somma logica indicata con oppure OR; la negazione o complementazione indicata con oppure NOT. 6
AND e XOR (presentati a lezione dal prof. Borghese) U1 and U2 U1 U2 Y 0 0 0 0 1 0 1 0 0 1 1 1 Y sempre falso (0) a meno che U1 e U2 siano entrambe vere(1) U1 xor U2 U1 U2 Y 0 0 0 0 1 1 1 0 1 1 1 0 Y sempre falso (0) quando U1 = U2 Y sempre vero (1) quando U1 U2 7
Classificazione AND Costruiamo un albero di classificazione della funzione booleana AND: U1 U2 Y 0 0 0 0 1 0 1 0 0 1 1 1 8
Classificazione AND U1 U2 Y 0 0 0 Costruiamo un albero di classificazione della funzione booleana AND: 0 1 0 1 0 0 1 1 1 >> U = [0 0; 0 1; 1 0; 1 1]; >> Y = [0; 0; 0; 1]; >> treeand = fitctree(u,y,'predictornames', {'u1' 'u2'}, 'ResponseName', 'y', 'ClassNames', [0 1], 'minparent',1); >> view(treeand,'mode','graph'); Trovate questo esercizio nel file TreeAnd.m, commentato riga per riga. 9
Classificazione XOR Costruiamo un albero di classificazione della funzione booleana XOR: U1 U2 Y 0 0 0 0 1 1 1 0 1 1 1 0 10
Classificazione XOR U1 U2 Y 0 0 0 Costruiamo un albero di classificazione della funzione booleana XOR: 0 1 1 1 0 1 1 1 0 >> U = [0 0; 0 1; 1 0; 1 1]; >> Y = [0; 1; 1; 0]; >> treexor = fitctree(u,y,'predictornames', {'u1' 'u2'}, 'ResponseName', 'y', 'ClassNames', [0 1], 'minparent',1); >> view(treexor,'mode','graph'); 11
Predizione classe di nuove misurazioni >> predict(treeand, [0 0]) ans = 0 Come parametri di input la funzione predict richiede il nome del decision-tree e un array con i nuovi valori su cui eseguire la predizione. Provate a sperimentare con gli altri valori 12
Decision-Making Fasi e Passi Intelligenza Raccolta informazioni e dati Riconoscimento del problema Design Formulazione del modello Analisi del modello Scelte Generazione e Valutazione Selezione FSM e Alberi di Decisione - Lezione 3 13
Albero di decisione (Machine learning) Apprendimento supervisionato Il Dataset contiene i parametri e le etichette (ricavato da mesi e mesi di osservazioni) Proviamo ad eseguire l addestramento di un albero di decisione: Problema predire se il giocatore di golf andrà a giocare oggi, conoscendo umidità e temperatura: Inseriamo: >>Meteo = [80 30; 70 15; 70 20; 50 20] >>Gioca = [0 1 0 1] >>t = fitctree(meteo,gioca,'predictornames', {'umidità' 'temperatura'}, 'ResponseName', 'y', 'ClassNames', [0 1], 'minparent',1); >>view(playtree,'mode','graph') FSM e Alberi di Decisione - Lezione 3 14
Albero di decisione (Machine learning) FSM e Alberi di Decisione - Lezione 3 15
Qualche link di riferimento: Dataset già presenti in Matlab UCI Machine Learning Repository Molto usati per pubblicazioni scientifiche 16
Facciamo esperimenti con il dataset Fisher s Iris Data Iris Setosa Iris Virginica Iris Versicolor 17
Addestramento Classificare i fiori in funzione della dimensioni di petali e sepali: 18
Validazione Tecniche di validazione del modello addestrato: Nessuna (rischio overfitting) Holdout (consigliato per dataset grandi) Si divide il dataset in due insiemi, uno dedicato al training e l altro dedicato al test. Cross Validation (funziona bene anche con dataset piccoli) Si suddivide il dataset in K sottoinsiemi, K-1 insiemi vengono usati per l addestramento e il rimanente per il testing. Questa operazione si ripete K volte (K addestramenti diversi), usando di volta in volta un diverso insieme per il test. 19
Parliamo di overfitting Un algoritmo di apprendimento viene allenato usando un certo insieme di esempi (il training set). Si assume che l'algoritmo di apprendimento raggiungerà uno stato in cui sarà in grado di predire gli output per tutti gli altri esempi che ancora non ha visionato, cioè si assume che il modello di apprendimento sarà in grado di generalizzare. Tuttavia, soprattutto nei casi in cui l'apprendimento è stato effettuato troppo a lungo o dove c'era uno scarso numero di esempi di allenamento, il modello potrebbe adattarsi a caratteristiche che sono specifiche solo del training set, ma che non hanno riscontro nel resto dei casi; perciò, in presenza di overfitting, le prestazioni (cioè la capacità di adattarsi/prevedere) sui dati di allenamento aumenteranno, mentre le prestazioni sui dati non visionati saranno peggiori. (wiki) 20
Esempio manuale matlab sulla classificazione(decision tree): http://it.mathworks.com/help/stats/examples/class ification.html Analizzare visivamente i dati attraverso il plot Per limitare l overfitting su decision tree: PRUNING possiamo regolare la profondità dell albero 21
Usiamo il tool di matlab: classification learner Importiamo il dataset IRIS leggendo la tabella dal file csv: >> fishertable = readtable( Fisher.csv'); Per maggiori informazioni guardare il manuale di matlab 22
Validation 23
Esportazione del classificatore 24
kmeans Come funziona: 25
Esempio passi kmean 26
kmeans Generiamo un dataset e proviamo ad applicare questo metodo. Il file: kmean.m 27