3. Alberi - Reti neurali

Sistemi di supporto alle
decisioni aziendali
Alberi decisionali
Alberi Decisionali
L’Albero Decisionale è una tecnica di classificazione
o di regressione ad albero.
"  Tecnica di data mining prescrittivo (cluster:
descrittivo, impossibile uso automatico dei
risultato)
"  Tecnica di classificazione a priori
" 
" 
(-) descrive bene i casi per cui è costruito, difficile
generalizzare (problema overfitting)
(+) semplice interpretazione dei risultati
Le Tecniche di Data Mining
Le principali tecniche di data mining che
vedremo sono:
!  Cluster Analysis
!  Alberi Decisionali
!  Reti Neurali
Alberi Decisionali
" 
" 
" 
" 
" 
Nodi (escluse le foglie): domande (decisioni da
prendere)
Foglie: decisioni
Rami: valori degli attributi
Cammino: regola
Albero: È una sequenza di regole, di condizioni:
Se .. ! allora.. Se età > 18 allora decisione: si
1
Alberi di classificazione
Alberi Decisionali
" 
" 
Quando l’albero viene applicato ai dati di
ingresso, ogni dato viene analizzato dall’albero
lungo un percorso stabilito da una serie di test
sugli attributi (features) del dato stesso, finchè il
dato non raggiunge un nodo foglia
Ogni nodo è associato ad una classe. Quando
arriva alla foglia, al dato viene assegnata:
#  una etichetta di classe (class label) nel caso di
alberi di classificazione,
#  un valore numerico alla sua variabile target nel
caso di alberi di regressione
" 
" 
No. di ruote
2
motore
si
moto
6
" 
Esempio [Russel, Norvig]: entrare in un ristorante?
no
si
>60
no
no
prenotazione
no
si
Bar
no
si
no
7
si
si
alcuni
" 
auto
no
bici
Apprendimento: costruire l’albero a partire da esempi
# 
esempi di decisioni
# 
esempi delle varie classi corrispondenti alle foglie
" 
pieno
stima attesa
4
C1:auto ruote=4, motore=si
C2:bici ruote=2, motore= si
C3:moto ruote=2, motore= no
no. clienti
nessuno
Dato un’insieme di classi con descrizione di un insieme
di feature
Dato un oggetto stabilire a che classe appartiene
" 
si/no (esempi e contro-esempi) nel caso di decisioni binarie
Esempio:
0-10
30-60 10-30
alternative
fame
si
no
si
si
Ven/Sab
si
alternative
no
si
no
si
piove
si
no
si
no
si
no
si e no sono le due classi di
decisione
si
8
2
" 
Una soluzione banale
" 
Obiettivo
# 
# 
# 
" 
costruire un ramo per ognuno degli esempi
costruire un albero “semplice”
Occam’s razor: il più semplice tra quelli consistenti con gli
esempi
Un algoritmo: ID3 [Quinlan]
if non ci sono esempi then termina
if tutti gli esempi hanno la stessa classificazione
then
etichetta il nodo con la classificazione
else if nessun attrubuto rimasto then termina con
problema
seleziona attributo ai che discrimina meglio
dividi gli esempi in base ai valori di ai
costruisci un nodo etichettato con ai e con un
ramo in
uscita per ogni valore vj di ai
richiama ricorsivamente per ogni vj con gli
esempi corrispondenti
9
" 
" 
" 
10
Esempio
# 
# 
attributo noClienti: per due valori discrimina
completamente
noClienti
nessuno
alcuni
pieno
si: --si: x1, x3, x6, x8
si: x4, x12
no: x7, x11 no: x2, x5, x9, x10
no: ---
si: x3, x12
no: x7, x19
tipo
I
" 
si: x6
no: x10
si: x1
no: x5
nessuno
alcuni
pieno
si: x1, x3, x6, x8
si: x4, x12
no: --no: x2, x5, x9, x10
fame
si
si: x4, x8
no: x2, x11
si: x4, x12
no: x2, x10
no
si: --no: x5, x9
–  Analogamente si procede ricorsivamente su ramo “si”
–  Tra i due noClienti è la scelta migliore
–  in generale tra tutti è quello con entropia più bassa
11
si analizzano gli altri attributi
si seleziona quello che discrimina meglio
nel caso “fame”: per uno dei due valori si ha classificazione
completa
noClienti
si: --no: x7, x11
Thai
F
Algoritmo procede ricorsivamente considerando il valore
“pieno” di noClienti e considerando gli esempi per quel
valore
" 
–  attributo tipo: discrimina male per tutti i valori
burg
Attributo ideale ai da selezionare ad ogni passo
#  discrimina completamente tra gli esempi, ossia
"  dati valori v1, …, vk
"  per ogni vj, tutti gli esempi con lo stesso valore vj
hanno la stessa classificazione
Attributo da scegliere
#  quello che discrimina meglio tra gli gli esempi
"  per la maggior parte dei vj, gli esempi con lo stesso
valore di vj hanno quasi tutti la stessa
classificazione
12
3
# 
Alla fine albero risultante (diverso da quello visto prima)
noClienti
alcuni
pieno
si: --si: x1, x3, x6, x8
si: x4, x12
no: x7, x11 no: x2, x5, x9, x10
no: --no
si
fame
si
no
si: x4, x12
si: --no: x2, x10
no: x5, x19
si
nessuno
burg
si: x12
no: --si
tipo
I
no
13
si: --no:--si
" 
Conoscenza appresa influenzata dagli esempi
# 
# 
" 
Ven/Sab
si
no
si: x4
si: --no: --no: x2
no
si
È importante sottolineare che in questo contesto
è già noto a priori il tipo di classificazione che si
vuole realizzare: si vuole classificare tra le classi
predefinite dal training set e dal test set.
Questo tipo di classificatori sono molto utili per
applicazioni tipo diagnosi di malattie, ma non
permettono di individuare cluster di record che
definiscono una nuova classe (ad es. una nuova
malattia).
potrebbe classificare in modo sbagliato nuove istanze
esempi devono essere un buon campione della popolazione
Una strategia di verifica della conoscenza appresa da
esempi
# 
# 
si: x4
no: x2
Alberi Decisionali
" 
" 
Thai
F
si: --no: x10
Valutazione delle prestazioni
collezionare un largo insieme di esempi che sia un campione
significativo
dividere l’insieme in due
" 
" 
# 
# 
14
# 
training set T
test set S
in modo uniforme (secondo la stessa distribuzione degli
esempi)
effettuare l’apprendimento usando T
valutare la percentuale di corretta classificazione usando S
ripete lo stesso processo più volte con diversa divisione tra T
e S e per diverse dimensioni del training set
Alberi Decisionali
" 
La parte più intensa, dal punto di vista computazionale, risulta la
generazione dell’albero, problema di trovare il più piccolo albero
decisionale.
" 
Fortunatamente, con delle semplici euristiche si riescono a trovare
alberi di decisione capaci di descrivere un gran numero di casi in
maniera concisa.
L’idea fondamentale alla base di questi algoritmi consiste nel
cercare di verificare per primi gli attributi più importanti (attributi
discriminativo).
Per più “importanti” si intende quelli che fanno più differenza nella
classificazione dei dati (la quale differenza viene misurata, come si
vedrà, con opportuni indici detti indici di diversità). In questo
modo possiamo sperare di arrivare alla classificazione corretta con
un piccolo numero di test.
" 
" 
4
Alberi Decisionali
La maggior parte degli algoritmi di decision
tree costruiscono l’albero decisionale in
due fasi: Tree Building e Tree Pruning.
Alberi Decisionali: Tree Pruning
L’albero costruito nella fase Tree Building classifica
perfettamente il set di training.
Questo implica, però, che sono stati creati, in tale fase, rami
(quindi regole di decisione) che rappresentano regole
specifiche per il training set, ma non regole generali valide
anche per i dati mai visti.
Per evitare questo problema, detto di overfitting
(ipermodellamento o sovra-adattamento), e ottenere un
modello generale applicabile efficacemente ad altri dati,
occorre potare l’albero: occorre cioè rimuovere
dall’albero, tutti i rami che possono condurre a errori nella
classificazione dei dati futuri, e lasciare solo il sotto-albero
che presenta il minimo errore stimato.
Alberi Decisionali: Tree Building
In questa fase si costruisce un albero di decisione
iniziale, partizionando ricorsivamente i dati del
training set usando di volta in volta l’attributo
discriminitivo (l’attributo cioè, secondo il quale
la partizione creerà gruppi più omogenei).
Ricorsivamente significa che il processo di
segmentazione viene ripetuto finche’ tutti i dati di
una partizione apparterranno ad una classe
(gruppo omogeneo).
Alberi Decisionali e Data Mining
I decision tree sono relativamente veloci,
confrontati con altri metodi di classificazione e
regressione, e sono di semplice interpretazione.
Questa proprietà ne indica il campo di applicazione
nel Data Mining: vengono impiegati quando lo
scopo che ci si prefigge è la generazione di regole
(di classificazione o regressione) chiare e
semplici.
5
Sistemi di supporto alle
decisioni aziendali
Reti neurali
Reti Neurali
Tecnica supervisionata
Approcci sub-simbolici (connessionistici) (anni
40, Artificial Inteligence): modelli matematici di
funzionamento della mente umana
(alberi sono simbolici : rappresentazione simbolica
della conoscenza e del ragionamento logico)
Servono per fare:
"  Classificazioni
"  Previsioni
Le Tecniche di Data Mining
Le principali tecniche di data mining che
vedremo sono:
!  Cluster Analysis
!  Alberi Decisionali
!  Reti Neurali
Reti Neurali
La rete neurale è un sistema di calcolo (o
processore) che nasce dall’idea di simulare
artificialmente il comportamento del cervello
umano, per sfruttarne le sue caratteristiche di
"  Complessità
"  Non-linearità
"  Sistema a processamento parallelo
quando sono più utili i risultati che la loro
comprensione
6
Reti Neurali
Reti Neurali: Modello base del Neurone
Possiamo definire una rete neurale come un processore
parallelo composto di singole unità di calcolo, dette neuroni,
che possiede una naturale predisposizione a memorizzare le
conoscenze sperimentalmente acquisite ed a renderle
disponibili per l’uso.
Un neurone è una unità di processamento di informazioni (unità
di computazione) e presenta la seguente struttura:
INPUT
La sua somiglianza con il cervello umano si riferisce a:
"  La conoscenza è acquisita dalla rete mediante un processo
di apprendimento
"  Le connessioni neuronali, ossia i pesi sinaptici, sono
utilizzati per memorizzare le informazioni acquisite.
sinapsi (collegamento) OUTPUT
L’uso delle reti, quindi, consente la possibilità di generalizzare
la conoscenza acquisita durante la fase di apprendimento
Reti Neurali: Modello base del Neurone
Unità interne: processo che unità di input porta all’attivazione di
alcune unità di output
unita di input
features
p
p
p
p
1
w
unità interne
unità di OUTPUT
attivata solol’unità
che corrisponde
alla classe
Reti Neurali
" 
Sono quindi funzioni matematiche complesse
(sommatorie, funzioni esponenziali e
parametriche)
" 
Ogni nodo di output connesso ad uno di input da
un PESO: pesi combibati da funzioni di
aggregazioni
Z = 3x + 2y -1
K1
2
3
R
Σ
w
n
f
yk
x
y
3
Z-1
2
kR
bk
7
Reti Neurali
Reti Neurali: limiti
La funzione non è una semplice combinazione degli
input: ma il valore dell’output viene calcolato con
pesi sulle unità nascoste
w1
x
Z
w2
Reti Neurali: training
" 
" 
" 
" 
w1
y
w2
" 
Processo di calcolo dei pesi in modo che la rete
faccia per il meglio la previsione delle variabili
target
Data una rete con pesi inizializzati a valori di
default
Dato un insieme di esempi
#  Stimoli di input
#  Risultato atteso per unità di output (istanze
classificate)
" 
" 
Non forniscono spiegazioni dei risultati
Necessario un ampio lavoro di preparazione dei
risultati
#  Solo valori compresi da -1 e + 1
#  Varibili categoriche $ numeriche
Non sono in grado di gestire i valori mancanti
Con troppe variabili di input non funzionano bene
(difficile individuare i pattern)
#  Meglio combinarle con alberi decisionali che
selezionano prima le variabili piu imp
Reti Neurali: Topologia MLP
Una Multi-Layers Perceptron net (MLP) è composta da una serie di
“percettroni” organizzati con una struttura gerarchica che può
comprendere uno o più strati nascosti (hidden layer) legati con la
regola del feed-forward (un nodo dello strato i-esimo può essere
collegato solo ad un nodo dello strato (i+1)-esimo):
8
Reti Neurali: Topologia MLP
Reti Neurali: Topologia MLP
Il percettrone è un semplice neurone dotato del circuito “teacher”
per l’apprendimento:
Reti Neurali: Topologia MLP
L’algoritmo si arresta o per il raggiungimento dell’errore minimo
accettabile o per il raggiungimento del numero massimo di
epoche stabilite in fase di progetto (per evitare che il processo
di addestramento termini all’infinito).
Un’epoca è un ciclo di aggiornamento completo di tutti i pesi,
dando in input l’intero set di training
L’addestramento di una MLP avviene in genere con l’algoritmo di
apprendimento Back-Propagation.
L’idea di questo algoritmo è la seguente:
per ogni dato di ingresso (del training set) applicato, si calcola
l’errore commesso in uscita dalla rete (ricordiamoci che stiamo
in apprendimento supervisionato, quindi conosciamo l’uscita
giusta di ogni ingresso!!)
"  Calcolo dell’errore (risultato atteso – risultato attuale)
"  Propagazione all’indietro: ripartendo dall’errore nell’output,
cambiare i pesi in modo da ridurre l’errore
Reti Neurali: Esempio di applicazione di una MLP
al riconoscimento di immagini
" 
Obiettivo: Riconoscere in che direzione guarda la persona fotografata da
una immagine video.
" 
Scelte progettuali: Si sceglie una rete Multi Layer Perceptron così
dimensionata:
#  Si codifica ogni immagine in un numero standard di pixel e ogni pixel
rappresenta un input della rete
#  Si stabiliscono quattro uscite: se la persona guarda a sinistra, destra,
dritto, alto
#  Si sceglie un solo strato nascosto con tre unità
#  Si usa un training set di 260 immagini
#  Si utilizza l’algoritmo di Back-Propagation con α = 0,3
" 
Risultato: una precisione del 90%. Tre esempi di riconoscimento (dopo
un addestramento di 100 epoche), sono illustrati nella figura seguente.
9
Reti Neurali: Esempio di applicazione di una MLP
al riconoscimento di immagini
Reti Neurali: Topologia SOM
Rete in cui i neuroni sono organizzati in un reticolo
bidimensionale
Reti Neurali: Topologia SOM
Reti Neurali e Data Mining
Quando usare le reti neurali nel data mining ?
" 
Le reti neurali rappresentano una buona scelta in caso di
classificazioni e previsioni, quando è più importante avere
velocemente e bene i risultati di un modello che non sapere
come questo funziona.
" 
Le reti neurali non funzionano bene quando si ha a che fare
con centinaia o migliaia di variabili di input. Un gran
numero di queste caratteristiche rende più difficile il
compito della rete di individuare pattern e la fase di training
può prolungarsi nel tempo senza trovare una buona
soluzione. In questo caso, le reti neurali danno frutti
migliori se combinate con gli alberi decisionali: questi ultimi
infatti selezionano le variabili più importanti, impiegate poi
per il training della rete
10