Introduzione al Machine Learning per la categorizzazione automatica.

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