Classificazione e Validazionemainetti.di.unimi.it/teaching/ailab_2016/lessons/L10/Lesson_10.pdf ·...

Post on 08-Aug-2020

3 views 0 download

transcript

Classificazione e Validazione

Renato Mainetti

19/05/2016 Classificazione e Validazione - Lezione 10 2

Supervisionato: forniamo input e output

Non supervisionato: forniamo solo input

Apprendimento Supervisionato e Non

19/05/2016 Classificazione e Validazione - Lezione 10 3

Apprendimento Supervisionato e Non

http://quantdare.com/2016/03/machine-learning-a-brief-breakdown/

Pipeline: cosa fare per classificare

19/05/2016 Classificazione e Validazione - Lezione 10 4

Dati Noti (Predittori)

Risposte Note (Etichette)

Modello

Nuovi dati (non etichettati)

Modello

Predizione Risposte

1)

2)

Proviamo a creare deidecision-tree:(usando come dati di addestramento le funzioni logiche booleane AND e XOR)

19/05/2016 Classificazione e Validazione - Lezione 10 5

AND XOR

…ma prima rapido ripasso della logica booleana…

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.

19/05/2016 Classificazione e Validazione - Lezione 10 6

AND e XOR(presentati a lezione dal prof. Borghese)

19/05/2016 Classificazione e Validazione - Lezione 10 7

U1 U2 Y

0 0 0

0 1 0

1 0 0

1 1 1

U1 U2 Y

0 0 0

0 1 1

1 0 1

1 1 0

U1 and U2 U1 xor U2

Y sempre falso (0) a meno che U1 e U2 siano entrambe vere(1)

Y sempre falso (0) quando U1 = U2Y sempre vero (1) quando U1 ≠ U2

Classificazione AND

• Costruiamo un albero di classificazione della funzione booleana AND:

19/05/2016 Classificazione e Validazione - Lezione 10 8

U1 U2 Y

0 0 0

0 1 0

1 0 0

1 1 1

Classificazione AND• Costruiamo un albero di classificazione della

funzione booleana AND:

19/05/2016 Classificazione e Validazione - Lezione 10 9

U1 U2 Y

0 0 0

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.

Classificazione XOR

• Costruiamo un albero di classificazione della funzione booleana XOR:

19/05/2016 Classificazione e Validazione - Lezione 10 10

U1 U2 Y

0 0 0

0 1 1

1 0 1

1 1 0

Classificazione XOR• Costruiamo un albero di classificazione della

funzione booleana XOR:

19/05/2016 Classificazione e Validazione - Lezione 10 11

U1 U2 Y

0 0 0

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');

Predizione classedi 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…

19/05/2016 Classificazione e Validazione - Lezione 10 12

Qualche link di riferimento:

• Dataset già presenti in Matlab

• UCI Machine Learning Repository – Molto usati per pubblicazioni scientifiche

19/05/2016 Classificazione e Validazione - Lezione 10 13

Facciamo esperimenti con il dataset Fisher’s Iris Data

Iris Setosa

19/05/2016 Classificazione e Validazione - Lezione 10 14

Iris Virginica

Iris Versicolor

Addestramento• Classificare i fiori in funzione della dimensioni di

petali e sepali:

19/05/2016 Classificazione e Validazione - Lezione 10 15

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/05/2016 Classificazione e Validazione - Lezione 10 16

Parliamo di overfittingUn 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)

19/05/2016 Classificazione e Validazione - Lezione 10 17

Per limitare l’overfitting:

• PRUNING• possiamo regolare la profondità dell’albero

• http://it.mathworks.com/help/stats/examples/classification.html

19/05/2016 Classificazione e Validazione - Lezione 10 18

Usiamo il tool di matlab: classification learner

19/05/2016 Classificazione e Validazione - Lezione 10 19

Per maggiori informazioni guardare il manuale di matlab

Importiamo il dataset IRIS leggendo la tabella dal file csv:>> fishertable = readtable(‘Fisher.csv');

Validation

19/05/2016 Classificazione e Validazione - Lezione 10 20

Esportazione del classificatore

19/05/2016 Classificazione e Validazione - Lezione 10 21