Corso di Basi di Dati Distribuite Algoritmi di Apprendimento avanzato per l’Information Retrieval Alessandro Moschitti Dipartimento di Informatica Sistemi e produzione Università di Roma “Tor Vergata” Email: [email protected] Perché apprendere automaticamente delle funzioni Le interazioni tra gli oggetti del mondo si possono esprimere con funzioni Dal moto di pianeti (interazioni gravitazionali) Alle relazione tra input/output dei calcolatori Apprendere tali funzioni automaticamente… Perché apprendere automaticamente delle funzioni Le interazioni tra gli oggetti del mondo si possono esprimere con funzioni Dal moto di pianeti (interazioni gravitazionali) Alle relazione tra input/output dei calcolatori Apprendere tali funzioni automaticamente… risolverebbe tutti i problemi (almeno quelli ingegneristici) Avete già visto esempi di learning di funzioni Regressione Lineare Grado 2 Grado 3 Motivazioni per Ing. Inf. Un programma è una funzione di riscrittura La stringa di input è riscritta in quella di output Scrivere un programma per una ditta che: ⇒ data una gerarchia di livelli (organigramma) dato un impiegato e le sue caratteristiche determini il suo livello nella gerarchia. Supponiamo che le caratteristiche sono migliaia, quanti if devo scrivere nel mio programma? Esempio: Se è stato assunto prima del 2000, è laureato, ha avuto esperienze all’estero … allora ha un livello x. Motivazioni (cont) Per scrivere tale programma: Dobbiamo studiare la gerarchia (spesso non documentata esplicitamente) Dobbiamo tenere conto di tutte le combinazioni: Caratteristiche/livello gerarchico Soluzione: Apprendere tale funzione automaticamente da esempi. Si accede al DB e si estraggono per ogni impiegato le caratteristiche ed il suo livello. L’apprendimento automatico Apprendere la funzione da esempi: a valori reali, regression a valori interi finiti, classification Supponiamo di volere apprendere una funzione intera: 2 classi f(x) {gatto,cane} Dato un insieme di esempi per le due classi Si estraggono le features (altezza, baffi, tipo di dentatura, numero di zampe). Si applica l’algoritmo di learning Algoritmi di Apprendimento Funzioni logiche booleane, (alberi di decisione). Funzione di Probabilità, (classificatore Bayesiano). Funzioni di separazioni in spazi vettoriali Non lineari: KNN, reti neurali multi-strato,… Lineari, SVM, reti neurali con un solo neurone,… Alberi di decisione (tra le classi Gatti/Cani) E’ alto + di 50 cm? Si No Ha il pelo corto? No Ha i baffi? No Output: Cane Si .. . Output: Gatto Output: Cane Selezione delle features con l’Entropia L’entropia di una distribuzione di classi P(Ci) è la seguente: Misura quanto una distribuzione è uniforme (situazione entropica) Per insiemi S1…Sn partizionati con gli attributi di una feature: Definizione di Probabilità (1) Sia Ω uno spazio e sia β una famiglia di sottoinsiemi di Ω β rappresenta la famiglia degli eventi Si definisce allora la probabilità P nel seguente modo: P : β → [0,1] Definizione di Probabilità (2) P è una funzione che associa ad ogni evento E un numero P(E) detto probabilità di E nel seguente modo: 1) 0 ≤ P ( E ) ≤ 1 2) P (Ω) = 1 3) P( E1 ∨ E2 ∨ ... ∨ En ∨ ...) = = ∑ P ( Ei ) se Ei ∧ E j = 0, ∀i ≠ j ∞ i =1 Partizioni finite ed Equiprobabili Si consideri una partizione di n eventi equiprobabili (con probabilità 1/n). Dato un evento E, la sua probabilità è data da : P ( E ) = P ( E ∧ Etot ) = P ( E ∧ ( E1 ∨ E2 ∨ ... ∨ En )) = 1 ∑i P( E ∧ Ei ) = E∑⊂ EP( Ei ) = E∑⊂ E n = i i 1 1 Casi Favorevoli 1 = ( {i : Ei ⊂ E}) = ∑ Casi Possibili n Ei ⊂ E n Probabilità condizionata P(A | B) la probabilità di A dato B B è l’informazione che conosciamo. Si ha: P( A ∧ B) P( A | B) = P( B) A A∧ B B Indipendenza A e B sono indipendenti iff: P ( A | B ) = P ( A) P ( B | A) = P ( B ) Se A e B sono indipendenti: P( A ∧ B) P ( A) = P ( A | B ) = P(B) P ( A ∧ B ) = P ( A) P ( B ) Teorema di Bayes P(E | H )P(H ) P(H | E ) = P(E ) Dimostrazione P(H ∧ E ) P(H | E ) = P(E ) (Def. prob. Cond.) P(H ∧ E ) (Def. prob. Cond.) P(H ) P(H ∧ E ) = P(E | H )P(H ) P(E | H ) = Categorizzatore Bayesiano Dato un insieme di categorie {c1, c2,…cn} Sia E una descrizione di un esempio da classificare. La categoria di E si calcola determinando per ogni ci P ( ci ) P ( E | ci ) P ( ci | E ) = P(E ) ∑ P (c n i =1 | E) = ∑ n i i =1 P ( ci ) P ( E | ci ) =1 P(E ) P ( E ) = ∑ P ( ci ) P ( E | ci ) n i =1 Categorizzatore Bayesiano (cont) Dobbiamo calcolare: Le probabilità a posteriori: P(ci) e le condizionate: P(E | ci) P(ci) si stimano dai dati di training D. se ci sono ni esempi in D di tipo ci,allora P(ci) = ni / |D| Supponiamo che un esempio è rappresentato da m features: E = e1 ∧ e2 ∧ L ∧ em Troppe rappresentazioni (esponenziale in m); dati di training non disponibili per stimare P(E |ci) Categorizzatore Naïve Bayes Assumiamo che le features sono indipendenti data la categoria (ci). m P ( E | ci ) = P ( e1 ∧ e2 ∧ L ∧ em | ci ) = ∏ P ( e j | ci ) j =1 Quindi dobbiamo stimare solo P(ej | ci) per ogni feature e categoria. Esempio di classificatore Naïve Bayes C = {allergy, cold, well} e1 = sneeze; e2 = cough; e3 = fever E = {sneeze, cough, ¬fever} Prob Well Cold Allergy P(ci) 0.9 0.05 0.05 P(sneeze|ci) 0.1 0.9 0.9 P(cough|ci) 0.1 0.8 0.7 P(fever|ci) 0.01 0.7 0.4 Esempio di classificatore – Naïve Bayes (cont.) Probability Well Cold Allergy P(ci) 0.9 0.05 0.05 P(sneeze | ci) 0.1 0.9 0.9 P(cough | ci) 0.1 0.8 0.7 P(fever | ci) 0.01 0.7 0.4 P(well | E) = (0.9)(0.1)(0.1)(0.99)/P(E)=0.0089/P(E) P(cold | E) = (0.05)(0.9)(0.8)(0.3)/P(E)=0.01/P(E) P(allergy | E) = (0.05)(0.9)(0.7)(0.6)/P(E)=0.019/P(E) La categoria più probabile è allergy P(E) = 0.0089 + 0.01 + 0.019 = 0.0379 P(well | E) = 0.23, P(cold | E) = 0.26, P(allergy | E) = 0.50 E={sneeze, cough, ¬fever} Stima delle probabilità Frequenze stimate dai dati di apprendimento. Se D contiene ni esempi nella categoria ci, e nij di ni contengono la feature ej, allora: P ( e j | ci ) = nij ni Problemi: un corpus troppo piccolo. Una feature rara, ek, ∀ci :P(ek | ci) = 0. Smoothing Le probabilità sono aggiustate. Laplace smoothing ogni feature ha una probabilità a priori, p, si assume che sia stata osservata in un esempio virtuale di taglia m. P ( e j | ci ) = nij + mp ni + m Naïve Bayes per la classificazione di documenti Modello a “bag of words” Generato per i documenti in una categoria Campionamento da un vocabolario V = {w1, w2,…wm} con probabilità P(wj | ci). Lo smoothing di Laplace Si assume una distribuzione uniforme su tutte le parole (p = 1/|V|) and m = |V| Equivalente a osservare ogni parola in una categoria esattamente una volta. Training (version 1) V è il vocabolario di tutte le parole dei documenti di training D Per ogni categoria ci ∈ C Sia Di il sotto-insieme dei documenti di D in ci ⇒ P(ci) = |Di| / |D| ni è il numero totale di parole in Di per ogni wj ∈ V, nij è il numero di occorrenze di wj in ci ⇒ P(wj | ci) = (nij + 1) / (ni + |V|) Training (version 2) V è il vocabolario di tutte le parole dei documenti di training D Per ogni categoria ci ∈ C Sia Di il sotto-insieme dei documenti di D in ci ⇒ P(ci) = |Di| / |D| ni è il numero totale di documenti in Di per ogni parola wj ∈ V, nij è il numero di documenti di ci che contengono wj ⇒ P(wj | ci) = (nij + 1) / (ni + |V|) Testing Dato un documento di test X Sia n il numero di parole che occorrono in X Restituisci la categoria: n argmax P ( ci )∏ P ( a j | ci ) ci ∈C j =1 dove aj è la parola che occorre nella jesima posizione in X