Apprendimento Automatico Esercitazione 15/04/2009 Prof. Roberto Navigli Esercizio 1 Si vuole apprendere un classificatore Naive Bayes per le interrogazioni di un motore di ricerca. Ogni interrogazione deve essere classificata con l etichetta musica o. Il classificatore viene addestrato con il seguente dataset D: parole nell interrogazione rock, Queen Baustelle, rock romanzi, on-line romanzi, gialli P oirot, Ackroyd P oirot, gialli M use, Baustelle classe musica musica musica Si noti che gli attributi di ciascun esempio sono dati dalla bag of words delle parole che compongono l interrogazione (le parole che non appaiono nell interrogazione non influiscono sulla probabilità dell esempio). 1. Enunciare la formula di classificazione Naive Bayes. 2. Fornire la classificazione per il seguente test set T senza smoothing per t 1 e con add-one smoothing per t 2 (il vocabolario è V = { rock, Queen, Poirot, Baustelle, romanzi, on-line, gialli, Ackroyd, Muse }, ovvero V = 9): t 1 t 2 parole nell interrogazione Muse, rock libri, gialli posteriori: Il classificatore Naive Bayes determina la classe maximum a c MAP = argmax c C P (c d) = argmax P (c) k d P (t k c) c C Calcoliamo la probabilità a posteriori delle varie classi per il primo esempio di T : P ( M use, rock) P () P (M use ) 1
P (rock ) = 4 7 0 0 = 0 P (musica Muse, rock) P (musica) P (Muse musica) P (rock musica) = 3 7 1 3 2 3 = 2 21 = 0.09 per cui per t 1 : c max = argmax P (c t 1 ) = musica c {,musica} Calcoliamo la probabilità a posteriori delle varie classi per il secondo esempio di T : P ( libri, gialli) P () P (libri ) P (gialli ) = 4 7 0 + 1 4 + 9 2 + 1 4 + 9 = 4 7 1 13 3 13 = 0.01 P (musica libri, gialli) P (musica) P (libri musica) P (gialli musica) = 3 7 0 + 1 3 + 9 0 + 1 3 + 9 = 3 7 1 12 1 12 = 0.003 per cui per t 2 : Esercizio 2 c MAP = argmax P (c t 2 ) = c {,musica} Progettare un percettrone che abbia accuratezza 100% sul seguente insieme di dati: x 1 x 2 classe 0 0 0 0 1 0 1 0 1 1 1 0 ovvero sulla funzione booleana x 1 x 2. L output del percettrone è dato da: o( x) = gradino( w x) = gradino(w 0 + w 1 x 1 + w 2 x 2 ) Per comodità, utilizziamo la funzione gradino al posto della funzione segno, poiché le sue uscite sono 0 o 1. Per determinare i pesi w 0, w 1 e w 2 è sufficiente impostare il seguente sistema basato sui quattro vincoli posti dal 2
dataset: w 0 + 0 + 0 < 0 per l esempio ((0, 0), 0) w 0 + 0 + w 2 < 0 per l esempio ((0, 1), 0) w 0 + w 1 + 0 > 0 per l esempio ((1, 0), 1) w 0 + w 1 + w 2 < 0 per l esempio ((1, 1), 0) dovendo essere w 0 < 0 (per la prima equazione), fissiamo w 0 = 1, ottenendo: 1 + 0 + w 2 < 0 1 + w 1 + 0 > 0 1 + w 1 + w 2 < 0 da cui abbiamo che w 1 > 1 (poniamo ad esempio w 1 = 2). Infine, w 2 deve soddisfare i vincoli seguenti: { 1 + 0 + w2 < 0 1 + 2 + w 2 < 0 ovvero: { w2 < 1 w 2 < 1 ovvero si deve avere w 2 < 1 (scegliamo w 2 = 2). Una possibile scelta di pesi che soddisfa il problema è dunque (w 0, w 1, w 2 ) = ( 1, 2, 2). L accuratezza del corrispondente percettrone è 100%, infatti: gradino(w 0 + w 1 0 + w 2 0) = gradino( 1 + 0 + 0) = -1 per ((0, 0), 0) gradino(w 0 + w 1 0 + w 2 1) = gradino( 1 + 0 2) = -1 per ((0, 1), 0) gradino(w 0 + w 1 1 + w 2 0) = gradino( 1 + 2 + 0) = 1 per ((1, 0), 1) gradino(w 0 + w 1 1 + w 2 1) = gradino( 1 + 2 2) = -1 per ((1, 1), 0) 3
Esercizio 3 Progettare un percettrone per le funzioni booleane OR, AND e NOT. input): ottenendo: Per il NOT è sufficiente imporre (una disequazione per ogni { w0 + w 1 0 0 w 0 + w 1 1 < 0 { w 0 0 w 0 + w 1 < 0 Quindi scegliendo w 0 = 1, per w 1 è sufficiente soddisfare: 1 + w 1 < 0. Ad esempio, w 1 = 1.5. Per l AND è sufficiente trovare una soluzione per il sistema (una disequazione per ogni combinazione dell input): w 0 + w 1 0 + w 2 0 < 0 w 0 + w 1 0 + w 2 1 < 0 w 0 + w 1 1 + w 2 0 < 0 w 0 + w 1 1 + w 2 1 0 Ad esempio, una soluzione è (w 0, w 1, w 2 ) = ( 1, 0.5, 0.5). Analogamente, per l OR si imposta il seguente sistema (una disequazione per ogni combinazione dell input): w 0 + w 1 0 + w 2 0 < 0 w 0 + w 1 0 + w 2 1 0 w 0 + w 1 1 + w 2 0 0 w 0 + w 1 1 + w 2 1 0 Una soluzione è (w 0, w 1, w 2 ) = ( 0.5, 1, 1). Esercizio 4 Progettare una rete neurale che implementi la funzione booleana: (x 1 x 2 ) x 3. 4
Per il primo termine, utilizziamo il percettrone dell esercizio 2 con pesi (w 0, w 1, w 2 ) = ( 1, 2, 2). L input del primo percettrone possiamo fornirlo a un secondo percettrone che calcola la funzione OR, con pesi, ad esempio, (w 0, w 1, w 2 ) = ( 0.5, 1, 1), ottenibili con lo stesso procedimento dell esercizio 2 (si vedano anche le diapositive del corso). Si ottiene quindi la seguente rete neurale: 1 x 1 x 2-1 2-2 1-0.5 1 1 2 x 1 3 Ad esempio, data l istanza di ingresso x = (0, 0, 1), la rete calcola: o 1 ( x) = gradino( 1 + 2 0 2 0) = gradino( 1) = 0 o 2 ( x) = gradino(1 + 1 0 + 1 1) = gradino(2) = 1 per cui la classificazione dell esempio è positiva. Esercizio 5 Dato lo spazio delle versioni individuato dalle ipotesi massimamente specifica S = {(0, 0)} e massimamente generale G = {(?,?)} si determini quale ipotesi dello spazio ottiene le prestazioni massime in termini di accuratezza e F1 sul seguente test set: A B c(x) 0 0 + 0 0 + 1 1 + 2 1 0 1 Per prima cosa, disegniamo il reticolo dello spazio delle versioni: <?,? > < 0,? > <?, 0 > < 0, 0 > Quindi per ogni ipotesi nello spazio delle versioni determiniamo accuratezza e precisione a partire dalla corrispondente matrice di confusione. Per l ipotesi (?,?): 5
P N P T P = 3 F N = 0 N F P = 2 T N = 0 Si ha: A = 3+0 3+2+0+0 = 3 2P R 5 = 0.6 e F 1 = P +R = 2 3/5 1 3/5+1 = 6 8 = 0.75. Per le ipotesi (?, 0) e (0, 0): P N P T P = 2 F N = 1 N F P = 0 T N = 2 Si ha: A = 2+2 2+2+1+0 = 4 2P R 5 = 0.8 e F 1 = P +R = 2 1 2/3 1+2/3 = 4 5 = 0.8. Infine per l ipotesi (0,?): Si ha: A = 1+2 1+1+2+1 = 3 5 P N P T P = 2 F N = 1 N F P = 1 T N = 1 = 0.6 e F 1 = 2P R P +R = 2 2/3 2/3 2/3+2/3 = 2 3 = 0.66. Le ipotesi migliori sia in termini di accuratezza che di F1 sono: (?, 0) e (0, 0) con A = F1 = 0.8. 6