Sunteți pe pagina 1din 118

` DEGLI STUDI DI GENOVA

UNIVERSITA
` DI INGEGNERIA
FACOLTA

Corso di Laurea Specialistica in Ingegneria Gestionale

Dispense per le esercitazioni dellinsegnamento

Business Intelligence
Prof. Davide Anguita

A cura di:

Alessandro Ghio
Alessandro.Ghio@unige.it

Anno Accademico 2008 - 2009


Documento realizzato in LATEX

Indice
Prefazione

Principali acronimi utilizzati

1 Introduzione
1.1 Cos`e il Data Mining? . . . . . . . . . . .
1.2 Terminologia di base . . . . . . . . . . .
1.3 Data Mining Process . . . . . . . . . . .
1.3.1 Denizione degli obiettivi . . . .
1.3.2 Organizzazione dei dati . . . . . .
1.3.3 Analisi esplorativa dei dati . . . .
1.3.4 Scelta delle metodologie di analisi
1.3.5 Analisi dei dati . . . . . . . . . .
1.3.6 Valutazione dei metodi statistici e
1.3.7 Implementazione dellalgoritmo .
1.4 Il software che useremo: WEKA . . . . .
1.5 Organizzazione della dispensa . . . . . .
2 Organizzazione dei dati
2.1 Tipi di attributi . . . . . . . .
2.1.1 Variabili qualitative . .
2.1.2 Variabili quantitative .
2.2 La matrice dei dati . . . . . .
2.2.1 Gestione delle variabili
2.3 Normalizzazione di un dataset

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

. .
. .
. .
. .
. .
. .
. .
. .
dei
. .
. .
. .

.
.
.
.
.
.

.
.
.
.
.
.

. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
risultati
. . . . .
. . . . .
. . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
ottenuti
. . . . .
. . . . .
. . . . .

9
9
12
14
14
15
15
19
20
20
21
21
24

.
.
.
.
.
.

25
25
26
26
27
28
29

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

3 Analisi esplorativa dei dati


31
3.1 Distribuzioni di frequenza . . . . . . . . . . . . . . . . . . . . 31

3.2

3.3
3.4
3.5
3.6

3.1.1 Distribuzioni univariate . . . . . . . . . . . . . .


3.1.2 Distribuzioni bivariate e multivariate . . . . . . .
Analisi esplorativa univariata . . . . . . . . . . . . . . .
3.2.1 Richiami su stimatori e loro caratteristiche . . . .
3.2.2 Indici di posizione . . . . . . . . . . . . . . . . . .
3.2.3 Indici di variabilit`a . . . . . . . . . . . . . . . . .
3.2.4 Indici di eterogeneit`a . . . . . . . . . . . . . . . .
Analisi esplorativa bivariata e multivariata . . . . . . . .
Esempi di analisi con WEKA . . . . . . . . . . . . . . .
Riduzione di dimensionalit`a . . . . . . . . . . . . . . . .
Esempi di riduzione di dimensionalit`a utilizzando WEKA

4 Classificazione
4.1 Zero Rules . . . . . . . . . . . . . . . . . . . .
4.1.1 Apprendimento . . . . . . . . . . . . .
4.1.2 Fase in avanti . . . . . . . . . . . . . .
4.1.3 Estensione al caso multiclasse . . . . .
4.1.4 Esempio di analisi in WEKA . . . . . .
4.2 Naive Bayesian Classier . . . . . . . . . . . .
4.2.1 Apprendimento . . . . . . . . . . . . .
4.2.2 Fase in avanti . . . . . . . . . . . . . .
4.2.3 Estensione al caso multiclasse . . . . .
4.2.4 Esempio di analisi in WEKA . . . . . .
4.3 Reti neurali: MultiLayer Perceptrons . . . . .
4.3.1 Cenni storici: il percettrone . . . . . .
4.3.2 Architettura di un MLP . . . . . . . .
4.3.3 Apprendimento . . . . . . . . . . . . .
4.3.4 Fase in avanti . . . . . . . . . . . . . .
4.3.5 Estensione al caso multiclasse . . . . .
4.3.6 Esempio di analisi in WEKA (I) . . . .
4.3.7 Esempio di analisi in WEKA (II) . . .
4.3.8 Validation set e test set . . . . . . . .
4.4 Support Vector Machines . . . . . . . . . . . .
4.4.1 Il problema del classicatore a massimo
4.4.2 Apprendimento . . . . . . . . . . . . .
4.4.3 Fase in avanti . . . . . . . . . . . . . .
2

. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
margine
. . . . .
. . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

31
32
33
33
34
35
36
38
40
43
44

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

48
49
49
49
49
49
54
54
55
55
56
56
56
60
62
64
64
64
66
67
68
68
71
73

4.4.4 Estensione al caso multiclasse . . .


4.4.5 SVM e la probabilit`a . . . . . . . .
4.4.6 Esempio di analisi in WEKA . . . .
4.4.7 SVM per feature selection . . . . .
4.5 Decision Trees . . . . . . . . . . . . . . . .
4.5.1 La nascita degli alberi di decisione
4.5.2 Apprendimento . . . . . . . . . . .
4.5.3 Fase in avanti . . . . . . . . . . . .
4.5.4 Estensione al caso multiclasse . . .
4.5.5 Esempio di analisi in WEKA . . . .
5 Regressione
5.1 Zero Rules . . . . . . . . . . . . . . .
5.1.1 Apprendimento . . . . . . . .
5.1.2 Fase in avanti . . . . . . . . .
5.1.3 Esempio di analisi in WEKA .
5.2 Support Vector Regression . . . . . .
5.2.1 Apprendimento . . . . . . . .
5.2.2 Fase in avanti . . . . . . . . .
5.2.3 Esempio di analisi in WEKA .
5.3 Regression Trees . . . . . . . . . . .
5.3.1 Apprendimento . . . . . . . .
5.3.2 Fase in avanti . . . . . . . . .
5.3.3 Esempio di analisi in WEKA .
6 Clustering
6.1 kMeans . . . . . . . . . . . . . . . .
6.1.1 Apprendimento . . . . . . . .
6.1.2 Fase in avanti . . . . . . . . .
6.1.3 Esempio di analisi in WEKA .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

7 Association rules
7.1 Apriori . . . . . . . . . . . . . . . . . . .
7.1.1 Apprendimento . . . . . . . . . .
7.1.2 Esempio di analisi in WEKA (I) .
7.1.3 Esempio di analisi in WEKA (II)

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

73
74
75
76
80
80
82
86
86
87

.
.
.
.
.
.
.
.
.
.
.
.

90
90
90
90
91
91
92
93
93
93
93
94
94

.
.
.
.

.
.
.
.

96
96
97
98
98

.
.
.
.

100
. 101
. 101
. 104
. 106

.
.
.
.
.
.
.
.
.
.
.
.

8 Valutazione comparativa di algoritmi di Data Mining


8.1 Metodi (pratici) per la comparazione fra algoritmi . . .
8.1.1 Training set (TS) . . . . . . . . . . . . . . . . .
8.1.2 Validation set (VS) . . . . . . . . . . . . . . . .
8.1.3 KFold Cross Validation (KCV) . . . . . . . . .
8.2 Analisi in WEKA explorer . . . . . . . . . . . . . . . .
8.2.1 Metodo TS . . . . . . . . . . . . . . . . . . . .
8.2.2 Metodo VS . . . . . . . . . . . . . . . . . . . .
8.2.3 Metodo KCV . . . . . . . . . . . . . . . . . . .
8.3 Analisi in WEKA KF . . . . . . . . . . . . . . . . . . .
8.3.1 Input . . . . . . . . . . . . . . . . . . . . . . . .
8.3.2 Selezione della classe . . . . . . . . . . . . . . .
8.3.3 Creazione delle k fold per la KCV . . . . . . . .
8.3.4 Inserimento dei blocchi per le SVM . . . . . . .
8.3.5 Elaborazione dei risultati . . . . . . . . . . . . .
8.3.6 Uscita a video . . . . . . . . . . . . . . . . . . .
8.3.7 Congurazione nale ed esecuzione . . . . . . .
8.4 Note conclusive . . . . . . . . . . . . . . . . . . . . . .
Bibliografia

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

108
. 108
. 108
. 109
. 109
. 110
. 110
. 111
. 111
. 112
. 113
. 113
. 113
. 113
. 114
. 114
. 114
. 115
117

Prefazione
Il termine Business Intelligence (BI ) `e piuttosto vago. Una denizione
che comunemente pu`o essere rintracciata in letteratura [14] `e la seguente:
Con il termine business intelligence (BI) ci si pu`
o solitamente
riferire a: un insieme di processi aziendali per raccogliere ed analizzare informazioni strategiche; la tecnologia utilizzata per realizzare questi processi; le informazioni ottenute come risultato di
questi processi.
Per quanto abbia riscosso sempre maggiore interesse solo negli ultimi
anni, il processo di BI venne denito come tale nel 1958 da H. P. Luhn,
ricercatore dellIBM: ovviamente, allepoca non si avevano a disposizione
gli strumenti di oggi (a partire dal computer stesso, almeno nellaccezione
moderna di PC), ma gi`a era nata lidea che i dati, specialmente quando sono
numerosi, debbano essere interpretati al ne di fornire informazioni utili. Non
solo: le stesse informazioni devono essere a loro volta analizzate per trovare
indici (quanto pi`
u completi e sintetici) in grado di velocizzare il processo
decisionale.
` immediato, quindi, comprendere come una parte fondamentale del proE
cesso di BI sia costituita dal Data Mining (DM ). Traducendo letteralmente
il termine Mining, esso deriva da to mine, ovvero estrarre (come si fa, nella
pratica, in miniera) risorse preziose dalle viscere dei (numerosi, in generale)
dati a disposizione. Proprio per questo motivo, al Data Mining viene spesso aancato il concetto di Knowledge Discovery (KD): `e quindi frequente
sentire parlare non solo di DM, ma, pi`
u in generale, di KDDM.
Nel corso di questo insegnamento vedrete che il DM fa parte di un processo molto complesso, che comprende progettazione ed interrogazione di database, creazione di Data Marts, reportistica, ecc. Durante le esercitazioni,
data lesiguit`a del tempo a nostra disposizione, ci concentreremo solamente
5

sulla presentazione dei principali algoritmi di DM per BI: sia, quindi, ben
chiaro che:
queste esercitazioni (sfortunatamente) non potranno coprire per intero
il problema della BI;
verranno presentati solo alcuni algoritmi (i pi`
u famosi ed usati, seppure
in moltissime varianti che non analizzeremo), scelti tra la miriade di
tecniche a disposizione in letteratura.
Per queste dispense, ho tratto ispirazione da [10], sebbene Wikipedia1
ora sempre ottimi spunti di approfondimento.

http://wikipedia.it/

Principali acronimi utilizzati


Acronimo
BI
DM
KD
KDDM
MBA
ML
MLP
NN
SLT
SVM
NBC
IT
OLAP
KF
CV
IQR
PCA
SVD
MAE
RMSE
TP
FP
CM

Significato
Business Intelligence
Data Mining
Knowledge Discovery
Knowledge Discovery & Data Mining
Market Basket Analysis
Machine Learning
MultiLayer Perceptrons
Neural Networks (reti neurali)
Statistical Learning Theory
Support Vector Machine
Naive Bayesian Classier
Information Technology
OnLine Analytical Processing
Knowledge Flow (programma di WEKA)
Coeciente di variazione
InterQuartile Range
Principal Component Analysis
Singular Value Decomposition
Mean Absolute Error
Root Mean Squared Error
True Positives
False Positives
Confusion Matrix

Acronimo
BP
WTA
CCQP
SMO
KKT
OVA
AVA
DT
SVR
RT
KCV

Significato
BackPropagation
Winner Take All
Constrained Convex Quadratic Problem
Sequential Minimal Optimization
Condizioni di KarushKuhnTucker
One Vs. All
All Vs. All
Decision Trees
Support Vector Regression
Regression Trees
KFold Cross Validation

Capitolo 1
Introduzione
1.1

Cos`
e il Data Mining?

Posto nella Prefazione che in queste dispense ci occuperemo solamente


dei principali algoritmi di Data Mining (DM) per Business Intelligence (BI),
vediamo di approfondire meglio cosa si intende per Data Mining.
Consideriamo il caso di una catena di supermercati e supponiamo di avere
tre centri di vendita: per esempio, Genova, Savona e La Spezia. Ipotizziamo
inoltre di aver sede a Genova e di avere a disposizione un enorme database in
cui salviamo tutte le transazioni (i.e., tutte le vendite) di ogni supermercato.
Da questa montagna di dati vorremmo estrarre, per esempio, informazioni di
pi`
u alto livello, come le relazioni fra prodotti venduti. Per renderci conto di
quanti dati potremmo avere a disposizione, basti pensare che, in media, un
supermercato di dimensione mediogrande in una giornata pu`o eettuare pi`
u
di 2000 vendite in giorni feriali e 3000 nei festivi. Supponiamo di collezionare
dati per il mese di luglio 2008, che comprende 8 giorni festivi e 23 feriali.
Considerando i 3 supermercati della nostra piccola catena abbiamo:
(2000 23 + 3000 8) 3 = 210000,
` abbastanza intuitivo capire che
pi`
u di 200000 dati! E solo in un mese!! E
analizzare ad occhio pi`
u di 200mila dati non `e banale...
Supponiamo ora di disporre di un algoritmo A in grado di identicare
relazioni fra prodotti venduti: potrebbe sovente capitare che il cliente che
acquista Coca Cola compri anche degli snack. Il nostro algoritmo A individuer`a in automatico tali relazioni, che potranno poi essere sfruttate al ne di
9

sistemare Coca Cola e snack in maniera strategica allinterno degli scaali,


oppure per organizzare le oerte commerciali da proporre ai clienti. Non
solo: si possono utilizzare altri algoritmi B, C,... per individuare altri tipi di
indici o estrarre altre informazioni, dividendo queste ultime sulla base della
citt`a in cui il supermercato `e situato o per tipologia di prodotto. Questo
tipo di problema viene detto Market Basket Analysis (MBA) ed `e una delle
situazioni in cui le metodologie di BI (e, in particolare, le tecniche di DM)
trovano applicazione.
Altri migliaia di esempi potrebbero essere portati in questa sede. Quello
che ci interessa maggiormente `e, ora, cercare di dare una denizione di Data
Mining [9]:
Data mining is the process of selection, exploration, and modelling
of large quantities of data to discover regularities or relations that
are at rst unknown with the aim of obtaining clear and useful
results for the owner of the database.
Le metodologie utilizzate dal DM provengono da due mondi diversi, in
generale:
1. alcuni algoritmi sono stati sviluppati nellambito del Machine Learning (ML), il cui scopo `e di cercare di rappresentare nel miglior modo
possibile il processo di generazione dei dati, in modo tale da evitare
la mera memorizzazione dei dati in favore di un pi`
u ecace processo di generalizzazione del modello anche a casi non ancora osservati.
Il primo esempio di algoritmo di ML `e stato il percettrone di Rosenblatt [21], dal quale hanno avuto origine modelli sempre pi`
u complessi
come i MultiLayer Perceptrons (MLP ), facenti parte della categoria
delle reti neurali (Neural Networks, NN ), di cui torneremo a parlare
a tempo debito. Negli ultimi dieci anni circa, ha preso sempre pi`
u
piede, nel campo del ML, lalgoritmo Support Vector Machine (SVM ),
che, basandosi su una teoria statistica molto solida e chiamata Statistical Learning Theory (SLT ) [23], costituisce lattuale stato dellarte
nel campo del Machine Learning, almeno per quanto riguarda lambito
della classicazione;
2. altri metodi sono stati invece sviluppati nellambito delle cosiddette
statistica multivariata e statistica computazionale: `e il caso, per esem10

pio, di algoritmi basati sulle teorie di Bayes, come il Naive Bayesian


Classier (NBC ) [12].
Volendo unire assieme nel mondo del DM i principi della statistica e del
ML, possiamo dire che negli algoritmi di DM devono permettere unanalisi
approfondita dei dati (come i modelli statistici), ma devono anche garantire una sorta di nonmemorizzazione del dato (la generalizzazione del ML).
Nelle analisi degli algoritmi di DM, si parte dal principio che ogni dato sia
in qualche modo aetto da rumore: tornando allesempio del supermercato,
il rumore consiste nel fatto che ognuno di noi ha gusti diversi. Ad esempio,
qualcuno potrebbe gradire acquistare Coca Cola abbinata a salatini, mentre qualcun altro abbina lacquisto della Coca Cola ad una torta dolce. Se
noi memorizzassimo ogni possibile associazione, senza cercare di estrarre informazione, non avremmo pi`
u Data Mining, per la precisione non avremmo
pi`
u il Mining! Si viene, quindi, a porre un tradeo tra memorizzazione e
capacit`a di generalizzazione dei dati disponibili: in pratica, non dovremo avere n`e un modello troppo complicato (ovvero, che memorizza perfettamente
sia il dato disponibile sia il rumore che aigge per denizione i dati a nostra disposizione), n`e troppo generale, ovvero non pi`
u in grado di descrivere
adeguatamente la sorgente dei nostri dati.
Come ogni algoritmo, anche i metodi di DM generano un output, che
sar`a di natura diversa a seconda del tipo di applicazione che ci troviamo ad
analizzare (rimandiamo di qualche paragrafo ulteriori chiarimenti a riguardo). Spesso, loutput del nostro modello, nellambito della BI, pu`o fornire
nuova ispirazione per raccogliere altri dati, oppure per generare nuovi indici
o ipercubi per lanalisi: ecco perch`e, in applicazioni di tipo business, si parla
di circolo virtuoso della conoscenza [5], in quanto lestrazione di conoscenza
porta a nuove informazioni, che possono a loro volta essere usate per ottenere
ulteriori e pi`
u approfondite nozioni a riguardo. Per questi motivi, il DM non
`e semplicemente lutilizzo di uno o pi`
u algoritmi o tecniche statistiche su dati
utilizzando un calcolatore; il DM `e un processo di BI che devessere usato
insieme a tutti gli strumenti di Information Technology (IT ) al ne di fornire
un supporto alle decisioni in ambito aziendale. Non solo: tale informazione
devessere utile, quanto pi`
u corretta possibile e di facile interpretazione per
tutti, dal consigliere di amministrazione allimpiegato dellarea logistica.

11

Temperatura
32
35
44
28
27
31

Pressione
111
110
144
109
108
110

Guasto
0
0
1
0
0
0

Tabella 1.1: Esempio di controllo sul funzionamento di un macchinario.

1.2

Terminologia di base

Prima di avventurarci in maggiori dettagli, elenchiamo un po di termini


di base.
Viene denito dataset un insieme di dati a disposizione per lanalisi: pu`o
essere un data warehouse, un data mart o parte di essi. In particolare, il
dataset utilizzato per creare un modello viene detto training set, in quanto
utilizzato nella fase di training, ovvero di creazione del modello stesso. Questultimo, cos` trovato, verr`a quindi usato nella cosiddetta fase in avanti o
feedforward, ovvero lo step di applicazione a runtime. Distingueremo pi`
u
avanti in questa dispensa, invece, i validation set e test set.
Un dataset `e composto, come dice il nome stesso, di dati: ogni osservazione viene chiamata pattern. Ogni pattern `e caratterizzato da un insieme
di valori, detti variabili (variables), attributi (attributes) o features. Ad ogni
pattern pu`
o essere assegnato un target, ovvero un valore indicante una particolare propriet`a di ogni pattern. In pratica, una feature svolge il ruolo di
target, se cos` deciso da noi. Un paio di esempi chiariranno il tutto.
Consideriamo il dataset di Tab. 1.1: ogni riga del dataset `e un pattern,
mentre ogni colonna rappresenta una feature. Questo dataset, in particolare,
`e composto da 6 pattern, ognuno dei quali `e costituito da 3 variabili (feature).
Possiamo, per`o, considerare il seguente problma da analizzare: a seconda del
livello di temperatura e pressione, vogliamo controllare se un macchinario `e
guasto o funzionante. In tal caso, Guasto svolge il ruolo di target, quindi il
nostro dataset `e composto da 6 pattern, 2 attributi e un target.
Nel caso del dataset di Tab. 1.2, invece, abbiamo 6 pattern e 5 feature: in
questo caso, tuttavia, `e dicile identicare una feature come target. Dicile
12

Vendita Coca Cola Snack


110500
0
1
110501
1
1
110502
1
1
110503
1
1
0
1
110504
110505
0
1

Pane
0
0
0
0
0
0

Gelato
1
0
0
0
1
1

Tabella 1.2: Esempio di vendite in un supermercato.

ma non impossibile: per esempio, potremmo voler prevedere se un cliente


acquister`a o meno gelato sulla base degli acquisti di Coca Cola, snack e
pane, per quanto analisi di questo tipo non siano particolarmente utili. In
generale, `e lapplicazione e il tipo di analisi che ci guidano a selezionare
(eventualmente) una feature come target.
Esistono, peraltro, target di diverso tipo (ove presenti), a seconda del
problema che si vuole arontare. Normalmente, si usa la seguente notazione
per indicare un dataset dotato di target: {(x1 , y1 ), ...., (xl , yl )}, con xi m
indicanti i pattern. Quindi, m `e il numero di feature, l `e il numero di pattern,
mentre yi varia, come detto, a seconda del tipo di problema:
se yi {1, 1} oppure yi {0, 1}, si parla di classicazione biclasse:
considerando Guasto come target, il dataset di Tab. 1.1 `e un esempio
di dataset per classicazione binaria, in cui le feature Temperatura e
Pressione sono utilizzate per cercare una relazione fra esse e, appunto,
Guasto. Tale target pu`o assumere solo due valori binari, in quanto una
macchina pu`o solo essere guasta o funzionante (anche se vedremo che
si pu`o introdurre un discorso di tipo probabilistico, ma ne riparleremo
a tempo debito);
se yi S , ovvero il target pu`o assumere solo un certo set di
valori interi, si parla di classicazione multiclasse, semplice estensione
di quanto descritto al punto precedente;
se yi  si parla di regressione, ed equivale di fatto a trovare una
relazione f () del tipo y = f (x).

13

1.3

Data Mining Process

Viene denita Data Mining Process una serie di operazioni che vanno
dalla denizione preliminare degli obiettivi per lanalisi no alla valutazione
dei risultati ottenuti. Di seguito, elenchiamo le varie attivit`a caratterizzanti
il DM Process, quindi, nei successivi paragra, daremo maggiori dettagli sulle
varie fasi di progetto:
1. Denizione degli obiettivi per lanalisi;
2. Selezione, organizzazione ed eventuale preprocessing dei dati;
3. Analisi esplorativa dei dati ed eventuale trasformazione di questi;
4. Scelta delle metodologie di analisi da usare (e comparare);
5. Analisi dei dati, sulla base dei metodi scelti al passo precedente;
6. Comparazione e valutazione delle prestazioni dei diversi metodi; scelta
della metodologia di analisi da utilizzare a runtime;
7. Implementazione del modello scelto, interpretazione dei risultati che
esso fornisce ed utilizzo di questi ultimi nel processo decisionale aziendale.

1.3.1

Definizione degli obiettivi

Sebbene questa fase sembri la pi`


u immediata e semplice, non `e sempre
cos`: spesso gli obiettivi e le problematiche aziendali non sono cos` chiari, n`e
`e chiaro quali dati, coecienti o tipologie di analisi debbano essere applicate.
Di sicuro, la grande massa di dati a disposizione non aiuta in questo step:
torniamo al caso della catena di supermercati, ad esempio. Supponiamo
che lobiettivo pressato sia di voler aumentare i protti: che tipo di analisi
vogliamo eettuare sui dati? Trovare le associazioni fra prodotti per organizzare meglio la disposizione degli scaali o le oerte? Trovare landamento
dei guadagni per prodotto e/o supermercato per, eventualmente, decidere di
ingrandire un market o un reparto, o aprirne direttamente uno nuovo?
Questa fase `e di certo la pi`
u critica, e spesso viene sottovalutata: `e
importante che gli obiettivi dellanalisi siano deniti precisamente a priori e
non persistano dubbi prima di passare alle fasi successive.
14

1.3.2

Organizzazione dei dati

Una volta terminata la fase 1.3.1, iniziamo a considerare i dati a nostra


disposizione. Normalmente, in unazienda si ha a disposizione un grande
database di dati, il data warehouse, da cui estraiamo i data marts.
La prima fase consiste in una preliminare pulizia del dataset, detta data
cleansing: si analizzano tutte le variabili che caratterizzano i dati alla ricerca
di possibili valori mancanti (missing), palesemente sbagliati (incorrect) o
inutili (per esempio, considerando il dataset di Tab. 1.2, il codice della
vendita in molti casi non ha utilit`a alcuna per unanalisi sui dati). Questa
fase aiuta anche, in maniera retroattiva, a migliorare (se necessario) la qualit`a
della sorgente dati. Inoltre, il data cleansing permette di eettuare anche una
scelta tra variabili utili e inutili al ne dellanalisi (per esempio, eliminando
feature con molti valori missing).
La seconda fase consiste nella creazione di subset di dati: questo step `e
necessario soprattutto quando ci troviamo a trattare masse davvero imponenti di dati, per le quali lutilizzo di tutto il data mart spesso porta ad avere
meno informazione (meglio, uninformazione meno pulita) rispetto allutilizzo di sottoinsiemi di esso opportunamente scelti. In generale, lutilizzo di
dataset troppo grandi pu`o portare al fenomeno dellovertting, ovvero alla
memorizzazione dei dati (e della realizzazione particolare del rumore che li
aigge). Inoltre, vedremo pi`
u avanti nella nostra trattazione come i dati non
selezionati possano diventare ottimo banco di prova per vericare le prestazioni del modello durante la fase 1.3.6. La selezione dei subset, tuttavia, `e
tuttaltro che banale, ed `e stata arontata spesso in letteratura [4, 3].

1.3.3

Analisi esplorativa dei dati

Unanalisi esplorativa dei dati `e spesso determinante al ne di incrementare la qualit`a dei risultati ottenuti. Queste metodologie di analisi, simili
nella loro losoa alle tecniche OLAP (OnLine Analytical Processing), permettono di comprendere meglio lorigine dei nostri dati e trovare relazioni di
base che possono risultare di cruciale importanza per il modello operativo.
Lanalisi dei dati passa anche attraverso una selezione dei dati stessi e, in
particolare, si parla di:
feature selection (altres` variable selection);
15

feature analysis (altres` variable analysis);


outlier detection.
La feature selection consta nella selezione di un sottoinsiemi di variabili, caratterizzanti ogni dato, che permettono di preparare e riorganizzare il
nostro data mart (ad esempio) in modo da rendere pi`
u semplice e pi`
u performante le analisi dei passi successivi. Un esempio dovrebbe chiarire meglio
questo concetto.
Torniamo al caso della catena di supermercati, e supponiamo che il nostro
data mart sia piuttosto piccolo e sia rappresentato in Tab. 1.2: ovviamente,
non `e un caso reale, ma ci serve come spunto per qualche riessione. La
prima colonna rappresenta il codice univoco di una vendita, per esempio il
numero seriale dello scontrino scale; le colonne successive rappresentano
4 prodotti che possono essere acquistati: uno 0 indica che quel prodotto
non `e stato venduto in quella particolare transazione, mentre un 1 indica
la vendita del prodotto. Notiamo subito due cose: in questo caso, tutti
hanno acquistato snack, e nessuno ha acquistato pane. Pertanto, sia gli
snack sia il pane ci danno informazioni di base (ovvero che ai nostri clienti
piacciono moltissimo i nostri snack e che dobbiamo cambiare panettiere...)
ma sono variabili che potrebbero essere inutili per analisi pi`
u sosticate, non
permettendo distinzioni tra le varie vendite. Come accorgersi di tutto ci`o in
casi reali con migliaia di vendite e prodotti? Semplice, basta controllare le
colonne a varianza nulla, ad esempio, o utilizzare appositi algoritmi di ranking
per classicare linformativit`a delle variabili (ne parleremo pi`
u avanti).
Selezionare un sottoinsieme di variabili pu`o essere utile in quanto:
spesso feature poco informative peggiorano le prestazioni di un modello;
molti algoritmi sorono la curse of dimensionality in rapporto al numero di feature.
Non `e sempre vantaggioso, comunque, ridurre il numero di variabili, in
quanto tutto dipende dal tipo di analisi che vogliamo arontare. Tornando
alla Tab. 1.2, eliminare la colonna snack, in quanto poco informativa, potrebbe essere una buona scelta in alcune metodologie, ma potrebbe, ad esempio,
farci perdere delle relazioni importanti nel caso di cui abbiamo discusso nel
paragrafo 1.1. Morale della favola: la feature selection va applicata con molta
16

2.5

1.5

0.5

0.2

0.4

0.6

0.8

Figura 1.1: Campioni del segnale ignoto y = f (x). In 0.8, si noti il presunto
outlier.
attenzione e solo sapendo esattamente ci`o che si sta facendo e lanalisi che
vorremo applicare in seguito.
La feature analysis, invece, consiste nellanalizzare le caratteristiche statistiche di base del nostro insieme di dati e noticare (se `e il caso) leventuale
mancanza di ulteriori variabili, che potrebbero facilitare le operazioni successive. Di fatto, la feature analysis permette di capire preventivamente
se `e meglio intervenire sulla sorgente dati o se le variabili che abbiamo a
disposizione dovrebbero essere sucienti per gli algoritmi da applicare.
Per spiegare pi`
u in dettaglio loperazione di outlier detection, invece,
dobbiamo denire innanzitutto cos`e un outlier. Un dato viene detto outlier
se `e palesemente aitto da un picco di rumore, quindi se `e estremamente
sbagliato. Supponiamo di voler ricostruire una relazione del tipo y = f (x) in
un intervallo [0, 1] a partire da alcuni valori campionati (xc , yc ) e di trovare dei
sample come in Fig. 1.1. Con ogni probabilit`a, il campione in 0.8 `e sbagliato,
magari perch`e in quel momento sul sistema `e intervenuto un picco di disturbo.
Nella ricostruzione del segnale, mantenere o eliminare loutlier pu`o avere
inuenze importanti sulla qualit`a del risultato nale: le Figg. 1.2 e 1.3
mostrano due approssimazioni del segnale includendo e escludendo loutlier.
Abbiamo detto che un outlier `e un dato estremamente sbagliato: ma
estremamente, di preciso, cosa signica? Ovviamente, il tutto varia da caso

17

3
2.5
2
1.5
1
0.5
0
0.5

0.2

0.4

0.6

0.8

Figura 1.2: Approssimazione escludendo loutlier.

3
2.5
2
1.5
1
0.5
0
0.5

0.2

0.4

0.6

0.8

Figura 1.3: Approssimazione includendo loutlier.

18

a caso, e molto si basa sulle eventuali informazioni a priori che potremmo


avere a disposizione. Nel caso di Fig. 1.1, qualora sapessimo che i dati
hanno un andamento lineare, ovviamente loutlier deve essere escluso; senza
informazioni a priori, corriamo comunque un rischio.
Una nota conclusiva: spesso, proprio per i motivi precedentemente presentati, loutlier detection `e considerata, a tutti gli eetti, un metodo statistico da valutare attentamente sulla base della qualit`a dei risultati ottenuti
e viene pertanto spostata dalla fase di analisi esplorativa dei dati alle fasi
successive del DM Process.

1.3.4

Scelta delle metodologie di analisi

Ci sono moltissimi metodi statistici e ognuno di essi `e stato implementato


in una miriade di algoritmi: `e importante, quindi, una classicazione di tali
metodi, al ne di fare un po di ordine. La scelta del metodo dipende dal tipo
di analisi che vogliamo fare, che a sua volta dipende dagli obiettivi pressati
e dai dati che abbiamo a disposizione. Per questo motivo, si dice che il Data
Mining Process `e guidato dallapplicazione.
Le principali classi di metodi statistici sono:
1. Metodi descrittivi;
2. Metodi predittivi;
3. Metodi locali.
Nei prossimi paragra, li presentiamo brevemente.
Metodi descrittivi
Anche detti metodi non supervisionati (unsupervised ) o indiretti, mirano a raggruppare i dati sulla base di relazioni non note (e potremmo dire
non notabili) a priori o con unanalisi esplorativa. Nel dataset, non `e presente il target. Tra i vari problemi arontati con metodi descrittivi, noi ci
occuperemo principalmente del clustering.

19

Metodi predittivi
Anche detti metodi supervisionati (supervised ) o diretti, hanno come
obiettivo trovare relazioni tra feature e target, al ne di identicare relazioni
di classicazione o predizione. Nel dataset utilizzato `e sempre presente un
` il caso dei problemi di classicazione biclasse e multiclasse e della
target. E
regressione.
Metodi locali
Hanno come obiettivo identicare particolari caratteristiche e relazioni su
sottoinsiemi del dataset. Esempi sono le association rules, che abbiamo citato
indirettamente nel nostro esempio introduttivo nel paragrafo 1.1. Non solo:
come anticipato in precedenza, anche il problema della outlier detection pu`o
essere considerato un metodo locale e, come tale, potr`a poi essere sottoposto
ad attenta valutazione negli step successivi del DM Process.

1.3.5

Analisi dei dati

A questo punto, scelto il metodo (o i metodi) con cui vogliamo arontare


lanalisi dei dati, scelti gli algoritmi e scelti gli obiettivi, non ci rimane che
dare inizio alle operazioni. In questa fase, potrebbero essere usati software
ad hoc, ma, pi`
u in generale, ci si ada ad applicazioni gi`a sviluppate (e testate) disponibili in commercio o per il libero download. Daremo brevemente
unocchiata a questi software nel paragrafo 1.4, concentrandoci in particolar
modo sul software che useremo: il freeware WEKA.

1.3.6

Valutazione dei metodi statistici e dei risultati


ottenuti

Terminata lanalisi con tutti i metodi prescelti, non ci resta che denire
(se non labbiamo gi`a fatto in precedenza) dei coecienti per la comparazione. Per esempio, nel caso di classicazione, un buon termine di paragone
potrebbe essere lerrore previsto a runtime per ogni metodo e algoritmo, al
ne di scegliere quello che sbaglier`a meno. Per trovare questi (o altri) coecienti, e anch`e essi siano adabili, `e necessario, di norma, adarsi a metodi
di tipo statistico: analizzeremo pi`
u avanti in queste dispense alcune di queste

20

tecniche, come la Cross Validation. Tali tecniche ci devono permettere una


valutazione rapida, semplice e adabile.
Spesso un coeciente per la comparazione non `e suciente, ma `e necessario considerare altri fattori quali vincoli temporali o di risorse, qualit`a e
stabilit`a del risultato ottenuto, e molto altro ancora.

1.3.7

Implementazione dellalgoritmo

Concludiamo questa carrellata sul DM Process con la fase di realizzazione


del modello: una volta scelto, esso dovr`a essere implementato a tutti gli eetti
per entrare in funzione (la gi`a citata fase feedforward) nel nostro business
aziendale. Anche in questo caso, ci si pu`o adare ad eseguibili in commercio
o freeware. Data lusuale semplicit`a di implementazione della fase in avanti di
molti algoritmi, si possono realizzare codici e programmi ad hoc, ottimizzati
e customizzati sulle esigenze aziendali e di analisi.

1.4

Il software che useremo: WEKA

Negli ultimi anni `e cresciuto in modo esponenziale il numero di software


per BI che comprendono al loro interno suite per il DM: basti citare Oracle
e Microsoft SQL Server. Date le caratteristiche di prodotti commerciali a
prezzi tuttaltro che contenuti e data loggettiva dicolt`a di apprendimento
in strumenti pi`
u professionali che divulgativi, si `e deciso di utilizzare un
programma freeware chiamato Waikato Enviroment for Knowledge Analysis,
in breve WEKA. Esso `e stato sviluppato in Nuova Zelanda presso lUniversit`a
di Waikato ed `e scaricabile gratuitamente1 . Al proprio interno, comprende
moltissime routine per training e fase in avanti di moltissimi algoritmi.
WEKA `e realizzato in Java, pertanto necessita solo della Java Virtual
Machine (JVM) installata sulla propria macchina (`e possibile scaricare la
JVM assieme a WEKA in un unico pacchetto dal sito neozelandese). Nel
caso di utilizzo su macchine Windows (qualsiasi versione, Vista incluso), `e
possibile installare il programma, che viene compilato con opzioni di compilazione standard. Su altri sistemi operativi (Mac piuttosto che Linux) `e
obbligatorio (su Windows `e solo opzionale) scaricare i sorgenti e compilarli
prima di eseguire WEKA. La riga di compilazione `e la seguente:
1

http://www.cs.waikato.ac.nz/ml/weka/

21

Figura 1.4: Interfaccia di base di WEKA.


java -jar weka.jar
e sar`a la JVM a occuparsi del resto. Ulteriori opzioni di compilazione sono
possibili per aumentare la dimensione dello stack o simili.
In Fig. 1.4 viene mostrata linterfaccia di base di WEKA. Quattro opzioni
sono possibili:
Simple CLI apre una nestra a riga di comando per qualsiasi tipo di
operazione e analisi sui dati. Essendo poco userfriendly, `e facilmente
utilizzabile solo da utenti esperti e dopo un po di pratica;
Explorer lancia una nestra GUI per ogni tipo di analisi e operazione sui dati. Explorer `e decisamente pi`
u intuitivo rispetto alla CLI,
quindi, almeno nei primi tempi, ci dedicheremo soprattutto a questa
applicazione;
Experimenter permette di confrontare fra loro pi`
u metodi di analisi,
comparandone le prestazioni. Il setup di Experimenter non `e banale
e necessita di un po di esperienza, ma i risultati sono decisamente
interessanti;

22

Knowledge Flow assomiglia allambiente Simulink di MATLAB e consente di costruire confronti fra metodi (tipo Experimenter) ma sotto
forma di diagrammi a blocchi, quindi in modo pi`
u intuitivo.
Si noti che WEKA non comprende direttamente al proprio interno un
software per la fase in avanti degli algoritmi: abbiamo anticipato nel paragrafo 1.3.7 come spesso si preferiscano realizzazioni ad hoc, quindi gli autori
di WEKA si sono concentrati sui passi 16 del DM Process piuttosto che sul
7. Ciononostante, mostreremo come Explorer e KF possano essere utilizzati
anche per implementare la fase in avanti degli algoritmi.
Dedichiamo qualche cenno al formato dei le in input a WEKA. I dataset
possono essere passati al software in tre dierenti modi:
le ARFF (che analizzeremo a breve);
indirizzo web (per database di tipo Java DB);
le locale Java DB.
Premesso che probabilmente nel corso dellinsegnamento utilizzeremo
esclusivamente i le locali ARFF, analizziamone la struttura (pu`o essere utile
per scrivere eventuali convertitori da altri formati per dataset). Ogni riga
preceduta dal carattere jolly % `e considerata un commento, mentre sono
necessari i seguenti campi:
un campo @relation, seguito dal nome del dataset;
lelenco degli attributi, uno per riga, aventi la seguente struttura:
la parola chiave @attribute;
il nome dellattributo;
il set di valori che la variabile pu`o assumere (per attributi di tipo
qualitativo o quantitativo discreto) o, in alternativa, il tipo di
feature (real o integer);
la parola chiave @data, seguita nella linea successiva da tutti i pattern.
Ogni pattern `e costituito dalle feature, divise dal carattere ,. Un
missing `e contraddistinto da ?.
23

1.5

Organizzazione della dispensa

Questa dispensa `e organizzata sulla base del usso del Data Mining Process, di cui analizzeremo (per motivi di tempo) solamente alcuni aspetti. In
particolare:
nel Capitolo 2, aronteremo il problema dellorganizzazione dei dati,
delle trasformazioni applicabili ai pattern e dei tipi di variabili;
nel Capitolo 3, approfondiremo alcuni concetti su parametri statistici
e caratteristiche del nostro dataset;
nel Capitolo 4, invece, cominceremo ad analizzare alcuni algoritmi per
la classicazione di pattern;
nel Capitolo 5 aronteremo il problema della regressione;
il clustering sar`a, invece, largomento centrale del Capitolo 6;
trovare le regole di associazione tra feature di un dataset `e il problema
arontato nel Capitolo 7;
termineremo presentando alcuni metodi pratici per il confronto fra algoritmi e introducendo lutilizzo di WEKA Knowledge Flow nel Capitolo
8.

24

Capitolo 2
Organizzazione dei dati
In questo capitolo andiamo ad arontare brevemente le problematiche
relative allorganizzazione dei dati. Dati per scontati concetti quali data
warehouse e data marts, partiamo dal presupposto di avere a disposizione
un dataset, composto da l pattern e m feature, come denito nel paragrafo
1.2. Al momento, non ci interessa se il dataset `e dotato di target o meno.
Tralasciamo per il momento, inoltre, la selezione di un subset adatto: `e un
problema decisamente complesso, che richiameremo solo in parte a tempo
debito, negli ultimi capitoli di queste dispense.
Per quanto riguarda le prime applicazioni usando WEKA, rimandiamo alla ne del prossimo capitolo, quando avremo terminato questa breve
carrellata sullanalisi e lorganizzazione dei dati.

2.1

Tipi di attributi

Le feature possono essere organizzate in due principali categorie, a loro


volta divise in due sottocategorie:
1. Variabili qualitative:
(a) nominali;
(b) ordinali;
2. Variabili quantitative:
(a) discrete;
25

(b) continue.
Nei prossimi paragra dettagliamo i tipi di attributi precedentemente
elencati.

2.1.1

Variabili qualitative

Le feature di tipo qualitativo sono di solito legate ad aggettivi riferiti ad


un particolare attributo e possono essere classicate in livelli, detti categorie.
Esempi sono il codice postale o il sesso di una persona.
Variabili qualitative nominali
Una variabile qualitativa `e detta nominale se `e organizzata su diverse
categorie, per le quali non `e possibile denire un ordine preciso. In particolare, `e possibile denire rapporti di uguaglianza e disuguaglianza (= e =)
tra diversi livelli. Esempio sono le codiche per il sesso: `e possibile denire
rapporti di uguaglianza (ad esempio, M = M), ma non un ordine fra sessi
(non si pu`o denire un rapporto M < F , ad esempio).
Variabili qualitative ordinali
Viceversa, sono dette ordinali le variabili qualitative per le quali `e possibile stabilire un ordine (operazioni <, >, =), ma senza la possibilit`a di quanticare la dierenza fra livelli. Un esempio `e una classica di una gara podistica: se noi non indichiamo i distacchi, ma solo le posizioni nali, da esse si
pu`o stabilire lordine darrivo ma non quanticare la distanza fra un atleta e
laltro.

2.1.2

Variabili quantitative

Le feature quantitative sono strettamente legate alle quantit`a numeriche


che le descrivono ed `e possibile non solo stabilire un ordine (operazioni <, >
`
, =), ma anche quanticare la distanza (in senso generico) fra vari livelli. E
il caso dellet`a di una persona, ad esempio: `e possibile non solo dire che una
persona di 20 anni `e pi`
u giovane di una di 45, ma anche che ci sono 25 anni
di dierenza fra i due.

26

Variabili quantitative discrete


Una variabile quantitativa `e discreta solo se pu`o assumere un numero
` il caso di segnali campionati, per esempio. Si distingue dalle
nito di valori. E
variabili qualitative nominali perch`e `e possibile denire quantitativamente la
distanza fra i livelli.
Variabili quantitative continue
Una variabile quantitativa `e continua se pu`o assumere un numero innito
di valori. Per esempio, una temperatura registrata da un sensore ad alta
precisione pu`o essere considerata a tutti gli eetti una variabile quantitativa
continua. A tutti gli eetti, ricordiamo comunque che variabili continue su
un calcolatore non possono n`e potranno mai esistere, sebbene 32 (o 64) bit
di precisione siano pi`
u che sucienti per approssimare ogni variabile discreta
come continua.

2.2

La matrice dei dati

Abbiamo anticipato nel paragrafo 1.2 la rappresentazione di una matrice


dati, notazione che ripetiamo per comodit`a:
{x1 , ...., xl } ,

(2.1)

e rappresentante un dataset composto da l pattern (in questo caso, supponiamo non sia presente target). Abbiamo inoltre stabilito che ogni pattern
xi m , ovvero abbiamo m feature. Viene chiamata matrice dei dati (data
matrix ) la rappresentazione matriciale di tale dataset:

x1,1 x1,j x1,m


.
..
..
..
..
..
.
.
.
.

X = xi,1 xi,j xi,m


.
..
..
..
..
..
.
.
.
.

xl,1 xl,j xl,m

(2.2)

Quindi, lelemento ijesimo xi,j rappresenta la jesima feature delli


esimo pattern della matrice. Dora in poi, questa notazione verr`a utilizzata

27

implicitamente, anche quando non ci riferiremo espressamente alla matrice


dei dati X.

2.2.1

Gestione delle variabili

Come detto, i nostri dati possono essere rappresentati utilizzando una


matrice o, in alternativa, una rappresentazione ad insiemi. Le variabili xi,j
devono essere, quindi, quantit`a numeriche. Inoltre, in molti algoritmi la
distanza tra pattern svolge un ruolo centrale nella scelta del modello ottimo.
Se, di solito, non ci sono problemi per quanto riguarda le variabili quantitative
(in quanto rappresentate gi`a da valori numerici), possono sorgere dicolt`a
per le feature qualitative.
Siano attributi qualitativi nominali o ordinali, spesso essi vengono salvati
nel data warehouse (in generale) sotto forma testuale. La trasformazione
in variabili numeriche avviene attraverso la cosiddetta binarizzazione, ovvero lassegnazione di un codice binario per ognuno dei valori assunti dalla
feature. Supponiamo che una variabile sia di tipo qualitativo e possa assumere r distinti livelli. Verranno create, quindi, r nuove variabili quantitative
binarie in codice one hot, ovvero la variabile binaria equivarr`a a 1 solo se
corrispondente alloriginale livello della variabile qualitativa.
Un esempio dovrebbe chiarire il tutto. Supponiamo di considerare una
variabile qualitativa v che pu`o assumere 3 distinti livelli: a, b oppure c.
Codichiamo i 3 livelli utilizzando un codice binario one hot, come quello
rappresentato in Tab. 2.1. Supponendo di avere una matrice di dati X
come in Eq. (2.3), caratterizzata da 5 pattern e 2 feature, attraverso la
binarizzazione otteniamo la matrice dei dati nale Xf di Eq. (2.4), avente
sempre 5 pattern, ma 4 attributi:

X =

1.1
3.5
1.4
9.0
3.1

28

a
b
b
c
a

(2.3)

Variabile qualitativa
v
a
b
c

Codifica
v1 v2 v3
1 0 0
0 1 0
0 0 1

Tabella 2.1: Esempio di codica per variabile qualitativa.

Xf =

1.1
3.5
1.4
9.0
3.1

1
0
0
0
1

0
1
1
0
0

0
0
0
1
0

(2.4)

La binarizzazione `e estremamente utile in molti casi, ma comporta un


aumento del numero di feature: abbiamo gi`a discusso nel paragrafo 1.3.3
che questa non `e sempre una scelta ottimale. Un analisi preliminare serve
anche per cercare una codica ecace e/o per eliminare, ove consentito, il
salvataggio di variabili di tipo qualitativo in memoria (agendo sulla sorgente
di osservazioni).

2.3

Normalizzazione di un dataset

La normalizzazione di valori `e una delle operazioni che pi`


u di frequente
vengono eettuate su un dataset per svariati motivi. Numerici, innanzitutto,
in quanto eventuali valori nellordine di 103 o superiori possono portare a
problemi di overow (e viceversa, ovvero valori sotto 103 possono portare
allunderow).
Esistono diverse tecniche per la normalizzazione: le pi`
u comuni prevedono di riportare i dati della nostra matrice X allinterno dellintervallo [0, 1]
o [1, 1]. Dovrebbe ora risultare pi`
u chiaro come mai si sia tanto insistito
su data cleansing e analisi dei dati nel capitolo 1. Supponiamo di avere una
matrice di dati

29

X=

1.1
3.5
1.4
9.0
3.1

4.1
6.5
108
1.9
5.0

(2.5)

con ogni probabilit`a, x3,2 = 108 rappresenta un errore di misura. Se non ce


ne accorgessimo, potremmo semplicemente normalizzare la nostra matrice fra
[0, 1] e ottenere una matrice con elementi < 107 , ad eccezione di x3,2 = 1.

30

Capitolo 3
Analisi esplorativa dei dati
In questo capitolo, aronteremo brevemente il problema dellanalisi esplorativa dei dati, presentando alcuni indici statistici. Questo capitolo potenzialmente potrebbe coprire un intero insegnamento, quindi ci limiteremo a
qualche nozione di base, anche in relazione agli strumenti operativi forniti da
WEKA. Per maggiori dettagli, gli interessati possono fare riferimento a [10].

3.1
3.1.1

Distribuzioni di frequenza
Distribuzioni univariate

A volte `e utile analizzare le distribuzioni dei valori che pu`o assumere una
variabile di tipo qualitativo, oppure quantitativa discreta. Questo tipo di
analisi pu`o essere estesa anche alle variabili quantitative continue, cercando gli intervalli ottimi in cui dividere i valori assunti dalle feature (ce ne
occuperemo brevemente quando parleremo di alberi di decisione).
Supponiamo di considerare una variabile v e che essa possa assumere
un numero nito k di livelli, ovvero v = {v1 , ..., vk }. Si denisce frequenza
assoluta il numero di occorrenze ni di un livello in un dataset. Ad esempio,
Tab. 3.1 riporta le distribuzioni assolute per la seconda feature della matrice
X dellEq. (2.3).
Si denisce frequenza relativa la frequenza assoluta normalizzata per il
numero totale di pattern, ovvero:
pi =

ni
.
l

31

(3.1)

Livello
na
nb
nc

Frequenza
2
2
1

Tabella 3.1: Esempio di frequenza assoluta per una feature qualitativa.


Livello
pa
pb
pc

Frequenza
0.4
0.4
0.2

Tabella 3.2: Esempio di frequenza relativa per una feature qualitativa.

Tab. 3.2 riporta le frequenze relative per il dataset X. Propriet`a banali sono


che i ni = l e i pi = 1.

3.1.2

Distribuzioni bivariate e multivariate

Nel precedente paragrafo abbiamo considerato sempre solo una variabile


per volta; ora, invece, siamo interessati ad una statistica incrociata delle
variabili. Inoltre, sarebbe possibile estendere il ragionamento a pi`
u feature,
ma per brevit`a ci limiteremo a descrivere le distribuzioni bivariate.
Analogamente a quanto visto nel paragrafo precedente, supponendo di
avere due variabili qualitative v e z, che possono assumere, rispettivamente,
k e h livelli, si denisce frequenza assoluta congiunta nvz (vi , zj ) il numero
di osservazioni in cui, contemporaneamente, la variabile v assume livello vi
e la feature z vale zj . Si denisce frequenza relativa congiunta pvz (vi , zj ) la
frequenza assoluta congiunta, normalizzata per il numero totale di pattern l.
` possibile, inoltre, trovare una matrice, detta matrice di contingenza
E
C kh , che comprende al proprio interno tutti i valori di frequenze assolute
congiunte. In pratica, lelemento ijesimo Cij equivale alla frequenza assoluta
congiunta nvz (vi , zj ).

32

3.2

Analisi esplorativa univariata

Abbiamo visto nel precedente paragrafo come si possano analizzare le


frequenze univariate o bivariate per le occorrenze di variabili qualitative (con
eventuale estensione al caso di feature quantitative). Ora ci occupiamo di
estrarre una descrizione di massima del nostro dataset, sulla base di indici
di posizione, varibilit`a ed eterogeneit`a. Prima, per`o, un breve richiamo sulle
caratteristiche degli stimatori (in poche parole, gli indici che andremo a breve
a presentare), utili per capire alcuni concetti dei prossimi paragra.

3.2.1

Richiami su stimatori e loro caratteristiche

Supponiamo di considerare un generico parametro da stimare e consideriamo un suo stimatore


. A titolo di esempio, si potrebbe considerare
come parametro da stimare let`a media di tutta la popolazione mondiale e
come stima let`a media di un campione di N persone. Esistono due quantit`a
che deniscono la qualit`a di uno stimatore e sono:
1. la polarizzazione o bias;
2. la stabilit`
a.
Se uno stimatore `e non polarizzato (unbiased ) e stabile viene detto consistente. Tutti gli stimatori che presenteremo nei prossimi paragra sono consistenti, ad eccezione di uno (la stima della varianza), per il quale presenteremo
la variante biased e consistente.
Bias di uno stimatore
Viene denito bias di uno stimatore la quantit`a:
b = E {
|} ,

(3.2)

dove

E {
|} =

p (x1 , ..., xN | ) dx1 dxN

(3.3)

`e il valor medio condizionale della stima. Uno stimatore `e detto unbiased se


vale
33

lim b = 0,

N +

(3.4)

ovvero se, al crescere allinnito del numero di osservazioni, il valore vero del
parametro e la sua stima tendono a coincidere asintoticamente.
Stabilit`
a di uno stimatore
La stabilit`
a di uno stimatore viene calcolata utilizzando la varianza esatta
dello stimatore (riparleremo nei prossimi paragra di varianza, ma in quel
caso faremo riferimento allo stimatore della varianza):

2
2 = E
| E {
| }2 .

(3.5)

Al crescere del numero di osservazioni, ci aspettiamo che il nostro valore


stimato si avvicini in media sempre pi`
u al valore da stimare (bias nullo), ma
anche che tale valore medio sia stabile rispetto alle oscillazioni del parametro
reale (varianza nulla). Pertanto, la seconda condizione che poniamo per la
consistenza di uno stimatore `e che
lim 2 = 0.

N +

3.2.2

(3.6)

Indici di posizione

Il pi`
u comune indice di posizione `e la media aritmetica, denita su un set
di N osservazioni come:
N
i=1

xi

(3.7)
N
ed `e calcolabile solo nel caso di variabili quantitative. Ovviamente, la media
da s`e ha poco signicato, in quanto pu`o fortemente risentire di possibili valori
fuori scala. Vedremo come essa vada integrata nellanalisi da altri indici.
Solo nel caso di variabili quantitative discrete (che possono assumere un
numero nito k di valori), avendo a disposizione le distribuzioni di frequenza,
in particolare le frequenze relative pi di cui al paragrafo 3.1.1, la media pu`o
anche essere calcolata come:
x=

x=

k

i=1

34

pi xi ,

(3.8)

dove xi rappresentano i k livelli che la variabile pu`o assumere.


Un secondo importante indice di posizione `e la moda: essa pu`o essere
calcolata sia per variabili qualitative che quantitative (nel caso di variabili
continue, si rende necessaria unapposita discretizzazione) e corrisponde al
valore (o allintervallo) della variabile caratterizzata dalla pi`
u alta frequenza
assoluta.
Un terzo indice `e la mediana: in una sequenza ordinata di dati, la mediana `e il punto per il quale met`a dati sono maggiori di esso e met`a sono
pi`
u piccoli. In altre parole, la mediana `e il punto per il quale la probabilit`a
che un valore caschi alla sinistra di esso o alla destra di esso `e pari al 50%.
Necessitando di un ordine fra dati, le operazioni <, >, = devono poter essere denite: pertanto, la mediana `e calcolabile per le variabili quantitative e
qualitative ordinali.

3.2.3

Indici di variabilit`
a

Altro indice importante `e la variabilit`


a, ovvero la dispersione di una
distribuzione. Esistono diverse tecniche per valutare la variabilit`a, ma tutte
sono solamente applicabili alle variabili quantitative: `e necessario, infatti,
non solo essere in grado di denire un ordine tra i valori, ma anche poterne
denire una misura di distanza.
La prima consiste nel considerare il valore minimo e massimo che lattributo pu`o assumere: `e una tecnica piuttosto elementare, ma che risente
enormemente della presenza di eventuali outliers non identicati. Viene,
quindi, poco usata.
La seconda tecnica consiste nel calcolare la varianza: attenzione, nel
paragrafo 3.2.1 abbiamo parlato di varianza di uno stimatore, qui stiamo
parlando di stima della varianza, ovvero cercare di valutare la varianza della
popolazione utilizzando un campione limitato. La varianza viene calcolata
come:
1
(3.9)
(xi x)2 ,
N
dove x `e la media. Spesso, dato che lEq. (3.9) rappresenta uno stimatore
della varianza della popolazione, si utilizza s2 invece di 2 .
Sfortunatamente, si pu`o facilmente dimostrare che lo stimatore di Eq.
(3.9) `e biased. Uno stimatore unbiased `e invece il seguente:
2 =

35

1
(xi x)2 .
(3.10)
N 1
In alternativa alla varianza, si pu`o utilizzare la deviazione standard ,
che `e semplicemente la radice quadrata della varianza.
Altro indice `e rappresentato dal coeciente di variazione (CV ), calcolabile quando la media non `e nulla:
2 =

CV =

.
|x|

(3.11)

In alternativa agli indici di variabilit`a n qui presentati, `e talvolta utilizzata lanalisi dei quartili : un quartile `e ognuno dei tre punti che divide
un dataset in aree al 25% di probabilit`a. In particolare, il secondo quartile
equivale alla mediana. I tre quartili vengono deniti come Qi , con i = 1, 2, 3.
Un indice di variabilit`a `e dato dallInterQuartile Range (IQR):
IQR = Q3 Q1 ,

(3.12)

` inoltre
cio`e dalla dierenza fra il valore del terzo e del primo quartile. E
possibile calcolare gli upper bound e lower bound del nostro dataset, deniti
come T1 e T2 :

T1 = max(minimo valore osservato, Q1 1.5 IQR)

(3.13)

T2 = min(massimo valore osservato, Q3 + 1.5 IQR).

(3.14)

A partire dai quartili e dai bound, `e possibile tracciare i cosiddetti boxplot, che identicano gracamente le quantit`a descritte in precedenza. Fig.
3.1 mostra un esempio di boxplot, in cui vengono anche segnalati eventuali
outliers, calcolati semplicemente (ma, spesso, ecacemente) come tutti quei
valori assunti dalla nostra variabile pi`
u piccoli (pi`
u grandi) di T1 (T2 ).

3.2.4

Indici di eterogeneit`
a

Gli indici n qui analizzati sono utili quasi esclusivamente in caso di


variabili quantitative. Comunque, risulta utile, in molti casi, avere anche
misure in grado di descrivere feature di tipo qualitativo, siano esse nominali
o ordinali. Lindice pi`
u comune per gli attributi qualitativi `e leterogeneit`
a.

36

Figura 3.1: Esempio di boxplot.


Consideriamo una variabile qualitativa x, che pu`o assumere k distinti
livelli. Supponiamo di aver calcolato le frequenze relative pi per ogni livello,
come mostrato nel paragrafo 3.1.1. Una denizione generale di eterogeneit`a
pu`o essere la seguente:
si ha eterogeneit`a minima (si parla anche, in questo caso, di omogeneit`a ) quando non abbiamo variazioni nei livelli delle feature, ovvero
una certa pi = 1 e vale pj = 0, j = i;
viceversa, si ha eterogeneit`a massima quando le osservazioni si distribuiscono uniformemente su tutti i livelli, ovvero pi = 1/k, i.
Esistono due indici molto comuni di eterogeneit`a. Il primo `e il cosiddetto
Gini index :
G=1

p2i ,

(3.15)

i=1

per il quale `e facile mostrare come, se siamo in condizioni di omogeneit`a, si


ha G = 0, mentre in condizioni di massima eterogeneit`a si ha G = 1 k1 .
Dato che spesso pu`o essere utile normalizzare i valori degli indici anch`e
siano compresi in [0, 1], si pu`o denire il Gini index normalizzato:
G =

G
.
(k 1)/k

(3.16)

Altro indice piuttosto comune `e lentropia, denita come:


E=

k

i=1

37

pi log pi ,

(3.17)

che vale 0 in caso di omogeneit`a e log k in caso di massima eterogeneit`a. Anche in questo caso, `e possibile denire lentropia normalizzata nellintervallo
[0, 1]:
E =

3.3

E
.
log k

(3.18)

Analisi esplorativa bivariata e multivariata

Analogamente a quanto visto in precedenza per le distribuzioni di frequenza, `e ovviamente possibile eettuare analisi incrociate sulle caratteristiche dei nostri dati anche dal punto di vista del calcolo di indici. Dato
che questo tipo di analisi `e tuttaltro che banale, ne daremo solo alcuni brevi
cenni, rimandando poi gli interessati ad ulteriori approfondimenti su appositi
testi.
Per quanto riguarda lanalisi bivariata, normalmente un buon metodo
per trovare eventuali relazioni fra feature consiste nellutilizzare lapproccio
graco. A tal proposito, molto utilizzato `e lo strumento della scatterplot
matrix, in cui gli attributi vengono messi in relazione a coppie. Ogni cella
della matrice `e detta scatterplot diagram. Un esempio di scatterplot matrix
`e riportato in Fig. 3.2.
Analogamente a quanto visto nel precedente paragrafo, sarebbe possibile
denire moltissimi indici anche per lanalisi bivariata: per brevit`a citiamo,
in questa sede, solo lindice di concordanza, ovvero la tendenza ad osservare
alti (bassi) valori di un attributo in accordo con alti (bassi) valori di unaltra
feature. In questo senso, la misura pi`
u utilizzata `e la covarianza, denita
come:
N
1
Cov(x, y) =
(xi x) (yi y) .
N i=1

(3.19)

` immediato notare che Cov(x, x) = 2 . Ovviamente, analogamente a quanE


to visto nel paragrafo 3.1.2, `e possibile costruire una matrice di varianza
covarianza, simile alla matrice di contingenza. In alternativa alla covarianza,
`e possibile utilizzare la correlazione (lineare):

38

Figura 3.2: Esempio di scatterplot matrix.

r(x, y) =

Cov(x, y)
,
x y

(3.20)

dove x e y rappresentano le deviazioni standard delle due variabili. La


correlazione lineare ha le seguenti propriet`a:
r(x, y) = 1 quando tutti i punti nello scatterplot diagram sono posizionati su una retta a pendenza positiva, e r(x, y) = 1 quando la
pendenza `e negativa. Proprio per questa relazione di tipo lineare, r
viene chiamata correlazione lineare;

39

Feature
outlook
temperature
humidity
windy
play

Descrizione
Tipo
Condizioni del meteo
Qualitativa nominale
Temperatura atmosferica
Quantitativa continua
Umidit`a atmosferica
Quantitativa continua
Situazione del vento
Qualitativa nominale
(Target) Giocare o meno a golf Qualitativa nominale
Tabella 3.3: Il dataset weather.

se r(x, y) = 0, le due variabili non sono assolutamente legate da alcuna


relazione lineare, e si dicono scorrelate;
in generale, 1 r(x, y) 1.
Si potrebbero ora approfondire le analisi di tipo multivariato, ma risultano piuttosto complesse, in quanto `e forte in questi casi la distinzione fra i
vari tipi di attributo. Quindi, rimandiamo gli interessati ad approfondimenti
su appositi testi.

3.4

Esempi di analisi con WEKA

Analizziamo un dataset piuttosto elementare utilizzando WEKA. In particolare, analizziamo in questo paragrafo il dataset chiamato weather, e riferito ad una collezione di osservazioni riferite al meteo (sereno, nuvoloso o
piovoso), temperatura, umidit`a e situazione del vento (presente o assente).
La classe `e costituita da una variabile binaria riferita alla possibilit`a o meno
di giocare a golf, sulla base delle condizioni climatiche. Le feature e il target
di questo dataset sono ricapitolati in Tab. 3.3.
Lanciamo quindi WEKA ed avviamo lexplorer. Sullinterfaccia, clicchiamo su Open le... e selezioniamo, dalla cartella Data, il le weather.ar. Dovrebbe apparire una nestra simile a quanto mostrato in Fig.
3.3. Interpretiamo un po tutte le informazioni che ci vengono fornite.
In alto troviamo una serie di tasti, i primi per caricare dataset, mentre gli ultimi due servono per editare (sfruttando una GUI) e salvare il nostro dataset (per esempio, per vericare eventuali missing, completare i dati,
correggere valori palesemente sbagliati e via dicendo).

40

Figura 3.3: Esempio dellinterfaccia explorer di WEKA.


Scendendo, troviamo la possibilit`a di scegliere dei ltri da appicare ai
dati. Cliccando sul pulsante di scelta, si apre una box ricca di ltri, sia
supervisionati (tengono conto del target) che non supervisionati (viceversa).
A loro volta, i metodi sono divisi in metodi che agiscono sugli attributi o
sulle singole istanze. Lasciando poi alla vostra curiosit`a maggiori dettagli
su molti di questi ltri, da usare sempre e comunque con un obiettivo ben
ssato, supponiamo di scegliere fra gli unsupervised che agiscono sulle singole
osservazioni (istances) il Randomize, e vediamo di cosa si occupa. Una volta
scelto, clicchiamo sul nome del ltro e si apre una nestra come quella di
Fig. 3.4: ci viene fornita una breve spiegazione del ltro (semplicemente,
randomizza lordine dei pattern allinterno del dataset, azione utile quando
vengono usate tecniche per la stima delle performance di un metodo nei
casi di dataset ordinati rispetto al target), con la possibilit`a di saperne di
pi`
u (pulsante More); quindi, ci vengono proposte le possibili opzioni. In
questo caso, possiamo solo modicare il seed dellalgoritmo di random.
Altro ltro molto usato `e la normalizzazione (normalize), che troviamo
tra gli unsupervised sia per attributi che per singole istanze. La dierenza
sta nel fatto che il primo normalizza tutta la matrice dati nellintervallo [0, 1],
mentre il secondo normalizza ogni singolo pattern anch`e la sua norma p sia
41

Figura 3.4: Esempio di box con dettagli per un ltro.


uguale ad un certo valore:
xi p = s, i = 1, .., n,

(3.21)

dove p e il valore desiderato s sono assegnati dallutente.


Torniamo a WEKA explorer. Ci vengono fornite, di seguito, alcune informazioni sul dataset: nome, numero di pattern e di attributi (target incluso).
Seguono lelenco degli attributi e la possibilit`a di rimuoverne uno o pi`
u dallelenco. A destra, troviamo, per lattributo evidenziato, le caratteristiche di
distribuzione di frequenza o di indici statistici a seconda che si tratti, rispettivamente, di una feature qualitativa o quantitativa. Pi`
u in basso, troviamo
la possibilit`a di scegliere un attributo come classe e, a seguire, listogramma
rappresentativo delle distribuzioni viene rappresentato, utilizzando pi`
u colori
per rappresentare i pattern aerenti alle diverse classi. Nel caso di variabili
continue, il range viene suddiviso in un numero adeguato di intervalli.
Agendo su queste opzioni grache e sui ltri, unanalisi esplorativa di base
dei dati pu`o essere facilmente eseguita. Non solo: agendo sul tab Visualize
in alto, viene mostrata la scatterplot matrix, con la possibilit`a di visualizzare
i singoli scatterplot diagram cliccando sulle celle della matrice: un esempio
`e mostrato in Fig. 3.5.

42

Figura 3.5: Esempio di scatterplot matrix e scatterplot diagram.

3.5

Riduzione di dimensionalit`
a

Abbiamo gi`a parlato in fase di introduzione di riduzione di dimensionalit`a


e dei possibili pro e contro di questo approccio. Premettendo che esistono migliaia di tecniche per selezionare un subset di variabili, noi ci concentreremo
su uno dei pi`
u utilizzati: la Principal Component Analysis (PCA) [13, 17].
Vedremo pi`
u avanti che non sempre la PCA rappresenta la soluzione ottima
per la feature selection, ma essa rimane una delle tecniche pi`
u diuse.
La PCA consta di alcuni passaggi:
1. calcolo della matrice di covarianza, che deniamo C mm , dove m
`e il numero di feature;
2. calcolo degli autovettori e autovalori di C e diagonalizzazione di C. Viene trovata una matrice diagonale D mm , i cui elementi di,i = i ,
ovvero sulla diagonale troviamo gli autovalori precedentemente calcolati;
3. gli autovalori e i corrispondenti autovettori vengono ordinati in maniera
decrescente;

43

4. viene calcolata lenergia cumulativa totale di tutti gli autovettori come


g=

di,i ;

(3.22)

i=1

5. viene stabilita una soglia percentuale gth sullenergia cumulativa totale


g;
6. vengono mantenuti solo gli mP CA autovettori e autovalori che permettono di ottenere unenergia cumulativa parziale gp gth .
Tutto ci`o cosa signica? La parte pi`
u dicile di tutta la PCA `e esattamente questa: interpretare i risultati. In pratica, il calcolo degli autovettori implica che noi andiamo ad eettuare nientaltro che una combinazione
lineare delle nostre feature, ottenendo mP CA nuove feature. Loperazione
di sogliatura signica, semplicemente, tagliare quelle componenti che meno
inuiscono sulla descrizione dello spazio degli ingressi.
Ovviamente, se il nostro scopo `e, in aggiunta alla riduzione della dimensionalit`a, mantenere anche linterpretabilit`a degli attributi, la PCA non `e
di certo la via pi`
u adatta da seguire. Ciononostante, `e possibile eettuare, sfruttando le propriet`a della cosiddetta Singular Value Decomposition
(SVD), la trasformazione inversa nellambito dello spazio originale degli attributi: il problema, in questo caso, `e che non possiamo permetterci di escludere alcun autovettore, quindi non eettuiamo di fatto alcuna riduzione di
dimensionalit`a!

3.6

Esempi di riduzione di dimensionalit`


a utilizzando WEKA

Proviamo ora ad applicare la PCA in WEKA. Prima di tutto, lanciato


explorer e caricato il dataset weather, spostiamoci sul tab Select attributes
e selezioniamo dal men`
u la PCA (PrincipalComponents). Lasciamo intatte
le opzioni di default, utilizziamo il ranker di WEKA (classica le variabili
usando indici basati sullentropia) e forziamo WEKA a usare tutto il training
set (lasciamo per ora perdere la Cross Validation, di cui parleremo pi`
u avanti
in queste dispense). Selezionata la classe (play), lanciamo lesecuzione
della PCA.
44

Loutput di WEKA conterr`a, in ordine: un riepilogo del dataset e dei metodi selezionati; la matrice di correlazione (usata in alternativa alla matrice
di covarianza); gli autovalori, la porzione di energia corrispondente, lenergia
cumulativa totale no a quellautovalore e il corrispondente autovettore; la
matrice degli autovettori; il ranking delle variabili (in questo caso, le combinazioni lineari calcolate con la PCA), ordinate dal ranker di WEKA. Notiamo
che, avendo una variabile nominale qualitativa (il meteo) che pu`o assumere
3 possibili livelli, WEKA eettua la binarizzazione; la situazione del vento `e
anchessa qualitativa, ma binaria e non necessita di ulteriore binarizzazione.
Alla ne, abbiamo 6 attributi da considerare. Notiamo che compaiono solo 5
autovalori, il che equivale a dire che il sesto autovalore `e nullo; questo fatto
`e confermato anche dallenergia cumulativa, che raggiunge il 100% con solo i
primi 5 autovalori.
Passiamo ora a capire meglio le opzioni della PCA. Possiamo settare:
il massimo numero di attributi che vogliamo visualizzare nella combinazione lineare (per semplicit`a di lettura);
se vogliamo normalizzare i dati fra [0, 1], qualora non lavessimo gi`a
fatto;
un ag per trasformare nuovamente le feature della PCA nello spazio
originario attraverso SVD;
la percentuale di energia cumulativa che vogliamo garantire.
Analizzando il ranking ottenuto in precedenza:
Ranked attributes:
0.675990846445273472
0.411301353536642624
0.195956514975330624
0.063841150150769192
0.000000000000000111

1
2
3
4
5

0.578temperature...
-0.68outlook=overcast...
0.567outlook=sunny...
0.738windy...
0.748temperature...

notiamo che la quinta componente della PCA ha un ranking davvero basso, e


stesso dicasi per la quarta. Potrebbe essere, quindi, una buona idea abbassare
la soglia per lenergia cumulativa: portiamolo al 90%, ad esempio, valore
piuttosto tipico. Prima di lanciare la simulazione, diamo unocchiata anche
alle opzioni del ranker:
45

possiamo scegliere se fare eettuare il ranking o no;


possiamo settare il numero massimo di feature da mantenere;
possiamo selezionare un subset iniziale di attributi;
possiamo stabilire una soglia per il valore dellentropia sotto la quale
la variabile viene esclusa dal dataset.
Lasciamo le impostazioni di default, e lanciamo la PCA. Come previsto,
otteniamo solo 4 componenti. Possiamo continuare a fare analisi di questo
tipo, ma adesso vogliamo eettuare una verica: la sesta componente `e davvero nulla? Settiamo la soglia di energia al 100%, ovvero includiamo tutto.
In eetti, il sesto autovettore `e nullo:
eigenvalue proportion cumulative
1.94405
0.32401
0.32401 0.578temperature...
1.58814
0.26469
0.5887 -0.68outlook=overcast...
1.29207
0.21534
0.80404 0.567outlook=sunny...
0.79269
0.13212
0.93616 0.738windy...
0.38305
0.06384
1
0.748temperature...
0
0
1
-0.588outlook=rainy...
ma possiamo notare che, curiosamente, dal punto di vista entropico ha la
stessa importanza del quinto autovettore:
Ranked attributes:
0.675990846445273472
0.411301353536642624
0.195956514975330624
0.063841150150769192
0.000000000000000111
0.000000000000000111

1
2
3
4
6
5

0.578temperature...
-0.68outlook=overcast...
0.567outlook=sunny...
0.738windy...
-0.588outlook=rainy...
0.748temperature...

Lultima prova che vogliamo eettuare riguarda la possibilit`a di eettuare il mapping inverso attraverso SVD nello spazio originale. Settiamo le
apposite opzioni e lanciamo la SVD. Loutput `e il seguente:

46

PC space transformed back to original space.


(Note: cant evaluate attributes in the original space)
Ranked attributes:
1 3 outlook=rainy
1 1 outlook=sunny
1 2 outlook=overcast
1 6 windy
1 4 temperature
1 5 humidity
La nota, sebbene sembri allarmante, in verit`a fornisce uninformazione
alquanto intuitiva: la PCA non pu`o ottenere esattamente lo spazio di partenza, semplicemente perch`e abbiamo binarizzato la matrice (per quanto la
matrice non binarizzata potrebbe essere facilmente ricavata). In questo caso, non possiamo tagliare alcun autovalore n`e autovettore, quindi leventuale
riduzione di dimensionalit`a `e adata per intero al ranker (che, in questo caso, non riesce a fare molto, essendo anche il dataset usato molto semplice e
piccolo).

47

Capitolo 4
Classificazione
Addentriamoci ora nel problema della classicazione di pattern. In questo capitolo supporremo di utilizzare sempre un dataset X, per il quale un
attributo `e utilizzato come target. Ad ogni valore del target corrisponde una
classe. Tornando allesempio weather considerato nei paragra 3.4 e 3.6, il
target `e la variabile play, ovvero la decisione di giocare a golf o meno.
I problemi di classicazione si possono dividere in due sottocategorie,
come gi`a avevamo visto nel paragrafo 1.2:
si parla di classicazione binaria quando il target pu`o assumere solamente due valori. Un esempio `e il gi`a citato weather : le due classi
corrispondono alla decisione di giocare o no a golf. Normalmente, i
target sono del tipo yi {0, 1} oppure yi {1, 1};
si parla di classicazione multiclasse quando il target pu`o assumere
un numero nito di valori interi numerici, ovvero yi S , dove
rappresenta linsieme dei numeri naturali non negativi. Un esempio `e il
dataset iris, sempre incluso tra gli esempi di WEKA, in cui tre tipi di
ore vengono distinti sulla base delle caratteristiche di petalo e sepalo:
in questo caso, yi {1, 2, 3}, dove ogni classe corrisponde ad un preciso
ore.
Alcuni algoritmi nascono nellottica della classicazione binaria: inizieremo con lanalisi per questo problema e mostreremo, quindi, le tecniche per
la generalizzazione al problema multiclasse.

48

4.1
4.1.1

Zero Rules
Apprendimento

Il classicatore Zero Rules (0R) `e davvero elementare: la classe viene


scelta sulla base della moda. Ci`o signica che assegneremo ogni pattern a
runtime alla classe pi`
u ricorrente del nostro training set (in caso di parit`a, la
scelta avviene una volta per tutte randomicamente). Ovviamente, non `e un
metodo particolarmente furbo n`e utile, e spesso viene utilizzato nella pratica
solo per trovare le frequenze relative e assolute delle varie classi.
Supponendo di avere a disposizione un dataset X con 15 pattern e 3
classi, e ipotizzando di avere 7 pattern aerenti alla classe 2 e 4 pattern
ciascuno per le classi 1 e 3, sceglieremo la classe 2 in quanto moda del nostro
dataset.

4.1.2

Fase in avanti

La fase feedforward a runtime di 0R consister`a semplicemente nellassegnare la classe pi`


u frequente del training set ad ogni nuovo pattern che
arrivi in ingresso al nostro sistema.

4.1.3

Estensione al caso multiclasse

Lalgoritmo Zero Rules si adatta gi`a nella sua forma originaria a problemi
binari e multiclasse.

4.1.4

Esempio di analisi in WEKA

Torniamo a considerare il dataset weather. Lanciamo explorer di WEKA


e carichiamo il dataset. Ora, spostiamoci sul tab Classify in alto e selezioniamo come metodo di classicazione ZeroR nella sottocategoria Rules.
Aprendo la nestra delle opzioni, notiamo subito che lunica opzione a disposizione si riferisce ad eventuali output di debug: settiamo a true. Tornando
ad explorer, nellarea Test options settiamo luso dellintero training set
(le altre opzioni verranno presentate pi`
u avanti). Clicchiamo poi su More
options e abilitiamo Output predictions. Scelta la classe (play, nel nostro
caso), lanciamo lanalisi.
A parte un po di output di riepilogo, ci viene precisato che:
49

ZeroR predicts class value: yes


essendo yes la classe pi`
u ricorrente del nostro dataset. Passando ai risultati
successivi, analizziamo le voci che ci vengono fornite.
Predictions on training set
Viene presentato un riepilogo del comportamento del nostro classicatore
sul training set. Abbiamo a disposizione le seguenti voci:
numero del pattern;
valore reale della classe;
valore ottenuto dal classicatore;
un ag di errore corrispondente ai pattern per i quali sbagliamo la
previsione;
la probabilit`a di indovinare la previsione. Tale calcolo coinvogle il pattern, il training set ed il particolare classicatore che usiamo. Il valore
pi`
u alto fra quelli a disposizione `e contraddistinto da *.
(In)Correctly Classified Instances
Equivale al numero di classicazioni corrette o errate. A seguire, troviamo le percentuali relative al numero totale di pattern: nel nostro caso,
sbagliamo circa nel 36% dei casi.
Kappa statistic
La statistica Kappa [7] (anche nota come Kappa di Cohen o semplicemente Kappa) `e basato su considerazioni statistiche e sulluso di cosiddetti rater,
cio`e valutatori. Rappresenta un metodo abbastanza rapido per valutare la
robustezza di un algoritmo. Lindice K viene calcolato come
K=

P (A) P (E)
,
1 P (E)

(4.1)

dove P (A) rappresenta laccuratezza, ovvero la percentuale che il nostro predittore azzecchi, e P (E) `e la probabilit`a che il classicatore indovini per pura
coincidenza:
50

nc

P (E) =

pi qi ,

(4.2)

i=1

dove nc rappresenta il numero di classi, pi `e la frequenza relativa di ogni classe


nel training set e qi `e la frequenza relativa delloutput del nostro classicatore.
Vale K (, 1]:
K < 0 `e indice di un classicatore che sbaglia volutamente;
K = 0 rappresenta un classicatore che, quando indovina, lo fa per
puro caso;
K = 1 `e indice di massima robustezza del predittore.
Nel caso in esame, il nostro classicatore 0R `e caratterizzato da Kappa
nulla, il che mostra la scarsa adabilit`a di 0R. Controlliamo il risultato. Le
quantit`a che caratterizzano il nostro 0R sono:
P (A) 64.29% `e laccuratezza;
p1 64.29%, p2 35.71%, q1 = 100% e q2 = 0%. Pertanto, P (E)
64.29%.
Ne risulta, appunto, K = 0.
Mean absolute error
Rappresenta lerrore medio assoluto (MAE), quantit`a che nei problemi
di classicazione ha poca importanza. Comunque sia, esso `e denito in questo caso come la distanza media tra la probabilit`a di classicazione corretta
e il target originario del dataset. In pratica, fornisce una misura complessiva del comportamento del classicatore relativa al particolare dataset che
utilizziamo.
Il MAE ha, invece, enorme importanza nei problemi di regressione, che
aronteremo a breve, in quanto in quei casi rappresenta la dierenza media
tra loutput del nostro sistema e quello originario del dataset.

51

Root mean squared error


Per lerrore quadratico medio (RMSE) valgono molte delle considerazioni
fatte in precedenza per il MAE: infatti, il RMSE `e calcolato (sia per regressione che per classicazione) come il MAE, tranne che ogni volta calcoliamo
il quadrato della dierenza fra output (o probabilit`a) e valore originario.
Relative absolute error e Root relative squared error
Queste misure sono ottenute come rapporto, rispettivamente, fra MAE e
RMSE e i valori ottenuti col worst case, ovvero con un classicatore 0R. Dato
che in questo caso usiamo un classicatore 0R, non abbiamo miglioramenti
e lerrore relativo `e pari al 100%.
Detailed Accuracy By Class e Confusion Matrix
Analizziamo ora i dati relativi alla tabella di accuratezza della previsione.
Otteniamo un output di questo tipo:
TP Rate
1
0

FP Rate
1
0

Precision
0.643
0

Recall
1
0

F-Measure
0.783
0

Class
yes
no

Prima di addentrarci nella spiegazione dei termini riportati, consideriamo


la matrice di confusione:
a b
<-- classified as
9 0 | a = yes
5 0 | b = no
La matrice di confusione (CM) va analizzata nel seguente modo: nelle
colonne, troviamo le classicazioni ottenute col metodo selezionato; nelle
righe, il numero di dati aerenti alle due classi nel training set. Spieghiamoci
meglio: nel nostro caso, abbiamo 9 dati, originalmente appartenenti alla
classe yes, che sono stati classicati come yes; abbiamo inoltre 5 dati
che nel training set appatrtenevano alla classe no (seconda riga), ma che
sono comunque stati classicati come yes. In Eq. (4.3), riportiamo un
esempio di confusion matrix CM con k classi, nel quale: Cii indica le caselle
contenenti il numero di dati della classe i correttamente classicati; Cij indica
52

il numero di dati appartenenti ad una classe i, ma erroneamente attribuiti


dal metodo alla classe j.

CM =

C11 C12 C1k


C21 C22 C2k
..
..
..
.
.
.

Ck1 Ck2 Ckk

(4.3)

Torniamo ora allaccuratezza per classe. Denita la CM, Analizziamo


voce per voce:
iniziando dal fondo, Class indica la classe a cui i precedenti coecienti sono riferiti: la prima riga si riferisce ai dati classicati come
classe yes, la seconda riga `e riferita ai dati classicati come no;
TP rate indica il True Positives rate, ovvero la percentuale dei dati
appartenenti alla classe c, i quali sono stati eettivamente classicati
in modo corretto. Nel nostro caso, il 100% dei dati aerenti alla classe
yes sono stati classicati correttamente, mentre nessun pattern `e
stato classicato come no;
FP rate indica il False Positives rate, ovvero la percentuale dei dati
appartenenti alla classe c, i quali sono stati classicati in modo errato.
Nel nostro caso, qualsiasi dato non aerente a yes, `e stato comunque
classicato come yes, quindi il FP rate di questa classe `e il 100%.
Viceversa, nessun pattern `e stato classicato come no, quindi anche
il FP rate di questa classe `e 0%;
Precision indica la percentuale di dati, classicati come appartenenti
alla classe c, correttamente classicati in quella classe. Nel nostro caso,
il 100% dei dati yes sono stati correttamente classicati, mentre lo
0% dei no `e stato attribuito a tale classe dallo 0R;
Recall `e la parte di classe che `e stata correttamente scoperta: coincide
quindi con il TP rate;
la Fmeasure unisce Precision e Recall in un unico indice.
In termini formali, si pu`o scrivere (i pedici c si riferiscono ad una generica
classe), riferendoci alla notazione di Eq. (4.3):
53

Ccc
T Pc = k
,
i=1 Cci
k
j=1 Ccj
F Pc = k
, j = c,
C
ci
i=1
Ccc
,
P recc = k
i=1 Cic
Recc = T Pc ,
2 P recc Recc
.
F mc =
P recc + Recc

4.2

(4.4)
(4.5)
(4.6)
(4.7)
(4.8)

Naive Bayesian Classifier

Terminata la rassegna sul poco utile classicatore 0R, passiamo a qualche metodo pi`
u complesso ma anche decisamente pi`
u ecace. Iniziamo la
rassegna con il Naive Bayesian Classier, anche noto come NBC.

4.2.1

Apprendimento

Lidea di base di NBC consiste nel classicare un dato sulla base del dato stesso, ovvero della probabilit`a di classe dato il pattern p (C = c |X = x),
dove C indica una variabile random per la classe, X un vettore di variabili random per gli attributi, c una particolare classe e x una particolare
osservazione. NBC si basa su due ipotesi semplicative:
1. tutte le feature sono indipendenti fra loro, data una classe;
2. non esistono attributi nascosti (e non presenti nel dataset) che inuenzino in qualche modo il processo decisionale sulla classe.
Dato che spesso, nella realt`a, queste due ipotesi sono tuttaltro che strettamente rispettate, le prestazioni del classicatore talvolta peggiorano.
Proseguiamo con lanalisi. Il teorema di Bayes ci dice che, dato un nuovo
pattern da classicare x, possiamo scegliere la classe sulla base delle seguenti
probabilit`a condizionali:
p (C = ci |X = x) =

p(C = ci )p (X = x |C = ci )
, i,
p (X = x)
54

(4.9)

scegliendo quindi la classe ci a probabilit`a maggiore. In questo caso, p(C =


ci ) rappresenta la probabilit`a a priori di classe, mentre


=
p (X = x |C = ci ) = p
j Xj = xj |C = ci

=
j p (Xj = xj |C = ci ) ,

(4.10)

avendo supposto indipendenti le feature data la classe. Inoltre, il termine


p (X = x) viene spesso trascurato, essendo soltanto un fattore di normalizzazione.
Il termine di Eq. (4.10) `e facile da calcolare per variabili non continue;
nel caso di attributi continui, si pu`o ipotizzare che la distribuzione di tali
valori sia gaussiana, ottenendo
p (Xj = xj |C = ci ) = 

1
2j2

(xj xj )2
exp
2j2


,

(4.11)

con xj e j2 che rappresentano media e varianza dellattributo xj , calcolate


sui pattern del training set. Di fatto, lapprendimento si esaurisce nel calcolo
di media e varianza sul dataset usato per lapprendimento. Una nota: in
alternativa allEq. (4.11), `e possibile utilizzare un mapping nonlineare dei
dati attraverso funzioni kernel (che riprenderemo pi`
u avanti), le quali complicano la trattazione e non sono particolarmente didattiche al momento. Per
chi fosse interessato a maggiori dettagli, si veda [12].

4.2.2

Fase in avanti

La fase feedforward del NBC `e stata gi`a denita allinterno del paragrafo
sullapprendimento: allarrivo di un nuovo pattern, si utilizza lEq. (4.9) e si
sceglie la classe con probabilit`a condizionale pi`
u alta.

4.2.3

Estensione al caso multiclasse

Come risulta chiaro dalla trattazione e, in particolare, dallEq. (4.9),


NBC `e nativamente multiclasse: `e suciente iterare il calcolo della probabilit`a condizionale di classe su tutte i valori che il target pu`o assumere.

55

4.2.4

Esempio di analisi in WEKA

Utilizziamo il nostro solito dataset, weather, e vediamo come si comporta


con NBC. Innanzitutto, da WEKA explorer, selezioniamo il classicatore
NaiveBayes dalla sottocategoria Bayes. Il classicatore permette tre
personalizzazioni:
1. alcuni ulteriori output di debug (si possono attivare o no);
2. passare ad un mapping nonlineare attraverso kernel dei nostri ingressi
(lo lasceremo a false in questa analisi);
3. rappresentare le variabili continue non attraverso una distribuzione normale, ma attraverso una discretizzazione dellattributo in appositi intervalli (di fatto, rendere la variabile discreta o, se vogliamo, qualitativa).
Anche in questo caso, lasceremo false questa opzione.
Appurandoci di eettuare il training su tutto il training set e, se vogliamo,
avendo attivato luscita di tipo probabilistico, lanciamo lanalisi.
In questo caso, abbiamo ben 13 classicazioni esatte su 14 pattern di training, valori medi di errore bassi e una Kappa elevata (sopra lo 0.8). Premesso
che per un test pi`
u accurato `e necessario lutilizzo di dati non appartenenti
al training set, i valori che ritroviamo sono decisamente incoraggianti. Anche
la CM `e:
a b
<-- classified as
9 0 | a = yes
1 4 | b = no
ovvero lunico errore `e un no che classichiamo come yes. Quantomeno
abbiamo cominciato a distinguere due classi, `e gi`a un bel passo in avanti.

4.3
4.3.1

Reti neurali: MultiLayer Perceptrons


Cenni storici: il percettrone

Prima di lanciarci nellanalisi del percettrone multistrato, `e bene cominciare a capire cosa sia un percettrone. Introdotto da Rosenblatt nel 1958
[21], esso rappresentava per lepoca uninnovazione incredibile: in pratica,
56

esso consisteva in una funzione matematica in grado di imparare dai dati


attraverso un algoritmo di apprendimento vero e proprio. Infatti, no ad ora,
sia 0R sia NBC non eettuano un vero e proprio learning dai dati: il primo
fa un semplice conto sulla frequenza, il secondo al massimo calcola media e
varianza per ttare una gaussiana.
Il percettrone `e un classicatore binario che mappa i suoi ingressi x m
in un valore scalare y = f (x) , calcolato come
y = f (x) = (w x + b) ,

(4.12)

dove w `e un vettore di pesi da applicare agli ingressi, b `e detto bias ed `e


un termine costante che non dipende dagli ingressi, e (z) `e la funzione di
attivazione. Le scelte pi`
u comuni per (z) sono:

(z) = (z)

(4.13)

(z) = z (z)

(4.14)

(z) = tanh(z)
1
(z) =
1 + ez
(z) = z,

(4.15)
(4.16)
(4.17)

dove (z) `e la cosiddetta funzione Heaviside:

0
(z) =

se
se
se

1
2

z<0
z=0 .
z>0

(4.18)

Non `e raro vedere riformulata lEq. (4.12) come


 x
) ,
y = f (x) = (w

(4.19)

esattamente equivalente allEq. (4.12), ma nella quale abbiamo aggiunto


al vettore dei pesi il termine del bias e al vettore degli ingressi un termine
costante a 1. Uno schema graco del percettrone `e presentato in Fig. 4.1.
Lalgoritmo di apprendimento `e iterativo di tipo error backpropagation
(BP ), ovvero la dierenza tra luscita reale e quella ottenuta dal percettrone
ad ogni passo viene usata come feedback per adattare i pesi. Sfortunatamente, il percettrone riusciva a riconoscere dopo laddestramento solamente
57

Figura 4.1: Schema graco di un percettrone.


funzioni linearmente separabili, ovvero senza sovrapposizione fra le classi (le
Figg. 4.2 e 4.3 mostrano due esempi di dataset linearmente e non linearmente separabili): in particolare, Minsky e Papert [16] mostrarono che il
percettrone non era in grado di apprendere nemmeno lelementare funzione
logica XOR. Questo perch`e, come mostrato in Fig. 4.4, lo XOR non `e un
problema linearmente separabile (i simboli x mostrano le uscite a 1 e i o
rappresentano gli output a 0).
8
6
4
2
0
2
4
6
8
8

Figura 4.2: Esempio di due classi di dati linearmente separabili.


Dopo, quindi, un iniziale straordinario successo, il percettrone rimase

58

2
1.5
1
0.5
0
0.5
1
1.5
2
2

1.5

0.5

0.5

1.5

Figura 4.3: Esempio di due classi di dati non linearmente separabili.

1.5

0.5

0.5
0.5

0.5

1.5

Figura 4.4: Rappresentazione graca della funzione logica XOR.

59

quasi inutilizzato per una decina danni, no a quando non vennero sviluppate
le cosiddette reti multistrato, cio`e le MLP.

4.3.2

Architettura di un MLP

La struttura generale di un MLP `e costituita da tre strati di neuroni:


1. il primo strato viene detto input layer ed `e in contatto diretto con i
dati di ingresso;
2. lo strato intermedio viene detto hidden layer e non ha contatti diretti
con lesterno, in quanto riceve i dati dallinput layer e li invia allo strato
di neuroni di uscita;
3. lultimo livello `e loutput layer, il quale riceve i dati dai neuroni dello
strato intermedio e si interfaccia con luscita.
Dato che, spesso, per la rappresentazione del MLP si utilizzano gra, si parla di topologia di una rete, in alternativa al pi`
u classico termine architettura
della rete. Un esempio di MLP `e presentato in Fig. 4.5. Talvolta, lo strato
hidden `e assente e i layer di ingresso ed uscita coincidono: si parla in quel
caso di Single Layer Perceptron, ma non analizzeremo questo tipo di rete.
Il layer hidden pu`o, inoltre, contenere diversi layers al proprio interno. Il
MLP rappresenta il primo esempio di Articial Neural Network o pi`
u semplicemente Rete Neurale (NN) che abbia avuto davvero successo, anche dal
punto di vista pratico.
Iniziamo a considerare larchitettura di un MLP: supponiamo che esso
contenga, al proprio interno, n neuroni nellinput, h nellhidden e p neuroni
nelloutput layer. I pesi wik , con i = 1, ..., n e k = 1, ..., h, permettono
linterfacciamento fra i neuroni di input e quelli di hidden; i pesi zkj , con k =
1, ..., h e j = 1, ..., p, connettono i neuroni di hidden con quelli di output. Per
quanto riguarda la determinazione del numero di neuroni e strati per lhidden
layer, non esiste un metodo preciso in letteratura, ma di solito si procede
ad un confronto fra architetture per scegliere quella ottimale. I neuroni di
hidden, quindi, ricevono informazione dai neuroni di input attraverso i pesi w,
e producono luscita hk = f (x, wk ), dove f () `e la funzione di attivazione del
neurone. I neuroni di output, a loro volta, ricevono i dati dallhidden layer,

60

Figura 4.5: Esempio di architettura di un MLP


vi applicano gli opportuni pesi z e quindi producono loutput yj = g(h, z j ).
Unendo le due funzioni, luscita del jesimo neurone `e quindi:

yj = g


hk zkj


=g


zkj f


xi wik

(4.20)

Questa equazione mostra come il mapping degli ingressi in un MLP sia


` per`o, necessario trovare i pesi che caratterizzano
altamente non lineare. E,
la rete. Possiamo identicare tre tipi di MLP:
MLP con pesi ssati: di fatto, non contemplano una fase di apprendimento, ma i pesi vengono determinati sulla base di informazioni a
priori. Non ci occuperemo di questo tipo di reti, in quanto davvero
poco usate;
Supervised learning MLP: nel training set abbiamo denito un target
e, quindi, `e possibile denire una funzione di errore rispetto alloutput
ottimo;
Unsupervised learning MLP: anche note come Self Organizing Maps o
Mappe di Kohonen, dal nome di chi le ha introdotte, non prevedono la
denizione di un target nel training set. Sono abbastanza usate, ma
per motivi di tempo non ce ne occuperemo. Per chi fosse interessato,
[15] pu`o risultare utile.

61

Come anticipato nelle precedenti righe, ci concentreremo in queste dispense solo sui Supervised learning MLP, per i quali analizziamo lalgoritmo
per lapprendimento.

4.3.3

Apprendimento

Lalgoritmo di learning in assoluto pi`


u usato `e la gi`a citata backpropagation (BP ). Iniziamo a denire la funzione errore per il jesimo nodo; per
esempio, possiamo scegliere:
ej = dj yj ,

(4.21)

nella quale dj rappresenta il target voluto e yj luscita della nostra rete.


Possiamo denire la funzione energia, che nel nostro caso risulta essere:
E=

1 2
e.
2 j j

(4.22)

Attraverso lerrore, e quindi attraverso yj , la funzione energia dipende


dai nostri pattern di training in maniera altamente non lineare, come appare
chiaro dallEq. (4.20). Al ne di trovare i pesi ottimi, quindi, siamo costretti
a ricorrere ad un algoritmo di tipo iterativo, appunto come la BP, col pericolo
peraltro di ritrovarci bloccati in qualche minimo locale.
Supponiamo di inizializzare i pesi della rete con valori random, trovando
(s)
(0)
w . Deniamo lerrore allo step s come ej . Dalla teoria dei dierenziali,
si pu`o dimostrare che il passo di aggiornamento per i pesi `e
(s)

(s) (s)

wji = j yi ,

(4.23)

(s)

nella quale j `e
(s)

j =
(s)

E (s)
(s)

(4.24)

dove j `e loutput del neurone j allo step s, e [0, 1] `e il cosiddetto


learning rate, che `e un parametro da ssare prima di iniziare lapprendimento.
Proprio per questo motivo, pi`
u che un vero e proprio parametro, `e considerato
un iperparametro, ovvero una quantit`a da stabilire come trial and error e
che determina il comportamento globale dellalgoritmo. Se troppo piccolo,
lalgoritmo converge molto lentamente; se troppo grande, lalgoritmo inizia
62

ad oscillare, divenendo instabile. Normalmente, 0.2 < < 0.8 in molte


applicazioni pratiche.
(s)
Il valore di j pu`o essere calcolato in maniera dierente a seconda che
il jesimo neurone faccia parte delloutput o dellhidden layer. Se j `e un
neurone di output, `e facile dimostrare che vale:

(s)
j


(s)
(s)
(s)
j = ej  j ,

(4.25)

che rappresenta la derivata prima della funzione attivazione.


con
Se, invece, ci occupiamo di un neurone dellhidden layer, otteniamo:
(s)
j


(s)
(s) (s)
= j
k wkj .


(4.26)

Dato che la precedente formula dipende da wkj , essa `e anche dipendente dalle
variazioni dei pesi nel nodo k. In questo appare chiaro il signicato della BP.
A volte, pu`o aiutare la convergenza laggiunta di un altro termine allEq. (4.23), ovvero del cosiddetto momento m [0, 1]: sfortunatamente,
anchesso `e un iperparametro ed `e estremamente dicile settarne il valore
ottimo, quantomeno a priori. Anche per il momento valgono le considerazioni fatte per , ovvero normalmente 0.2 < m < 0.8. LEq. (4.23) risulta cos`
modicata:
(s)

(s) (s)

(s1)

wji = j yi + mwji

(4.27)

Un altra dicolt`a consta nel criterio di stop da utilizzare per bloccare


lalgoritmo. I metodi pi`
u utilizzati sono:
stabilire un numero massimo di iterazioni;
ssare un tempo massimo di esecuzione;
fermare lalgoritmo se lerrore scende sotto una soglia predeterminata;
stop se il valore dellerrore per un certo numero di step non scende oltre
un valore pressato;
utilizzare come parametro lerrore su un validation set (ne discuteremo
nel paragrafo 4.3.6).

63

4.3.4

Fase in avanti

Una volta trovati e salvati i pesi, la fase in avanti `e semplicemente realizzata attraverso lEq. (4.20), nella quale vengono applicati i pesi trovati con
la BP.

4.3.5

Estensione al caso multiclasse

Lestensione al caso multiclasse `e particolarmente semplice: `e suciente


inserire tanti neuroni nello strato di output quante sono le classi del nostro
problema. Per esempio, un problema di classicazione binaria avr`a due neuroni di uscita, un problema multiclasse con 5 classi avr`a 5 neuroni di uscita.
Qualora pi`
u di un neurone di uscita sia attivato, il neurone con output analogico maggiore vince e la classe viene assegnata di conseguenza: questa viene
anche detta tecnica WinnerTakeAll (WTA).

4.3.6

Esempio di analisi in WEKA (I)

Consideriamo nuovamente il dataset weather. Da WEKA explorer, selezioniamo il classicatore MultiLayerPerceptron, che possiamo trovare nella sottocategoria functions. WEKA utilizza solo funzioni di attivazione
di tipo sigmoidale, come da Eq. (4.16). Analizziamo le opzioni a nostra
disposizione:
GUI permette di utilizzare uninterfaccia graca per visualizzare la
rete creata. Se settato a false, attiviamolo;
autobuild, se attivato, consente a WEKA di modicare i neuroni di
hidden in maniera automatica. Spesso utile, conviene mantenere su
true lopzione;
debug `e la solita opzione per eventuali output di debug;
decay consente a WEKA di abbassare iterativamente il learning rate
nel caso di reset della rete (vedi sotto). Settiamolo in queste prove a
false;
hiddenLayers rappresenta il numero di neuroni hidden. Esistono
alcune wildcards per questo valore:
64

a=

#attributi+#classi
;
2

i = #attributi;
o = #classi;
t = 2 a;
learningRate e momentum sono le quantit`a e m di cui abbiamo
parlato nel paragrafo 4.3.3. In queste prove, li lasceremo pari ai valori
di default, cio`e = 0.3 e m = 0.2;
nominalToBinary `e utilizzato per binarizzare la matrice dei dati nel
caso di variabili qualitative (per noi, true);
normalizeAttributes viene utilizzato per normalizzare le feature tra
[1, 1]. Anche in questo caso setteremo true;
normalizeNumericClasses normalizza i valori numerici dei target tra
[1, 1] (true);
randomSeed `e il seed per lalgoritmo di random per la selezione del
punto di partenza e per lo shuing dei dati (settiamo seed pari a 16,
un numero casuale ma che ci permette analisi consistenti);
reset consente allalgoritmo di resettare la rete nel caso durante lesecuzione il valore delle uscite tenda a divergere rispetto al target voluto.
Settiamolo a false;
trainingTime ssa il criterio di stop sul numero massimo di iterazioni
da eseguire. Settiamolo a 1000;
validationSetSize e validationThreshold vengono utilizzati come
criterio di stop in alternativa al numero di iterazioni. Il primo valore, se diverso da 0, ssa percentualmente il numero di pattern del
training set che non verranno utilizzati per trovare i pesi. Una volta
trovati i pesi coi restanti pattern, la rete verr`a testata sul validation
set e verr`a trovato un errore. Tale errore scender`a per un certo numero di iterazioni, poi la rete tender`a ad overttare (in generale) e
lerrore tender`a a salire: validationThreshold ssa dopo quante iterazioni consecutive con peggioramento dellerrore dobbiamo fermarci.

65

Per il momento, manteniamo disattivato tale criterio di stop, ssando


validationSetSize a 0.

Figura 4.6: Esempio di GUI di WEKA per le reti neurali MLP.


Passate in rassegna le opzioni, lanciamo la nostra analisi. Si aprir`a in
automatico una nestra come quella di Fig. 4.6. Notiamo che linput layer
`e rappresentato direttamente con nodi aventi il nome degli attributi (le variabili qualitative sono state binarizzate); avendo settato ad a il valore degli
hidden layers, abbiamo a = (6 + 2)/2 = 4 neuroni di hidden. Mediante apposito pulsante, lanciamo lanalisi. Una volta terminata, chiudiamo la GUI e
accettiamo il modello cos` trovato. Torneremo ora ad explorer, che ci mostra
i pesi e i bias dei neuroni e le caratteristiche statistiche del classicatore.
Notiamo che non commettiamo errori, i valori di MAE e RMSE sono
molto bassi, tanto da apportare il 95% circa di miglioramento in termini di
errore rispetto a 0R. Anche la Kappa `e massima, essendo pari a 1.

4.3.7

Esempio di analisi in WEKA (II)

Manteniamo le stesse opzioni, ma cambiamo dataset e complichiamo un


po la vita al MLP. Scegliamo come dataset iris, composto da 150 pattern,
4 feature (riguardanti le dimensioni di sepalo e petalo) e un target (3 classi
per 3 tipi dierenti di ori).
66

Proviamo a lanciare lanalisi con NBC e vediamo come si comporta. Il


classicatore bayesiano commette 6 errori, pari al 4%, ha unottima Kappa
(0.94) e si comporta egregiamente in termini di MAE e RMSE (in questo
caso, miglioriamo per`o solo del 70% rispetto allo 0R). Proviamo con il
MLP. Questa volta, commettiamo solo 2 errori (1.33%), la Kappa `e anche
migliore (0.98) e il miglioramento percentuale del RMSE `e circa pari all82%.
Proviamo ad utilizzare ora una nuova opzione, nora mai utilizzata. In
WEKA explorer, nellarea Test options, settiamo di splittare il dataset a
nostra disposizione in un training set, composto dal 67% dei dati (100 pattern), e un validation set, sul quale confronteremo le performance di NBC
e MLP. Lanciamo le analisi con i due classicatori. Questa volta confronteremo solo lerrore sul validation set. NBC commette 2 errori (4%), contro
un solo errore (2%) del MLP, che quindi, utilizzando questo criterio, sembra
avere una migliore performance.

4.3.8

Validation set e test set

Quando abbiamo introdotto nel paragrafo 1.2 i termini dataset e training


set, abbiamo anticipato che ci saremmo occupati solo pi`
u avanti di validation
e test set.
Il validation set `e un insieme di dati, indipendenti da quelli del training
set, che possono essere utilizzati per stimare le performance di un modello,
trovato usando solo il training set. Nel caso precedente, abbiamo eettuato lapprendimento su 100 dati e poi abbiamo vericato le performance sui
restanti 50, costituenti appunto il validation set. Lutilizzo di un validation
set si rende necessario quando vogliamo confrontare diversi metodi statistici (ad esempio, NBC e MLP) oppure vericare le performance al variare di
parametri e/o iperparametri. Ad esempio, potremmo vericare su iris come
cambiano le performance portando momento e learning rate entrambi a 0.8:
lerrore in termini percentuli resta uguale, ma con i due iperparametri settati
a valori pi`
u alti sale leggermente il RMSE.
Il test set, inne, `e un terzo set di dati, indipendente da validation e
training set, che viene utilizzato alla ne solo dopo aver scelto il modello denitivo, come banco di prova prima dellimplementazione della fase in
avanti. Il test set viene utilizzato, quindi, solo su un metodo statistico, quello
prescelto utilizzando (per esempio) il validation set.

67

Occorre prestare molta attenzione, perch`e spesso in rete, in letteratura e


anche in WEKA si fa molta confusione: la nomenclatura presentata in questo
paragrafo va tenuta come riferimento allinterno di questo insegnamento.

4.4
4.4.1

Support Vector Machines


Il problema del classificatore a massimo margine

Abbiamo analizzato nel precedente paragrafo pregi e difetti dei MLP: a


fronte di una classicazione ecace, lapprendimento tramite BP `e alquanto
problematico, a partire dal fatto che il problema da risolvere non `e convesso
e pu`o presentare miriadi di minimi locali.
Mentre molti studiosi tra Stati Uniti ed Europa dibattevano negli anni
60 e 70 su percettrone, XOR e MLP, in Unione Sovietica due matematici,
Vapnik e Chervonenkis, svilupparono una teoria, detta Statistical Learning
Theory (SLT ), che avrebbe trovato denitiva applicazione solo nella seconda
met`a degli anni 90 e che avrebbe rivoluzionato il mondo delle reti neurali. Lidea si basa su due concetti fondamentali, che gi`a in parte abbiamo
analizzato:
1. un classicatore devessere sucientemente complesso da riuscire a classicare ecacemente set di dati anche particolarmente mal posizionati;
2. tale classicatore non deve essere, per`o, troppo complicato, altrimenti
si subirebbero gli eetti dellovertting.
Dal bilanciamento dei punti 1 e 2 otteniamo il classicatore ottimo, che
si pu`o dimostrare essere il cosiddetto classicatore a massimo margine. Il
concetto pi`
u innovativo della teoria di Vapnik consta proprio nella denizione
del concetto di margine, ovvero di distanza fra i punti di due classi (per ora,
poniamoci nel caso biclasse) pi`
u vicini fra loro. Lillustrazione graca di Fig.
4.7 dovrebbe chiarire costa intendiamo per margine: abbiamo preso due set
di dati di due classi linearmente separabili e abbiamo tratteggiato i limiti del
margine massimo.
Nacque cos` la Support Vector Machine (SVM ): spiegheremo meglio a
tempo debito il signicato di questo nome. Liniziale scarso successo della
SVM `e dovuto a diversi fattori: innanzitutto, la teoria `e stata sviluppata in
68

8
6
4
2
0
2
4
6
8
10
6

Figura 4.7: Esempio di dataset linearmente separabile. Tratteggiati, abbiamo


rappresentato i limiti del massimo margine ottenibile.
piena Guerra Fredda nellURSS, quindi non `e stata volutamente divulgata al
di qua di Trieste, per dirla con Churchill; in secondo luogo, la SVM presentava non pochi problemi pratici. Per realizzare, infatti, lobiettivo di evitare
lovertting, era stata sviluppata una teoria, detta di VapnikChervonenkis
o VC Theory, che permetteva di calcolare il grado di complessit`a di una famiglia di classicatori, ma in maniera tuttaltro che pratica. Inoltre, la versione
originale di SVM era in grado di trattare solo dataset linearmente separabili.
Fu solo negli anni 90, al termine della Guerra Fredda, che Vapnik inizi`o a
lavorare negli USA presso il laboratorio di ricerca della AT&T e, grazie al fondamentale aiuto di Corinna Cortes, nacque la SVM cos` come la conosciamo
oggi [23, 8].
Consideriamo un dataset {(x1 , y1 ), ...., (xl , yl )}, dove xi m e yi =
1. La formulazione originaria di SVM (preCortes, potremmo dire) `e la
seguente:

min
w ,b

1
w 2
2
yi (w x + b) 1 i [1, . . . , l]

69

(4.28)
(4.29)

dove w `e un vettore di pesi, b `e il bias e il piano (o, a pi`


u dimensioni,
liperpiano) separatore tra le due classi `e descritto dallequazione
w x + b = 0,

(4.30)

analogamente a quanto visto per il percettrone. Si pu`o dimostrare che il margine `e pari a 1/ w 2 , quindi andiamo a massimizzarlo attraverso il problema
di minimo vincolato (4.28).
Il problema, in molti casi pratici, consisteva nel fatto che il vincolo (4.29)
era tuttaltro che facile da rispettare, perch`e prevedeva che non vi fosse sovrapposizione fra classi. Lidea fondamentale in questo senso `e stata lintroduzione di variabili di slack i 0, che permettessero ad alcuni dati di violare
il vincolo. La formulazione, detto problema primale di SVM, `e la seguente:

min
w ,b,

1
w 2 + CeT
2
yi (w x + b) 1 i

(4.31)
i [1, . . . , l]

i 0 i [1, . . . , l]

(4.32)
(4.33)

con ei = 1, i, e eT che rappresenta quindi la somma degli errori che commettiamo nella classicazione del training set. C `e un iperparametro che
bilancia la componente di massimizzazione del margine (tendenza allundertting) e quella di minimizzazione dellerrore (tendenza allovertting).
Lanalisi sarebbe, quindi, completa, se non fosse per il fatto che il problema (4.31) `e tuttaltro che banale da risolvere. Fortunatamente, utilizzando la
tecnica dei moltiplicatori di Lagrange, introducendo l moltiplicatori i (uno
per pattern), si ottiene il cosiddetto problema duale di SVM :

min

1 T
Q + r T
2
0 i C i [1, . . . , l]

(4.35)

yT = 0

(4.36)

(4.34)

dove ri = 1, i, e Q = {qij } ll `e una matrice simmetrica semidenita


positiva:
qij = yi yj K(xi , xj ),
70

(4.37)

Kernel
Lineare
Polinomiale
Gaussiano

Funzione
K(xi , xj ) = xi xj
K(xi , xj ) = (xi xj + 1)p


K(xi , xj ) = exp xi xj 22

Tabella 4.1: Funzioni kernel pi`


u comuni.

nella quale K(xi , xj ) `e detta funzione kernel ed eettua un mapping non


lineare degli ingressi in uno spazio (in generale) a maggiore dimensionalit`a,
dove la classicazione dovrebbe essere pi`
u semplice. In poche parole, la
SVM classica i dati mediante un separatore lineare, esattamente come il
nostro buon vecchio percettrone, ma in uno spazio in cui tale classicazione
`e pi`
u semplice; in tale spazio i dati vengono mappati attraverso i kernel. Le
funzioni kernel pi`
u comuni sono quelle presentate in Tab. 4.1: nel caso di
kernel gaussiano e polinomiale, possiamo notare lintroduzione di un ulteriore
iperparametro oltre a C, rispettivamente e p, che regolano lampiezza della
gaussiana e il grado del polinomio classicatore.
Torniamo al problema (4.34): il grande successo di SVM `e dovuto al fatto
che il problema duale `e un cosiddetto Constrained Convex Quadratic Problem
(CCQP), ovvero, essendo convesso, esso ha una sola soluzione ottima e non
presenta minimi locali. Rispetto ai MLP questo `e un vantaggio enorme: se
anche in SVM abbiamo uno (o pi`
u) iperparametro(/i) da settare, essi non
determinano la possibilit`a di trovare o meno una soluzione, solo stabiliranno
una maggiore o minore qualit`a di tale soluzione.

4.4.2

Apprendimento

La fase di training di SVM consta nel risolvere il problema duale e trovare i moltiplicatori di Lagrange ottimi e il bias b che, per quanto non
appaia in forma esplicita in (4.34), ci `e necessario poi per la fase in avanti. Per risolvere il problema duale sono state sviluppate moltissime tecniche,
ma la pi`
u usata `e la cosiddetta Sequential Minimal Optimization (SMO): il
CCQP viene decomposto in tanti problemi elementari, in cui viene trovata
` necessario trovare la soluzione per
la soluzione per due pattern per volta. E
due pattern semplicemente a causa della presenza del vincolo di uguaglianza

71

di Eq. (4.36), per il quale ad ogni spostamento di un i deve corrispondere


unaltra modica di un altro parametro.
SMO si ferma (in quanto ha trovato la soluzione ottima) nel momento
in cui sono rispettati tutti i vincoli di ottimalit`a (a meno di una pressata
precisione di macchina), detti condizioni di KarushKuhnTucker o KKT.
Per semplicit`a e brevit`a, non presentiamo in questo testo le KKT, per le
quali `e necessario esplicitare il passaggio da problema primale a duale: per
chi fosse interessato, consigliamo [6]. Le KKT, oltre a fornire la soluzione
ottima , consentono anche di calcolare il bias, considerando che liperpiano
separatore normalmente (anche se, in teoria, non sarebbe obbligatorio) viene
posto a met`a del margine. Ad esempio, recuperando lesempio di Fig. 4.7, il
piano separatore `e quello di Fig. 4.8.
8
6
4
2
0
2
4
6
8
10
6

Figura 4.8: Esempio di piano separatore: tratteggiati, i limiti del margine;


con tratto brevelungo, il piano separatore.
Una nota conclusiva: dato che la matrice Q ll , la SVM sore grandi
dimensioni non in termini di numero di feature, bens` in termini di numero
di pattern. Per questo, spesso, una feature selection applicata prima di SVM
spesso non risolve alcun problema e, anzi, talvolta peggiora la qualit`a della
classicazione.

72

4.4.3

Fase in avanti

La fase in avanti consiste nel vericare il segno della funzione che descrive
il piano separatore. In termini di problema primale, supponendo target del
tipo yi = 1, la classicazione di un nuovo pattern x avviene tramite:
y = (w x + b) ,

(4.38)

dove la funzione () `e denita come:

+1
(z) =
1

random(1)

se
se
se

z>0
z<0 .
z=0

(4.39)

Sfortunatamente, risolvendo il problema duale non possiamo conoscere


esplicitamente i pesi w. Si pu`o dimostrare che la forma nel duale per la
funzione di classicazione `e la seguente:

y=


yi i K (x, xi ) + b ,

(4.40)

i=1

per la quale conosciamo ogni termine. In pratica, i coecienti i pesano


quanto ogni dato del training set sia di supporto alla decisione nale, ovvero
al calcolo del target stimato y, come appare evidente dallEq. (4.40): da qui,
il nome Support Vector Machine, ovvero macchina a supporto vettoriale.

4.4.4

Estensione al caso multiclasse

Al contrario dei metodi n qui analizzati, lestensione al caso multiclasse


per SVM non `e banale. Tralasciando moltissime tecniche, seppur interessanti,
le pi`
u comunemente utilizzate sono la One Vs. All (OVA) e la All Vs. All
(AVA).
La tecnica OVA prevede che vengano istruite tante SVM in maniera tale
che ognuna delle classi venga distinta dalle altre mediante un problema binario. In pratica, supponendo di avere k classi, dovremo istruire k SVM (classe
1 vs. le altre, classe 2 vs. le altre,...) e attribuiremo un nuovo pattern alla
classe risultante dalle classicazioni binarie o, in caso di incertezza, alla classe con output analogico pi`
u alto. Per output analogico di SVM intendiamo
il valore

73

f (x) =

yii K (x, xi ) + b

(4.41)

i=1

che passiamo alla funzione ().


La tecnica AVA, invece, crea tante SVM binarie in modo tale che ogni
classe venga distinta contro ognuna delle altre classi. Supponendo di avere,
quindi, 3 classi avremo: 1 vs. 2, 1 vs. 3 e 2 vs. 3, per un totale di 3
classicatori. Il problema consta nel fatto che, al crescere del numero di
classi, il numero di classicatori necessari esplode, essendo pari a k(k 1)/2.
Tuttavia, AVA talvolta ore performance migliori rispetto a OVA ed `e quindi
` la tecnica utilizzata per la classicazione
unopzione valida se k `e piccolo. E
multiclasse da WEKA.
Unaltra tecnica `e lAugmented Binary [2], che prevede la modica del
dataset di training in modo tale da trasformarlo in un problema binario
risolvibile con una sola SVM (a fronte, per`o, di un aumento di dimensionalit`a
sia in termini di pattern che di feature): non approfondiremo, per`o, questa
tecnica.

4.4.5

SVM e la probabilit`
a

Facciamo un passo indietro e torniamo ai problemi binari. Spesso, una


uscita di tipo digitale 1 pu`o non essere suciente. Supponiamo di considerare il caso di una SVM utilizzata per identicare se un paziente in un
ospedale `e malato o no: se voi foste il paziente, vi basterebbe unuscita digitale o vorreste anche conoscere la probabilit`a di tale uscita, ovvero (in un
certo senso) il grado di sicurezza di tale output? Decisamente, unuscita di
tipo probabilistico `e spesso necessaria.
Una tecnica per convertire loutput analogico di SVM di Eq. (4.41) in
un valore di tipo probabilistico `e stata proposta da Platt [18]: la probabilit`a
di errore pe di classicazione per un pattern verr`a fornita attraverso lutilizzo
di una sigmoide
1

pe (x) =

,
(4.42)
1+
dove A e B sono due parametri che vengono ssati risolvendo un problema
di Maximum Likelihood. Non approfondiremo oltre questo argomento.
eAf (x)+B

74

4.4.6

Esempio di analisi in WEKA

Lanciato WEKA explorer, carichiamo il dataset weather, tanto per iniziare, e quindi spostiamoci sui tool di classicazione. Vogliamo iniziare con
un kernel lineare. Nella sottocategoria functions troviamo la SVM sotto le
mentite spoglie del nome SMO (SVM `e un marchio registrato). Analizziamo
le principali opzioni:
buildLogisticModel consente di ottenere luscita in termini probabilistici, utilizzando il metodo di Platt del paragrafo 4.4.5. Per ora,
settiamolo a false;
c `e il valore delliperparametro C. Settiamolo a 1;
cacheSize `e la dimensione della cache per la memorizzazione della
matrice Q;
debug rappresenta eventuali output di debug;
epsilon rappresenta lo zero di macchina per la rappresentazione di
coecienti, bias, ecc. Conviene lasciarlo invariato;
exponent `e lesponente p del kernel polinomiale. Settiamolo a p = 1;
featureSpaceNormalization permette di eettuare la normalizzazione
dei dati nello spazio non lineare descritto attraverso le funzioni kernel.
Per ora, lasciamolo a false;
lterType permette di applicare ltri ai dati. Settiamolo sulla normalizzazione del training set;
gamma `e il valore di per il kernel gaussiano. Settiamo = 1;
lowOrderTerms include o meno il termine +1 nel kernel polinomiale.
Per le denizioni di Tab. 4.1, setteremo questo parametro a false se
usiamo un kernel lineare e a true se il grado del polinomio p `e pi`
u
grande di 1. Per ora lasciamolo a false;
numFolds permette di utilizzare la cross validation (la analizzeremo
nei prossimi capitoli) per cercare i valori di A e B per la sigmoide della
probabilit`a. Settiamo il valore 1 per disattivare lopzione;
75

randomSeed `e il seed della funzione random per mescolare i dati


prima delleventuale cross validation;
toleranceParameter `e la tolleranza per il rispetto delle KKT. Il valore
di default 103 `e un buon valore;
useRBF `e un ag per utilizzare il kernel gaussiano (per ora, false).
Lanciamo lanalisi su tutto il training set. Notiamo che commettiamo
2 errori, lerrore medio `e abbastanza elevato e la Kappa `e buona ma non
eccezionale (0.68). Notiamo un peggioramento rispetto al MLP: questo perch`e il MLP `e nativamente non lineare, mentre noi abbiamo applicato una
classicazione lineare.
Settiamo useRBF a true e lasciamo invariati gli altri parametri: notiamo che lerrore si annulla del tutto e abbiamo una Kappa massima. Di
fatto, abbiamo il nostro classicatore ideale.
Mettiamo alla prova ora SVM con iris, e torniamo ad un kernel lineare.
WEKA utilizza il metodo AVA per gestire il problema multiclasse. Utilizziamo lintero training set, per il momento. Commettiamo 5 errori, e la Kappa
e lerrore medio si pongono a met`a tra MLP e NBC. Questa volta, anche con
un kernel gaussiano le cose non vanno meglio: sembrerebbe quindi il MLP
lottimo per iris. Lasciamo C = 1, ma settiamo = 100: otteniamo 0 errori
` stato suciente agire
e nuovamente il classicatore ottimo che cercavamo. E
un po sugli iperparametri per trovare una soluzione molto buona.
Con lultima congurazione usata, lanciamo lanalisi su 100 pattern di
training e vediamo come si comporta la SVM sui 50 rimanenti di validation. Commettiamo 3 errori, quindi avremmo la peggiore performance fra i
3 metodi. Settando = 10, per`o, si possono ottenere 2 soli errori.
Abbiamo brevemente visto, in questo paragrafo, la grande potenza di
SVM, con tutte le opzioni di cui dispone, ma anche il suo pi`
u grande limite:
la necessit`a molto forte di un tuning particolareggiato degli iperparametri.

4.4.7

SVM per feature selection

Algoritmo
Abbiamo analizzato nel paragrafo 3.5 la PCA e il suo utilizzo per la
selezione di feature. Purtroppo, la PCA utilizza come input il dataset che
76

forniamo e rielabora le feature al ne di creare nuove variabili attraverso le


proiezioni, ottenute mediante gli autovettori: questo signica che `e possibile
trovare un ranking di feature, ma riferito agli attributi nello spazio della PCA
(in cui poi saremmo costretti a lavorare), come mostrato anche negli esempi
del paragrafo 3.6. Non solo: la PCA `e un metodo unsupervised, quindi
non tiene conto della classe di appartenenza dei pattern. Semplicemente,
seleziona gli autovettori che forniscono un contributo di energia maggiore al
dataset, ma tali componenti potrebbero non favorire la classicazione (ad
esempio), ma addirittura renderla pi`
u complessa.
Se ci occupiamo di problemi di classicazione, il nostro desiderio potrebbe essere quello, invece, di utilizzare una tecnica in grado di estrarre le
componenti, che ci permettono di classicare meglio le nostre osservazioni, e
` possibile, quindi, utidi eliminare gli attributi dannosi per i nostri scopi. E
lizzare una SVM come algoritmo per eettuare la feature selection, cercando
di estrarre le componenti che pi`
u ci aiutano a creare un classicatore ecace.
La tecnica che andiamo a presentare venne proposta nel 2002 [11] e, dato un
set X con m feature, viene inizializzato creando due insiemi di indici, r e s,
rappresentanti rispettivamente gli attributi per i quali `e gi`a stato eettuato
ranking e le variabili ancora da ordinare. Al primo step, s contiene tutti gli
attributi del dataset originario. Lalgoritmo procede, quindi, iterativamente
no a quando s , seguendo alcuni semplici passi:
1. si crea un subset Xi di X, il quale include solo le feature contenute nel
set di indici s;
2. si risolve la SVM, vincolata ad essere una SVM lineare, e viene
calcolato il vettore ;
3. per ogni feature, si calcolano i pesi del primale wj , j = 1, ..., s 0 , dove
la norma0 rappresenta la cardinalit`a dellinsieme (i.e., il numero di
elementi che compongono il set);
4. si calcola il coeciente di ranking come cj = wj2 , in modo che limportanza di una variabile sia calcolata sulla base del suo contributo nel
calcolo del margine;
5. si trova la feature j = arg min c;

77

6. si elimina la feature j dal set s e la si inserisce in testa al vettore r. In


questo modo, lultima variabile, eliminata nel processo iterativo, risulta
essere la prima (la pi`
u informativa) nel vettore r.
Ovviamente, `e immediata la generalizzazione al caso in cui si vogliano eliminare pi`
u di una feature per step nel processo iterativo.
Non ci rimane che capire come possano essere calcolati i pesi wj2 per le
varie feature e il perch`e del vincolo ad avere una SVM lineare. Ancora una
volta, come gi`a per il bias, ci vengono in aiuto le KKT, per le quali otteniamo
che `e possibile calcolare i pesi del primale come:
w=

yii (xi ),

(4.43)

i=1

dove (x) `e una funzione tale per cui un kernel pu`o essere denito come:
K(xi , xj ) = (xi ) (xj ).

(4.44)

Avevamo detto che il kernel eettua un mapping non lineare ed implicito


dei dati, attraverso funzioni pi`
u o meno complesse; di fatto, un kernel `e
un prodotto scalare tra due funzioni (), le quali eettuano, in maniera
questa volta esplicita, tale mapping sui singoli dati. Se, nel caso lineare, vale
(x) = x, sfortunatamente per molti altri kernel (ad esempio, il gaussiano)
non `e possibile calcolare le (), ma solo K(xi , xj ). Ecco, quindi, il motivo
per il quale `e necessario utilizzare una SVM lineare: almeno, conosciamo la
() ed `e possibile procedere con il ranking.
Lestensione alla SVM nonlineare `e comunque abbastanza semplice, anche se dispendiosa (in termini di risorse). Il coeciente di ranking pu`o essere
denito come:
cd =

1
1
i j qij
i j qij ,
2 i j
2

(4.45)

i=d j=d

ovvero calcoliamo, in termini di peso nel margine e per ogni feature di s, linuenza di ogni feature. Per il resto, lalgoritmo `e identico a quello presentato
in precedenza.

78

Esempio di applicazione in WEKA


Lanciato WEKA explorer, dopo aver scelto il dataset weather ed esserci spostati nel tab per la selezione degli attributi, optiamo per lalgoritmo
SVMAttributeEval e analizziamone le opzioni:
attsToEliminatePErIteration rappresenta il numero di attributi da
eliminare per ogni step;
complexityParameter `e il C di SVM lineare. Sfortunatamente, WEKA non dispone di unestensione al caso nonlineare;
epsilonParameter ha lo stesso signicato visto nel caso di SVM;
lterType permette di applicare ltri al training set;
percentThreshold indica la percentuale di feature sotto la quale si
passa da uneliminazione percentuale ad una costante delle feature.
Spieghiamoci meglio. In alternativa ad eliminare un certo numero (ssato) di feature per step, `e possibile denire una percentuale sul totale
di attributi da estrarre; quando si scende sotto una certa soglia, si passa da uneliminazione di variabili percentuale ad una costante per ogni
step. Settiamo a 0 questa opzione, in modo che essa venga disattivata;
percentToEliminatePerIteration si riferisce alla percentuale di feature
da eliminare per step. Anche in questo caso, disattiviamo lopzione,
settandola a 0;
toleranceParameter `e la tolleranza per SMO: 103 `e normalmente un
valore accettabile.
Settato C = 1, lanciamo lanalisi e otteniamo un errore: tutte le variabili
devono essere quantitative o binarizzate. Lalgoritmo non applica lapposito
ltro in automatico: dobbiamo quindi spostarci nel tab di preprocessing e
applicare il ltro apposito per trasformare variabili nominali in binarie. Applicato il ltro, torniamo alla SVM per feature selection e lanciamo lanalisi.
Otteniamo la seguente classica:
Ranked attributes:
6 6 windy
79

5
4
3
2
1

2
1
5
4
3

outlook=overcast
outlook=sunny
humidity
temperature
outlook=rainy

Verichiamo ora la stabilit`a di tale ranking anche al variare di C. Settiamo, quindi, C = 100 e lanciamo nuovamente lanalisi. Otteniamo:
Ranked attributes:
6 5 humidity
5 2 outlook=overcast
4 4 temperature
3 6 windy
2 1 outlook=sunny
1 3 outlook=rainy
Notiamo che il ranking `e stato profondamente modicato: in questo caso,
sarebbe quindi necessario un doppio lavoro di ricerca di iperparametro per la
classicazione e per la feature selection. Comunque, in molti casi reali, dove
i dataset sono caratterizzati da un maggior numero di pattern, le indicazioni
del ranking sono spesso pi`
u stabili.

4.5
4.5.1

Decision Trees
La nascita degli alberi di decisione

Abbiamo analizzato no a questo punto molti metodi per la classicazione. Sfortunatamente, queste tecniche forniscono come output un modello,
al quale viene dato in pasto un nuovo pattern e che restituisce il target stimato dopo elaborazioni pi`
u o meno complesse sulle feature che compongono
listanza stessa. Nasce quindi il problema dellinterpretabilit`a del classicatore: avere un modello che classichi stupendamente, ma che non sia in
grado di spiegarci (almeno in termini comprensibili) il fenomeno sottostante,
spesso non ci basta. Nei casi in cui abbiamo bisogno di regole interpretabili,
le quali portano poi alla classicazione di un pattern, dobbiamo ricorrere agli
alberi di decisione (decision trees, DT ).
80

Introdotti dallaustraliano Quinlan [20], hanno avuto un ottimo successo


ed hanno subito diverse evoluzioni. La prima versione del software implementante i DT fu ID3, negli anni 80: in ID3 si potevano utilizzare solo variabili
di tipo qualitativo, lalbero era solo binario (2 sottoalberi per nodo al massimo) e lalgoritmo di apprendimento era piuttosto lento. Ciononostante, la
distribuzione gratuita del software1 (realizzato in C++) favor` la diusione
di ID3.
Agli inizi degli anni 90 nacque poi C4.5: evoluzione di ID3 (in verit`a, di
una versione intermedia fra i due freeware, ovvero M5), era in grado di gestire
i missing e le variabili continue (solo con split di tipo binario, dopo sar`a tutto
pi`
u chiaro). Inoltre, veniva introdotto un nuovo algoritmo di apprendimento,
pi`
u rapido, e la fase di pruning (che ci riserviamo di analizzare nei prossimi
paragra), che favorisce la generalizzazione del modello trovato. C4.5 ha
subito, nel corso degli anni, svariate migliorie, che hanno portato alla nascita
di una nuova versione del software per DT: Quinlan ha voluto mantenere il
nome C4.5, ma qualcuno ha ridenito questa ulteriore release come C4.5+
o, pi`
u comunemente, C4.8 (in quanto si trattava dellottava release di C4.5).
Anche C4.5 (o C4.8 che dir vogliate) `e disponibile free in rete sulla homepage
di Quinlan. Tra le novit`a in C4.8, la possibilit`a di gestire split multipli su
variabili continue e alcune nuove implementazioni per favorire lesecuzione
parallela su pi`
u processori.
Ultima evoluzione, non pi`
u free ma commerciale, See5/C5.0: miglioramenti al codice hanno portato ad un algoritmo pi`
u veloce e che necessita di
meno memoria durante lesecuzione. Non solo: nuovi algoritmi di pruning
migliorano le caratteristiche di generalizzazione in molti casi reali.
Come detto, il vantaggio dei DT `e loutput dellapprendimento: un modello sotto forma di regole if...then...else, dove gli if sono semplicemente
condizioni sul valore degli attributi. Un esempio di DT graco `e riportato in
Fig. 4.9. Spesso, linterpretabilit`a va a scapito di prestazioni e, soprattutto,
generalizzazione nei casi reali. Tutto sar`a pi`
u chiaro dopo aver analizzato in
breve lalgoritmo di learning.
1

http://www.rulequest.com/Personal/

81

Figura 4.9: Esempio di Decision Tree.

4.5.2

Apprendimento

Analizziamo lalgoritmo di apprendimento per C4.5 in versione originale, in quanto decisamente pi`
u semplice: solo alla ne di questo paragrafo
chiariremo le dierenze e le novit`a di C4.8. Lapprendimento consiste di due
step:
crezione dellalbero;
pruning dellalbero.
Creazione dellalbero
Per capire bene lapprendimento di un DT, dobbiamo partire col denire
alcune quantit`a. Al ne di comprendere meglio i parametri che andremo
a presentare, faremo degli esempi riferiti al dataset weather, presentato in
formato testuale in Tab. 4.2.
Deniamo come XG il dataset weather. Data una distribuzione di probabilit`a di una variabile, per esempio la distribuzione relativa di un attributo,
si denisce informativit`
a di una variabile la quantit`a
I(P ) =

82

pi log2 pi ,

(4.46)

Meteo
sunny
sunny
overcast
rainy
rainy
rainy
overcast
sunny
sunny
rainy
sunny
overcast
overcast
rainy

Temperatura
85
80
83
70
68
65
64
72
69
75
75
72
81
71

Umidit`
a
85
90
86
96
80
70
65
95
70
80
70
90
75
91

Vento Giocare a golf?


FALSE
no
TRUE
no
FALSE
yes
FALSE
yes
FALSE
yes
TRUE
no
TRUE
yes
FALSE
no
FALSE
yes
FALSE
yes
TRUE
yes
TRUE
yes
FALSE
yes
TRUE
no

Tabella 4.2: Dataset weather.

equivalente allentropia della variabile. Linformativit`a del nostro dataset, in


particolare, equivale allinformazione necessaria ad identicare una classe nel
nostro dataset. In termini matematici, vale
Inf o(X) = I(PX ) =

pi log2 pi ,

(4.47)

i=1

con k che rappresenta il numero di classi. Ad esempio, nel dataset del golf
abbiamo 9 esempi appartenenti alla classe yes e 5 alla no. Pertanto,
abbiamo
5
9
5
9
log2

log2
0.94.
(4.48)
14
14 14
14
Linformativit`a `e massima se le classi sono equidistribuite ed `e minima se
una classe `e assente.
Supponiamo per il momento di avere a disposizione solo variabili qualitative. Se dividiamo il nostro dataset X sulla base dei valori assunti da una
particolare variabile v, possiamo calcolare linformativit`a del nostro dataset
relativamente alle partizioni che andiamo a calcolare. In pratica, vogliamo
calcolare linformazione necessaria per identicare una classe in X, dopo che
Inf o (XG ) =

83

un particolare valore di una variabile qualitativa `e stato determinato. Ipotizzando che la variabile possa assumere n valori vi , i = 1, ..., n, possiamo
denire in breve Inf o(v, X):
Inf o(v, X) =

n

Xi

i=1

X 0

Inf o (Xi ) ,

(4.49)

nella quale Xi rappresentano i subset di X in cui un certo valore vi si mantiene


costante e la norma0 0 `e denita come la cardinalit`a di un dataset, ovvero
il numero di pattern che sono in esso contenuti. Nellesempio del golf, per
lattributo meteo possiamo calcolare linformativit`a relativa:
5
Inf o(v, XG ) =
I
14






2 3
4
3 2
5
4
,
, 0 + I
,
+ I
0.694. (4.50)
5 5
14
4
14
5 5

Inne, vogliamo trovare il guadagno, in termini di informativit`a, nellintroduzione della variabile v rispetto allidenticazione a priori di una classe.
Il guadagno viene denito come:
Gain(v, X) = Inf o(X) Inf o(v, X).

(4.51)

Nel caso del meteo, otteniamo dalle Eqq. (4.48) e (4.50)


Gain(v, XG ) = 0.94 0.694 0.246.

(4.52)

Si potrebbe mostrare che il guadagno della variabile vento `e circa 0.094,


quindi lintroduzione nellanalisi di meteo porta ad un vantaggio maggiore
rispetto allintroduzione di vento. Il guadagno sar`a esattamente la quantit`a
che guider`a la creazione del nostro albero.
Talvolta, in alternativa al guadagno, si utilizza il guadagno normalizzato,
denito come:
GainRatio(v, X) =

Gain(v, X)
,
SplitInf o(v, X)

(4.53)

dove la quantit`a SplitInf o(v, X) `e denita sulla base dellinformativit`a dovuta allo splitting del dataset in subset nei quali una variabile qualitativa
mantiene valore costante:

SplitInf o(v, X) = I

X1 0 X2 0
Xn 0
,
, ...,
X 0 X 0
X 0
84


.

(4.54)

Non ci rimane che generalizzare le quantit`a precedenti al caso di variabili


quantitative. Per quanto riguarda le feature discrete, se il numero di livelli
non `e enorme si pu`o supporre tali attributi come se fossero qualitativi ordinali. In caso contrario o per variabili continue, si segue questa procedura.
Si suppone che la variabile possa assumere solamente i valori presenti nel
dataset, ottenendo quindi un insieme vi , i = 1, ..., h. A questo punto, la
variabile continua devessere suddivisa (split) in due subset. Per trovare il
valore ottimo di split, si considerano tutti i vi e si calcolano tutti i guadagni
(eventualmente normalizzati) per i dataset splittati. Il punto di split che garantisce guadagno ottimo viene assunto come valore di riferimento, e il Gain
cos` calcolato diviene il guadagno dellattributo, che, a quel punto, diviene
una sorta di variabile qualitativa a tutti gli eetti.
Lalgoritmo di apprendimento, a questo punto, procede con chiamate
ricorsive alla funzione di creazione dellalbero (ipotizziamo di utilizzare Gain,
ma anche con il valore normalizzato non cambia assolutamente nulla), routine
che deniamo createTree e il cui schema `e il seguente:
1. se il set di dati passato in ingresso contiene solo dati appartenenti ad
una stessa classe, si inserisce una foglia corrispondente a tale classe e
si ritorna il controllo al chiamante;
2. se nel set di dati non sono pi`
u presenti feature, ma solo il target, si inserisce una foglia corrispondente al classe con frequenza assoluta maggiore
nel set e si ritorna il controllo al chiamante;
3. calcoliamo i Gain per tutti gli attributi;
4. sia v lattributo con Gain massimo. Tale feature pu`o assumere h
valori;
5. si creano gli h subset di dati contenenti ognuno un valore costante di
v . In essi, si elimina la feature v dal set;
6. per ognuno di essi, si crea un ramo dellalbero e si lancia la funzione
createTree.
Una volta conclusa loperazione, abbiamo generato lalbero. La principale
dierenza in C4.8 sta nella possibilit`a di non eliminare al passo 5 la variabile
dai subset se essa `e continua: questo permette split multipli sui valori delle
85

variabili continue. Questa scelta `e stata talvolta criticata, ma permette di


migliorare almeno parzialmente le performance del DT in casi in cui C4.5
andava profondamente in crisi, ovvero quando il numero di feature era molto
pi`
u alto del numero di pattern.
Notiamo che, se ci bloccassimo a questo punto, di fatto overtteremmo
moltissimo il training set, cosa che non vogliamo. Lunica (e molto parziale)
generalizzazione `e infatti contenuta nel passo 2, quando scegliamo la classe
di una foglia sulla base della classe pi`
u frequente. Il pruning viene proprio
utilizzato per favorire la generalizzazione dellalbero.
Pruning
Letteralmente, si traduce con potare: in eetti, rami dellalbero vengono
tagliati per favorire la generalizzazione del DT. Premesso che in letteratura
esistono innumerevoli tecniche per il pruning, una semplice strategia consiste
nel stimare lerrore nel caso di eliminazione di una parte dellalbero rispetto al
mantenimento della stessa. Se lerrore stimato `e sotto una certa soglia, `e considerato accettabile e il sottoalbero viene prunato; in caso contrario, viene
mantenuto. La stima dellerrore avviene utilizzando la formula di Laplace:
ln+k1
,
(4.55)
l+n
nella quale l `e il numero di pattern contenuti nel subset riferito ad un nodo,
n `e il numero di pattern del subset aerenti alla classe maggioritaria c e k `e
il numero totale di classi. Se err `e sotto la soglia, detta fattore di condenza,
si sostituisce il sottoalbero con una foglia corrispondente alla classe c.
err =

4.5.3

Fase in avanti

Nella fase in avanti, si applicano semplicemente le regole, trovate durante


lapprendimento, ad ogni nuovo pattern: luscita corrisponder`a alla foglia
individuata nel tree mediante tali regole.

4.5.4

Estensione al caso multiclasse

Come gi`a per NBC, MLP e 0R, i DT sono nativamente multiclasse,


quindi non necessitano di estensioni.

86

4.5.5

Esempio di analisi in WEKA

Avviato WEKA explorer, consideriamo weather e, nel tab per la classicazione, selezioniamo i DT. In particolare, dovremo andare nella sottocategoria trees, nella quale C4.8 (WEKA utilizza questa versione) `e identicato
come J4.8 (in quanto realizzato in Java e non in C++). Le opzioni a nostra
disposizione sono:
binarySplits forza split di tipo binario anche su variabili qualitative. Permette, di fatto, il ritorno a ID3. A noi interessa C4.8, quindi
manterremo a false questa opzione;
condenceFactor `e il fattore di condenza per il pruning: pi`
u basso
`e, pi`
u lalbero viene prunato. Valori tra 0.15 e 0.30 di solito sono i pi`
u
gettonati. Noi per ora settiamo 0.25;
debug sono le solite stampe di debug;
minNumObj permette di settare il numero minimo di istanze prima
di ssare una foglia nellalbero. Normalmente, si setta a 2;
numFolds `e il numero di fold per una tecnica di pruning ecace ma
complessa, la reduced error pruning, che non abbiamo analizzato;
reducedErrorPruning `e la citata tecnica. Settiamo a false;
saveInstanceData permette di salvare i dati di training nella visualizzazione dellalbero;
seed `e il seed per lalgoritmo di random per la reduced error pruning;
subtreeRaising permette allalgoritmo di pruning di valutare la modica dei sottoalberi al ne di migliorare le performance. Normalmente,
`e settato a true;
unpruned `e utilizzato per disattivare il pruning (false);
useLaplace permette di usare lindice di Laplace per il pruning. Dato che spesso `e un indice troppo conservativo, talvolta si disattiva
lopzione. Anche noi, in eetti, la setteremo a false.

87

Lanciamo lanalisi e otteniamo ottimi risultati, paragonabili a quelli che


solo una SVM non lineare era riuscita a raggiungere. Anche scegliendo come
dataset iris, i risultati sono ottimi: solamente 3 errori e una Kappa molto
vicina a 1 (0.97). C`e inoltre da considerare che il DT ci fornisce anche
linterpretabilit`a del modello, come mostrato in Fig. 4.10, quindi i parametri
di controllo sulla forma del sepalo e petalo del ore: potrebbe esserci utile.
Per attivare la visualizzazione dellalbero, cliccate col tasto destro sul modello
nel men`
u Result list e selezionate la visualizzazione dellalbero.

Figura 4.10: Albero di decisione per il dataset iris.


88

Sappiamo, per`o, che uno dei principali difetti di C4.8 `e la capacit`a di


generalizzazione. Pertanto, lultima prova consiste nellutilizzo di 100 dati
di training e 50 di validation. Lasciando inalterati i settaggi, si ottengono
2 errori sul validation: un ottimo risultato. Per controllare se il pruning
ha inuenza su questo risultato, settiamo a true lopzione unpruned e
analizziamo i risultati: commettiamo nuovamente soli 2 errori, il che signica
che gi`a il DT originale forniva unottima interpretazione del dataset.

89

Capitolo 5
Regressione
Terminata la nostra rassegna sugli algoritmi per la classicazione, passiamo al problema della regressione. Anche in questo caso, supporremo di avere
sempre a disposizione un dataset X, per il quale abbiamo denito un target
y  di tipo numerico. Lobiettivo che ci preggiamo `e trovare una relazione
fra feature e target per calcolare un output di tipo analogico ecace e con
un basso errore nella fase in avanti. Per vericare le prestazioni del nostro
modello, utilizzeremo i gi`a analizzati RMSE e MAE ed introdurremo lutilizzo del coeciente di correlazione r (vedi paragrafo 3.3) tra le uscite reali
del nostro training o volidation set e quelle stimate dal modello: ricordiamo
che r [1, 1] e r = 0 indica correlazione minima (e prestazioni pessime).

5.1

Zero Rules

Abbiamo analizzato nel paragrafo 4.1 il classicatore elementare 0R.


Chiameremo, per evitare confusione, 0RR il regressore Zero Rules.

5.1.1

Apprendimento

Analogamente a quanto visto per la classicazione, 0RR utilizza come


uscita del modello la media dei target numerici del training set.

5.1.2

Fase in avanti

Qualunque sia lingresso al sistema, 0RR restituisce come uscita stimata


la media dei target del training set.
90

5.1.3

Esempio di analisi in WEKA

` facile attendersi che la qualit`a di questo regressore sia davvero bassa; in


E
eetti, `e proprio cos`. Lanciamo WEKA explorer e selezioniamo come dataset
per la regressione CPU (le cpu.ar ): tramite 6 attributi (caratteristiche di
alcune CPU), si cerca di stimarne le performance. Anche per la regressione
utilizzeremo il tab classify (WEKA non fa distinzione di sorta).
Per utilizzare 0RR, selezioniamo lalgoritmo ZeroR (lo stesso usato nel
paragrafo 4.1.4) e lanciamo lanalisi. Il coeciente di correlazione ottenuto `e
pari a 0, il minimo possibile, e lerrore (sia in termine di MAE che di RMSE) `e
molto alto. Daltra parte, il sistema stima sempre, a prescindere dal pattern
in ingresso, unuscita y 99.33. Se forziamo WEKA a stampare a video
anche le uscite del nostro training set, notiamo che ci sono anche valori come
` quindi facile immaginare
800, per i quali commettiamo un errore enorme. E
che 0RR (come il suo omologo 0R) sia davvero poco usato.

5.2

Support Vector Regression

La Support Vector Regression (SVR) si basa sugli stessi principi della


SVM, con la quale condivide anche il principale autore [23]. Lidea di base
`e quella di cercare una funzione ignota y = f (x) che sia caratterizzata da
un errore basso (ma non nullo) rispetto ai dati di training. Esistono svariati
metodi per il calcolo dellerrore, ma noi analizzeremo solo uno dei pi`
u usati
(nonch`e quello utilizzato da WEKA): la insensitive loss function, per la
quale viene denita

|z| =

0
|z|

se
se

|z| <
.
|z|

(5.1)

Linconveniente di tale funzione di errore sta nel fatto che aggiungiamo un


nuovo iperparametro, , da settare in modo appropriato.
Il problema primale della SVR viene denito come [22]:

91


1
w 2 + C
(i + i)
2
i=1
l

min
w ,b,,

(5.2)

yi (w x + b) + i

i [1, . . . , l]

(5.3)

(w x + b) yi + i

i [1, . . . , l]

(5.4)

i , i

0 i [1, . . . , l]

(5.5)

ovvero in una forma sostanzialmente identica alla SVM a meno dellintroduzione di una doppia variabile di slack anch`e la stima delloutput yi possa
essere sia minore che maggiore rispetto alloutput reale yi. In Fig. 5.1, presentiamo un esempio graco che dovrebbe meglio chiarire il signicato del
doppio slack.

Figura 5.1: Rappresentazione graca della insensitive loss function.


Il problema duale di SVR pu`o essere calcolato in maniera analoga a quanto visto per la SVM utilizzando il metodo dei moltiplicatori di Lagrange,
ottenendo:

min
,



l l

i=1
j=1 (i i ) j j K(xi , xj )+


li=1 (i + i ) + li=1 yi (i i )
1
2

0 i , i C i [1, . . . , l]
l

(i i ) = 0.

(5.6)
(5.7)
(5.8)

i=1

5.2.1

Apprendimento

Tramite passaggi non troppo complessi, per i quali rimandiamo a [22],


`e possibile ricondurre il problema (5.6) alla formulazione duale (4.34) della
92

SVM, pertanto risolvibile usando SMO. Ed `e infatti proprio questo algoritmo che utilizzeremo per trovare la soluzione ottima, che nel caso di SVR
comprende sia che , oltre, ovviamente, al bias, calcolabile sfruttando le
KKT.

5.2.2

Fase in avanti

Anche la fase in avanti della SVR ricorda molto da vicino la funzione


feedforward di SVM. Nella fattispecie, vale:
y = f (x) =

(i i ) K (x, xi ) + b.

(5.9)

i=1

5.2.3

Esempio di analisi in WEKA

Lanciamo WEKA explorer, selezionando CPU come dataset. Nel tab di


classicazione, selezioniamo SMOreg dalla sottocategoria functions per
selezionare la SVR. Le opzioni sono sostanzialmente le stesse della SMO per
la classicazione, per le quali rimandiamo al paragrafo 4.4.6. Unico cambiamento, laggiunta dellopzione epsilon per la tolleranza dellomonima
insensitive loss function: setteremo = 0.001.
Partiamo con un kernel lineare e C = 1. Lanciamo lanalisi e otteniamo
risultati di sicuro buoni, ma non esaltanti: lerrore presenta un miglioramento
in termini assoluti pari a circa il 78% rispetto a 0RR, e il coeciente di
correlazione `e oltre 0.9. Con un kernel gaussiano possiamo fare di meglio?
Settiamo = 1 e otteniamo un errore veramente piccolo (miglioramento in
termini assoluti del 98% rispetto a 0RR) e un coeciente di correlazione
sostanzialmente equivalente a 1. Portiamo = 100: otteniamo addirittura
r = 1 e un errore quasi nullo. Davvero unottima performance.

5.3
5.3.1

Regression Trees
Apprendimento

I Regression Trees (RT) ricordano non solo nel nome i DT: infatti, lalgoritmo di apprendimento `e assolutamente identico a quanto analizzato nel
paragrafo 4.5.2. Lunica dierenza consta nello stabilire il valore di una foglia:
93

se, nel caso dei DT, si sceglieva la classe maggioritaria, nei RT si considera
la media dei target del subset sopravvissuto ai precedenti split.

5.3.2

Fase in avanti

Anche per la fase feedforward, rimandiamo alla discussione sui DT e, in


particolare, al paragrafo 4.5.3.
Alcune considerazioni vanno fatte, invece, sulle performance dei RT, spesso insucienti in molti casi reali. Anche lo stesso Quinlan ha portato avanti
i RT parallelamente ai DT a partire dallalgoritmo M5 (sviluppato prima di
C4.5) no a C4.5 stesso. Da C4.8 in poi, date le scarse performance degli RT
(specie in dataset caratterizzati da un alto rapporto fra numero di pattern e
numero di attributi), essi non sono stati pi`
u inclusi nei pacchetti distribuiti
in rete.

5.3.3

Esempio di analisi in WEKA

Anche WEKA risente dellabbandono nello sviluppo dei RT in C4.8: il


gi`a citato algoritmo J4.8 non contempla la possibilit`a di creare un albero per
regressione. A causa di ci`o, utilizzeremo lalgoritmo pi`
u vecchio (M5) [19],
reso (parzialmente) pi`
u performante da alcune migliorie in stile C4.8 [24]: tra
queste, lutilizzo di un problema di regressione lineare sulle foglie al posto
della media. Rimandiamo agli articoli citati per coloro che volessero maggiori
dettagli: le dierenze nel learning rispetto a C4.5/C4.8 sono minime.
Sono minime anche le dierenze in WEKA rispetto alle opzioni per J4.8:
selezionato lalgoritmo M5P (dove P indica Plus, ovvero dotato delle modiche apportate in [24]), i parametri da settare sono quelli analizzati nel
paragrafo 4.5.5; unica aggiunta, il parametro che regola limplementazione di
un RT buildRegressionTree (per noi, sar`a true). Merita una nota aggiuntiva il parametro minNumIstances: se nel caso dei DT avevamo settato
tale parametro a 2, ora conviene aumentare il numero minimo di istanze necessarie per consentire un ulteriore split. Se, infatti, nel calcolo del valore di
una foglia dovessero rimanere troppi pochi pattern, il valore mediato potrebbe essere di poco signicato. Un buon valore pu`o essere considerato 4; con
tanti pattern, meglio aumentare ulteriormente tale limite (ma non troppo,
altrimenti potremmo addirittura non riuscire a creare lalbero). Lopzione
useUnsmoothed equivale alla useLaplace dei DT.
94

Lanciamo lanalisi su CPU e otteniamo un errore piuttosto alto: otteniamo un miglioramento pari circa al solo 60% rispetto a 0RR e il coeciente
di correlazione non `e alto (circa 0.8).
SVR sembra il miglior algoritmo per la regressione: lo sar`a anche su un
validation set, separato dal training set? Trascurando 0RR, di sicuro pessimo, utilizziamo il 67% dei dati per il training e il restante come validation.
Con RT, otteniamo sul validation i tre seguenti valori:
r = 0.85;
errore MAE relativo a 0RR: 44.21%;
errore RMSE relativo a 0RR: 54.89%.
Lanciamo SVR con kernel gaussiano e i parametri identicati nel paragrafo 5.2.3. I valori ottenuti sono decisamente migliori:
r = 0.97;
errore MAE relativo a 0RR: 18.08%;
errore RMSE relativo a 0RR: 22.86%.

95

Capitolo 6
Clustering
Altro problema interessante da arontare in ottica BI `e il clustering: esso
consiste nel raggruppamento di elementi omogenei in un insieme di dati. Le
tecniche di clustering si basano sul concetto di distanza, che risulta quindi
centrale nellanalisi: elementi vicini (secondo una certa metrica) sono da
considerarsi omogenei e vanno inseriti nello stesso cluster; pattern eterogenei
saranno distanti ed inclusi in dierenti insiemi.
Le tecniche di clustering vengono utilizzate spesso quando si hanno a
disposizione dati eterogenei e si `e alla ricerca di elementi anomali: un caso
tipico riguarda le compagnie telefoniche, le quali utilizzano le tecniche di
clustering per cercare di individuare in anticipo gli utenti che diventeranno
morosi. Essi, infatti, tendono ad avere un comportamento diverso rispetto
alla normale utenza e le tecniche di clustering riescono sovente ad individuarli
o almeno a denire un cluster, nel quale vengono concentrati tutti gli utenti
che hanno unelevata probabilit`a di diventare morosi.
Per il clustering, in generale, non avremo a disposizione un target, ma
semplicemente un dataset X, composto da un certo numero di feature. Spesso
non si conosce nemmeno il numero di cluster k a priori: in questo caso,
k diviene una sorta di iperparametro, il cui valore ottimo va ricercato per
tentativi.

6.1

kMeans

Per quanto riguarda il clustering, analizzeremo solo un algoritmo: il k


` un algoritmo piuttosto semplice, ma spesso ecace. Negli ultimi
means. E
96

anni sono stati sviluppati anche algoritmi pi`


u complessi, ma un po per motivi
di tempo e un po per gli scarsi miglioramenti conseguiti tralasceremo tali
metodi.

6.1.1

Apprendimento

Lalgoritmo per lapprendimento `e di tipo iterativo e necessita di due


ingressi (oltre al training set X, ovviamente):
una metrica di distanza tra pattern: spesso viene usata la distanza euclidea x1 x2 22 . Ovviamente, usando tale distanza i cluster avranno
forma di (iper)sfere, il cui centro viene detto centroide;
il numero di cluster k < l (se non disponibile, bisogna procedere per
tentativi), dove l `e il numero di pattern di training.
La funzione che intendiamo minimizzare `e:
CKM

k



xj j 2 ,
= min
2
1 ,...,k
i=1 xj Sj

(6.1)

dove j , j = 1, ..., k, indicano i k centroidi e Sj sono i k cluster. In generale,


il centroide non `e un punto del training set, ma viene individuato mediando
la posizione dei punti appartenenti al cluster; nel caso in cui non si usi la
media delle coordinate dei punti del cluster, bens` la mediana, si parla di
kmedoids, di cui noi non ci occuperemo.
Lalgoritmo viene inizializzato scegliendo k centroidi randomicamente tra
i punti del training set. A questo punto, lapprendimento procede seguendo
questi step:
1. si calcolano i cluster, assegnando ogni pattern al cluster il cui centroide
dista meno;
2. si modicano i centroidi, ricalcolandoli sulla base dei nuovi punti appartenenti al cluster;
3. se i centroidi non sono stati modicati (o hanno subito un cambiamento
inferiore ad una certa soglia), lalgoritmo termina; altrimenti si procede
dal punto 1.
97

Ovviamente, la qualit`a del risultato dipende anche dallinizializzazione randomica dei centroidi: per questo motivo, `e spesso preferibile lanciare diverse
istanze di kmeans, partendo da centroidi dierenti. Alla ne, si opta per la
congurazione a CKM minimo.

6.1.2

Fase in avanti

La fase feedforward del kmeans consiste, per un nuovo pattern x, nel


calcolarne la distanza dai centroidi e nellattribuirlo al cluster il cui centroide
dista meno.

6.1.3

Esempio di analisi in WEKA

In WEKA non esistono dataset creati ad hoc per il clustering; daltra


parte, `e possibile utilizzare alcuni dataset, originalmente creati per la classicazione, e vedere come si comporta il kmeans in questi casi. Tra laltro,
per questi dataset conosciamo il numero di cluster, essendo coincidente con
il numero di classi.
Iniziamo con il gi`a noto iris e selezioniamo il tab Cluster; tra i metodi disponibili, optiamo per il SimpleKMeans, le cui opzioni riguardano
semplicemente il numero di cluster (per iris, k = 3) e il seed per lalgoritmo di inizializzazione random (inizialmente, lasciamo 10). Essendo il nostro
dataset iris nato per algoritmi di classicazione, selezioniamo tra i Cluster
mode lopzione Classes to cluster evaluation, che ci ore un termine di
paragone diretto con la classicazione nelloutput dei risultati.
Loutput del kmeans per la nostra analisi `e il seguente:
Number of iterations: 6
Within cluster sum of squared errors: 6.99811
Cluster centroids:
Cluster 0
Mean/Mode:
Std Devs:
Cluster 1
Mean/Mode:

5.8885 2.7377 4.3967 1.418


0.4487 0.2934 0.5269 0.2723
5.006

3.418

1.464
98

0.244

Std Devs:
Cluster 2
Mean/Mode:
Std Devs:

0.3525 0.381

0.1735 0.1072

6.8462 3.0821 5.7026 2.0795


0.5025 0.2799 0.5194 0.2811

ovvero ci viene presentato il numero di iterazioni totale, lerrore quadratico


intracluster (di fatto, il costo CKM ) e i centroidi dei cluster, sotto forma di
media (o moda nel caso di variabili qualitative) e varianza (usata pi`
u che altro
come indice di stabilit`a del centroide). Segue, quindi, il numero di pattern
del training set assegnato ad ogni cluster e una sorta di Confusion Matrix
riferita ai cluster. Conclude lelenco dei risultati il numero e la percentuale
di assegnazioni errate ai cluster (misurate sulla base dellappartenenza alle
varie classi). Nel caso di iris abbiamo l11.3% di errore (valore alto, se riferito
a quelli ottenuti nel capitolo 4).
Proviamo a modicare il seed e settiamolo a 356 (un valore a caso): otteniamo gli stessi risultati dellesecuzione precedente. Si possono provare molti
valori di seed e vedere se la percentuale precedente migliora. Unultima nota:
dallanalisi della pseudoConfusion Matrix, si evince che la classe 0 (Iris
setosa) viene sempre clusterizzata in modo perfetto e quindi, probabilmente,
`e facilmente distinguibile dalle altre due classi.

In fase di introduzione a questo capitolo, abbiamo detto che spesso il clustering `e utilizzato per trovare clienti morosi: in WEKA, `e incluso il dataset
labor, per classicazione binaria, in cui, sulla base del prolo di alcuni lavoratori, si prova a stimare se essi siano dei buoni lavoratori o meno. Proviamo
ad applicare il kmeans, con k = 2 e seed pari a 10: sbagliamo nel 23% circa
dei casi. Non solo, tali errori sono particolarmente gravi, in quanto quasi
per intero si riferiscono a cattivi lavoratori che vengono, invece, caratterizzati nella classe good. Proviamo a cambiare seed, settandolo a 1000: la
situazione peggiora (passiamo quasi al 40% di errore), e questa volta siamo
troppo cattivi (consideriamo troppi lavoratori come bad). Causa di queste scarse performance potrebbe essere la presenza di molti missing tra i dati
di labor.

99

Capitolo 7
Association rules
Uno dei primi esempi che abbiamo presentato in queste dispense riguardava la catena di supermercati, in cui volevamo cercare possibili associazioni
fra prodotti (o fra prodotto e acquirente) per regolamentare la disposizione
delle merci nei nostri supermercati. In questi casi, e in moltissimi altri nella
vita di tutti i giorni prima ancora che nel mondo della BI, `e necessario trovare regole che leghino fra loro alcune variabili; in termini di Data Mining,
dobbiamo trovare eventuali relazioni causali tra feature che descrivono una
qualche entit`a.
Gli algoritmi per trovare association rules ricevono, in ingresso, un dataset X, composto da l pattern e m feature, senza alcun target: lobiettivo `e
trovare relazioni del tipo if x1 = 10 x6 > 33 then x3 = false, ovvero relazioni
di causalit`a, similmente a quanto visto per i DT. In questo caso, a dierenza
degli alberi, per`o, il nostro obiettivo non `e trovare una sorta di percorso
ottimo che, dagli ingressi, attraverso un certo numero di regole ci porti verso
le uscite, bens` vogliamo trovare un qualsiasi legame che colleghi in qualche
modo due o pi`
u feature del nostro dataset. In termini meno informali, diremo
che, mentre i DT erano un metodo supervised (sapevamo cosa volevamo
trovare, ovvero il target), gli algoritmi di association rules sono unsupervised,
in quanto partiamo dal principio di non conoscere nulla del nostro dataset e di
voler cercare di ottenere informazioni attraverso lapplicazione di un qualche
algoritmo. Non solo: nel caso delle association rules lalgoritmo si conclude,
di fatto, con la fase di apprendimento, in quanto una vera fase in avanti non
esiste. Infatti, ci`o che ci interessa non `e trovare un modello da applicare a
runtime, ma solo identicare relazioni allinterno di X. Per questo motivo,

100

non deniremo per lalgoritmo che analizzeremo alcun indice di qualit`a, in


quanto non denibile di per s`e.
Esistono diversi algoritmi per trovare le regole di associazioni tra feature:
noi analizzeremo uno dei pi`
u usati, Apriori. A prescindere dallalgoritmo che
si vuole usare, normalmente le implementazioni di association rules prevedono di trattare solo feature di tipo qualitativo: qualora avessimo variabili
quantitative, dovremo procedere ad una discretizzazione ad hoc, magari utilizzando le tecniche gi`a brevemente analizzate per i DT (si veda paragrafo
4.5.2).

7.1

Apriori

Apriori [1] `e uno degli algoritmi in assoluto pi`


u utilizzati e si basa su
alcune quantit`a, piuttosto semplici da calcolare. Le regole che verranno trovate saranno nella forma if A then B, rappresentate alternativamente come
A B, dove A `e detto antecedente o body mentre B `e detto conseguente o
head. Al ne di chiarire meglio alcuni concetti, utilizzeremo come esempio il
dataset weather : dato che esso contiene, nella sua forma originaria, alcune
variabili quantitative, utilizzeremo la versione discretizzata di queste ultime.
Per semplicit`a, proponiamo il dataset in Tab. 7.1.

7.1.1

Apprendimento

Partiamo con alcune denizioni. Viene detto supporto la percentuale di


pattern nel dataset per le quali una determinata condizione `e vericata:
lA
,
(7.1)
l
dove lA rappresenta il numero di pattern in cui la condizione A `e soddisfatta
e l il numero totale di pattern nel dataset. Ad esempio, nel dataset di Tab.
7.1, abbiamo:
support(A) =

5
0.36.
(7.2)
14
Talvolta, il supporto viene inteso in termini assoluti e non relativi: in tal
caso, non si divide per l. Ad esempio, per il caso della condizione meteo =
rainy, avremmo un supporto pari a 5.
support(meteo = rainy) =

101

Meteo
sunny
sunny
overcast
rainy
rainy
rainy
overcast
sunny
sunny
rainy
sunny
overcast
overcast
rainy

Temperatura
hot
hot
hot
mild
cold
cold
cold
mild
cold
mild
mild
mild
hot
mild

Umidit`
a
high
high
high
high
normal
normal
normal
high
normal
normal
normal
high
normal
high

Vento Giocare a golf?


FALSE
no
TRUE
no
FALSE
yes
FALSE
yes
FALSE
yes
TRUE
no
TRUE
yes
FALSE
no
FALSE
yes
FALSE
yes
TRUE
yes
TRUE
yes
FALSE
yes
TRUE
no

Tabella 7.1: Dataset weather in forma discretizzata, con variabili solo di tipo
qualitativo.

102

Viene denita condenza di una regola A B il rapporto fra il supporto


della regola e il supporto dellantecedente A:
conf idence(A B) =

support(A B)
lAB
=
.
support(A)
lA

(7.3)

Consideriamo la regola if (meteo = sunny) then play = yes e calcoliamone


la condenza. Partiamo col denirne il supporto: `e immediato calcolare
che support(meteo = rainy play = yes) = 3/14 0.21. Abbiamo gi`a
calcolato che il supporto dellantecedente `e circa uguale a 0.36. Pertanto, la
condenza `e:
3
= 0.6.
(7.4)
5
Inne, deniamo il lift di una regola A B come il rapporto fra la
condenza della regola e il supporto del conseguente, ovvero:
conf idence(meteo = rainy play = yes) =

lif t(A B) =

support(A B)
conf idence(A B)
=
.
support(B)
support(A)support(B)

(7.5)

Ad esempio, si ottiene facilmente che lif t(meteo = rainy play = yes)


0.6
0.94. Si potrebbero denire altre quantit`a, talvolta utilizzate (leverage
0.64
e convinction su tutte), ma sono piuttosto complesse ed esulano dalla nostra
analisi. Ci interessa, invece, analizzare una misura, detta di signicanza
(signicance, interestingness): il chiquadro (2 ), spesso utilizzata per il
ranking delle regole di associazione e denita come:

2 (A B) =

(support(A B) support(A)support(B))2
.
support(A)support(B)

(7.6)

Denite le principali quantit`a che dovremo considerare nella creazione


delle regole, diamo unocchiata allalgoritmo. Apriori `e un metodo iterativo,
che procede creando cosiddetti itemset, ovvero insiemi di regole per le quali alcune condizioni sono vericate. Tipicamente, si pongono condizioni sul
supporto e sulla condenza o, in alternativa a questultima, sul lift. Unulteriore selezione pu`o essere fatta sul livello di signicanza di una regola, usando
2 . Supponiamo di aver denito una soglia di supporto minimo suppm e una
soglia di condenza minima confm . Analizziamo i passi di Apriori.

103

Al primo passo, vengono considerati i supporti di tutte le possibili combinazioni di variabili presenti in X. Le combinazioni il cui supporto supera
suppm entrano a far parte dellitemset 1.
Al passo successivo, si parte da tutte le relazioni dellitemset 1, si trovano tutte le loro possibili combinazioni e, per ognuna di esse, si calcolano
i supporti: entreranno a far parte dellitemset 2 tutte le combinazioni che
superano la soglia di supporto.
Si procede iterativamente a creare itemset, no a quando non si niscono
le possibili combinazioni e/o nessuna nuova combinazione ha un supporto
maggiore rispetto alla soglia. A questo punto, si trovano le prime regole, nelle
quali la relazione aggiunta nellultimo itemset risulta essere lhead mentre le
precedenti costituiscono il body. Ad esempio, se nellultimo itemset troviamo
una relazione del tipo:
humidity=normal windy=FALSE play=yes
play=yes costituir`a lhead e lAND delle due relazioni precedenti (humidity=
normal e windy=FALSE) sar`a il body. Una volta terminate queste relazioni,
si continua a creare regole utilizzando le ultime due istanze come head (es.,
windy=FALSE e play=yes) e le restanti come body (es., humidity=normal).
Il passo successivo consiste nel ripetere queste operazioni per tutti gli itemset
precedenti, escluso litemset 1 (per il quale avevamo ancora solo una relazione). Alla ne, per ogni regola viene calcolata la condenza e, se necessario, la
signicanza: vengono prese in considerazione le sole regole aventi condenza
maggiore di confm (e, se denita, signicanza maggiore di una soglia 2m ).

7.1.2

Esempio di analisi in WEKA (I)

Abbiamo detto che spesso, per analisi di tipo association rules, neces` questo
sitiamo di dataset composti da variabili solo di tipo qualitativo. E
il caso di WEKA. Se vogliamo, quindi, cominciare le nostre analisi con un
dataset semplice quale weather, dobbiamo utilizzarne la versione composta
da sole variabili qualitative, cio`e weather.nominal.
Nel tab Associate, selezioniamo il metodo Apriori, le cui opzioni
sono:
delta rappresenta il decremento iterativo del supporto dal suo valore
massimo al suo valore minimo (settiamo 0.05);
104

lowerBoundMinSupport `e il minimo supporto necessario anch`e un


insieme di relazioni venga ammesso in un itemset (0.3 `e un buon valore);
metricType denisce la metrica con cui vengono denite le regole
ammesse a far parte del set nale (useremo la condenza);
minMetric `e il valore minimo della metrica necessario anch`e la
regola venga inclusa nel set nale (settiamo 0.9);
numRules `e il numero massimo di regole richieste (ad esempio, 10
regole);
outputItemSets stampa a video i vari itemset (`e utile settarlo a true
per analizzare come funziona lalgoritmo);
removeAllMissingColumns rimuove feature in cui sono presenti missing (false);
signicanceLevel `e il livello di signicanza minimo 2 (disattiviamo
lopzione settando -1);
upperBoundMinSupport `e il massimo supporto necessario (1);
verbose produce alcune stampe di debug.
Lanciamo lanalisi e otteniamo le seguenti regole:
1. humidity=normal windy=FALSE 4 ==> play=yes 4
conf:(1)
2. temperature=cool 4 ==> humidity=normal 4
conf:(1)
3. outlook=overcast 4 ==> play=yes 4
conf:(1)
Avevamo richiesto 10 regole, ma solo 3 riescono a soddisfare i vincoli su
supporto e condenza. Se abbassiamo il limite minimo per il supporto a 0.2,
otteniamo:
1.
2.
3.
4.
5.
6.

humidity=normal windy=FALSE 4 ==> play=yes 4


conf:(1)
temperature=cool 4 ==> humidity=normal 4
conf:(1)
outlook=overcast 4 ==> play=yes 4
conf:(1)
temperature=cool play=yes 3 ==> humidity=normal 3 conf:(1)
outlook=rainy windy=FALSE 3 ==> play=yes 3
conf:(1)
outlook=rainy play=yes 3 ==> windy=FALSE 3
conf:(1)
105

7. outlook=sunny humidity=high 3 ==> play=no 3


8. outlook=sunny play=no 3 ==> humidity=high 3

conf:(1)
conf:(1)

ovvero qualche regola in pi`


u, ma a minore supporto (solo 3 esempi in tutto
il dataset).

7.1.3

Esempio di analisi in WEKA (II)

E se avessimo solamente a disposizione un dataset con variabili quantitative? Perch`e non possiamo trovare relazioni, ad esempio, in iris? Per poter
utilizzare anche questi dataset, `e necessario applicare un ltro ai dati stessi.
Nel tab di preprocessing dei dati, selezioniamo iris e optiamo per il ltro
Discretize nelle sottocategorie unsupervised e attribute. Le opzioni
del ltro sono:
attributeIndices rappresenta lelenco degli indici degli attributi numerici da discretizzare (last-rst indica che vogliamo discretizzare
tutti gli attributi, se numerici);
bins rappresenta il numero di intervalli (per esempio, potremmo
settarlo a 5);
desiredWeightOfIstancesPerInterval permette di settare un peso per
ogni pattern in ogni intervallo (disattiveremo lopzione, settando -1);
ndNumBins ricerca automaticamente il numero di intervalli in cui
splittare una feature (tra 1 e il valore di bins). Settiamo true;
invertSelection discretizza solo le variabili non selezionate nella prima
opzione (false);
makeBinary binarizza le feature dopo averle discretizzate (false);
useEqualFrequency trova gli intervalli sulla base di indici di frequenza
e non in intervalli di uguale dimensione (false).
Applichiamo il ltro e, quindi, lanciamo lanalisi di Apriori, richiedendo
un supporto minimo del 30%. Troviamo le seguenti regole:

106

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

petallength=(-inf-2.18] 50 ==> class=Iris-setosa 50


conf:(1)
class=Iris-setosa 50 ==> petallength=(-inf-2.18] 50
conf:(1)
petalwidth=(-inf-0.58] 49 ==> petallength=(-inf-2.18] class=Iris-setosa
petallength=(-inf-2.18] petalwidth=(-inf-0.58] 49 ==> class=Iris-setosa
petalwidth=(-inf-0.58] class=Iris-setosa 49 ==> petallength=(-inf-2.18]
petalwidth=(-inf-0.58] 49 ==> class=Iris-setosa 49
conf:(1)
petalwidth=(-inf-0.58] 49 ==> petallength=(-inf-2.18] 49
conf:(1)
petallength=(-inf-2.18] 50 ==> petalwidth=(-inf-0.58] class=Iris-setosa
class=Iris-setosa 50 ==> petallength=(-inf-2.18] petalwidth=(-inf-0.58]
petallength=(-inf-2.18] class=Iris-setosa 50 ==> petalwidth=(-inf-0.58]

49 conf:(1)
49 conf:(1)
49 conf:(1)

49 conf:(0.98)
49 conf:(0.98)
49 conf:(0.98)

Siamo quindi in grado di trovare 10 regole anche su variabili quantitative: la


prima regola potrebbe infatti essere scritta anche come If petal length 2.18
then class = Irissetosa.
Una nota conclusiva: avevamo notato gi`a nel capitolo sul clustering al
paragrafo 6.1.3 che, in iris, la classe Irissetosa era particolarmente facile
da riconoscere: in eetti, Apriori ci spiega perch`e. Infatti, `e suciente controllare la lunghezza del petalo: se `e sotto una certa cifra (2.18), abbiamo la
certezza (condenza pari al 100%) che si tratti di questo tipo di ore.

107

Capitolo 8
Valutazione comparativa di
algoritmi di Data Mining
8.1

Metodi (pratici) per la comparazione fra


algoritmi

Premettiamo subito che in questo capitolo non aronteremo davvero nei


particolari la comparazione fra algoritmi, che sarebbe davvero un argomento dicile ed impegnativo, n`e analizzeremo tutte le tecniche disponibili in
letteratura. Quello che intendiamo fare, invece, `e proporre alcune semplici metodologie, che possono essere usate anche in WEKA e permettono di
ottenere velocemente semplici parametri di valutazione di metodi statistici.

8.1.1

Training set (TS)

Il primo metodo, il pi`


u semplice, prevede la valutazione delle performance
di un algoritmo di DM sulla base del numero di errori che il modello commette
` la tecnica che abbiamo utilizzato nelle nostre prime analisi
sul training set. E
in WEKA. Il problema sta nel fatto che valutare le performance di un metodo
sugli stessi dati su cui `e stato creato il modello pu`o portare ad overtting:
per questo motivo, questa tecnica `e davvero poco utilizzata.

108

8.1.2

Validation set (VS)

Molto pi`
u appropriato per i nostri scopi `e utilizzare un validation set
separato dal training set, che possiamo fornire in un le separato o ottenere
splittando in training e validation il dataset che abbiamo a disposizione.
Selezioneremo alla ne il modello che, istruito sul training set, meglio si
comporta sul validation set.

8.1.3

KFold Cross Validation (KCV)

La tecnica di valutazione forse pi`


u usata `e, per`o, la kFold Cross Validation (KCV ): essa prevede che il dataset che abbiamo a disposizione venga
diviso in k subset, detti fold, di uguali dimensioni (nel caso in cui il numero di
pattern l non sia esattamente divisibile per k, normalmente, si duplicano dei
dati presenti nel dataset originario). A turno, k 1 fold vengono usate per
lapprendimento e la restante fold come validation: ad esempio, ipotizzando
10 fold, al primo passo useremo le fold dalla 1 alla 9 per il training e la 10
come validation; al secondo step, dalla 1 alla 8 e la 10 come training e la 9
come validation, e cos` via. Su ogni fold di validation, `e possibile calcolare il
numero di errori ei , i = 1, ..., k. Alla ne, il parametro per il confronto tra
metodi sar`a pari a:
k

i=1 ei

.
(8.1)
l
Il vantaggio della KCV `e che, se abbiamo un singolo dataset (quindi,
senza validation separato), non sprechiamo dati per il training, dato che a
turno tutti i pattern vengono usati per lapprendimento; non solo, abbiamo
anche un validation set molto grande, essendo alla ne composto anchesso,
di fatto, da tutte le istanze del dataset. Lo svantaggio consiste nel dover
ripetere k volte lapprendimento: questo signica lunghi tempi di attesa nel
caso di dataset con molti pattern di training.
Un paio di note conclusive. Spesso, prima di applicare la KCV `e necessario un rimescolamento casuale dei dati del dataset: questo per evitare che
una fold per il training sia costituita da soli dati di una classe, ad esempio.
Fissare k potrebbe essere considerato come una ricerca di iperparametro: in
verit`a, la pratica ha ampiamente dimostrato che k = 5 e k = 10 sono valori
ottimi da utilizzare.
e=

109

Metodo
Errore TS
NBC
18.33%
MLP
2.33%
SVM lin
3.27%
SVM gauss
1.00%
1.00%
DT

Errore test
22.96%
4.81%
5.31%
2.84%
3.83%

Tabella 8.1: Risultati per il metodo training set (TS): in grassetto, le migliori
percentuali ottenute.

8.2

Analisi in WEKA explorer

Per le nostre prove, considereremo un dataset nora mai introdotto, segment, rappresentante porzioni di immagini da classicare in 7 classi sulla base
del materiale in esse rappresentato (erba, cemento,...). Il dataset `e composto
da ben 1500 pattern, ma, cosa a noi ancor pi`
u gradita, `e incluso un test set:
ci`o signica che partiremo a confrontare metodi statistici per la classicazione (NBC, MLP, SVM lineare, SVM gaussiana, DT), ne sceglieremo uno
per ogni tecnica di confronto (TS, VS, KCV) e vericheremo poi sul test set
quale si comportava meglio. In particolare, per SVM useremo C = 100 e, nel
caso di SVM gaussiana, = 1.

8.2.1

Metodo TS

Carichiamo il dataset di training in WEKA explorer. Partiamo con il


TS. I risultati sono presentati in Tab. 8.1: i metodi migliori appaiono essere
la SVM gaussiana e gli alberi. Per valutare lerrore sul le di test, utilizziamo
Supplied test set nel men`
u Test options e selezioniamo il le di test per
segment. Notiamo che le previsioni di stima sul training set sono eettivamente vericate: i metodi che meglio si comportano in termini di errore sul
training set sono quelli che meglio vanno anche sul test set. In questo caso,
quindi, presumiamo che il training set sia un buon campione del problema
che stiamo analizzando.
Ciononostante, notiamo due cose:
il metodo TS stima come ugualmente performanti SVM gaussiana e
DT, anche se, in verit`a, sul test set vi `e poi una dierenza pari quasi
110

Metodo
Errore VS Errore test
NBC
19.87%
22.96%
MLP
4.40%
4.81%
SVM lin
4.93%
5.31%
SVM gauss
3.47%
2.84%
5.60%
3.83%
DT
Tabella 8.2: Risultati per il metodo validation set (VS): in grassetto, le
migliori percentuali ottenute.

all1%. Daltra parte, era lecito attenderselo: sappiamo che i DT, al di


l`a del pruning, tendono allovertting;
la stima dellerrore `e molto ottimistica, nonostante si stia trattando un
buon campione: nella migliore delle ipotesi, tra errore sul test set e sul
train c`e una dierenza quasi del 2%.

8.2.2

Metodo VS

Usiamo ora il 50% dei dati per il training e lasciamo la restante met`a
come validation. Anche in questo caso, analizziamo i risultati in Tab. 8.2:
il risultato migliore corrisponde solo alla SVM gaussiana, che eettivamente
`e quella che meglio si comporta sul test set. Non solo: la stima dellerrore
sul validation set `e decisamente migliore rispetto a quella del training set,
essendo addirittura peggiorativa rispetto al rate ottenuto.

8.2.3

Metodo KCV

Terminiamo lanalisi con la KCV, settando k = 10 e selezionando lapposita opzione in WEKA explorer tra le Test options. Presentiamo in Tab.
8.3 i risultati per la Cross Validation: anche in questo caso, la SVM gaussiana risulta il metodo statistico che meglio si comporta. La stima dellerrore,
in pi`
u, `e molto buona, dato che la dierenza `e nellordine dello 0.1%.

111

Metodo
NBC
MLP
SVM lin
SVM gauss
DT

Errore KCV
18.93%
3.27%
4.13%
2.73%
4.27%

Errore test
22.96%
4.81%
5.31%
2.84%
3.83%

Tabella 8.3: Risultati per il metodo kFold Cross Validation (KCV): in


grassetto, le migliori percentuali ottenute.

8.3

Analisi in WEKA KF

Fino ad ora, nella nostra analisi, abbiamo utilizzato solamente WEKA


explorer. Tra i vari applicativi disponibili in WEKA `e per`o presente anche
un altro strumento molto comodo: WEKA Knowledge Flow, che chiameremo
KF per brevit`a. KF `e molto simile nellaspetto e nellutilit`a al tool Simulink
di MATLAB: in pratica, il modello simulativo viene creato come schema a
blocchi, in cui ad ogni blocco corrisponde una particolare elaborazione sul
dato.
` impensabile riuscire ad analizzare ogni blocco di KF, ma la guida diE
sponibile con il software `e abbastanza completa e userfriendly. Noi andremo
a creare, invece, un modello passopasso per vedere come si pu`o implementare quanto gi`a fatto con WEKA explorer in questo strumento, da molti punti
di vista ancora pi`
u potente.
KF `e costituito da una serie di tab, ognuno rappresentante: blocchi per
linput dati; blocchi per loutput dati; ltri da applicare al dataset; algoritmi
per classicazione e regressione; algoritmi di clustering; blocchi per la valutazioni delle performance dei metodi statistici; blocchi per la visualizzazione
delloutput a video.
Ci poniamo come obiettivo la realizzazione di una valutazione comparativa tra una SVM gaussiana e una SVM lineare sul dataset segment con una
KCV a 10 fold. Vediamo passopasso come fare.

112

8.3.1

Input

Il primo passo corrisponde alla selezione del dataset. Essendo sotto forma
di le ar, selezioniamo il tab per gli input e trasciniamo nello spazio per la
creazione del modello il blocco ArLoader. Clicchiamo col tasto destro e
conguriamo il blocco, selezionando il le per il nostro dataset.

8.3.2

Selezione della classe

Caricato il dataset, siamo interessati ad un problema di classicazione.


Pertanto, dobbiamo denire un attributo come classe: nel tab Evaluation,
trasciniamo nel progetto il blocco Class Assigner.
A questo punto, dobbiamo connettere al blocco il dataset, caricato al
passo 8.3.1: clicchiamo sul blocco ArLoader col tasto destro e, nella
sottocategoria Connections, colleghiamo il dataset con il Class Assigner.
Non ci resta che congurare il blocco Class Assigner, usando sempre il
tasto destro: selezioneremo lattributo voluto (class) come classe. Il presso
(Nom) indica che lattributo `e di tipo nominale.

8.3.3

Creazione delle k fold per la KCV

Per creare le k fold per la cross validation, aggiungiamo il blocco Cross


Validation Fold Maker, disponibile sempre nel tab Evaluation. Conguriamolo per utilizzare 10 fold, quindi connettiamo il dataset in output dal
blocco Class Assigner a Cross Validation Fold Maker.

8.3.4

Inserimento dei blocchi per le SVM

A questo punto, non ci rimane che aggiungere i blocchi per la SVM


lineare e la SVM gaussiana. Nel tab Classiers, troviamo SMO: trasciniamo due istanze nel nostro progetto, congurandone una per la SVM
lineare (supponiamo C = 100) e laltra per la SVM gaussiana (C = 100 e
= 1).
Aggiungiamo le connessioni: in uscita dal blocco Cross Validation Fold
Maker, connettiamo sia TrainingSet che TestSet (che, in verit`a, `e il
validation set) ai due blocchi per la SVM. A questo punto, tutto `e pronto
per la valutazione comparativa: ci manca solo un blocco per elaborare i
risultati e uno per visualizzare questi ultimi a video.
113

8.3.5

Elaborazione dei risultati

Sappiamo che il parametro di valutazione della KCV consiste nellerrore


commesso sulle varie istanze del validation set. Abbiamo, quindi, necessit`a
di un blocco che riunisca tali valori: Classier Performance Evaluator,
disponibile nel tab Evaluation, ha proprio questo scopo.
Aggiunti due blocchi (uno per ogni SVM), connettiamo il batchClassier in uscita dai blocchi SMO con Classier Performance Evaluator, in
modo da valutare le performance dei classicatori.

8.3.6

Uscita a video

Ultimo step: porre in uscita a video i nostri risultati. Aggiungiamo, quindi, un blocco Text Viewer (disponibile nel tab Visualization) e connettiamo le uscite testuali (text) dei blocchi Classier Performance Evaluator
al visualizzatore. Non ci resta che eseguire il tutto.

Figura 8.1: Esempio di schema realizzato in WEKA KF.

8.3.7

Configurazione finale ed esecuzione

Abbiamo terminato gli step necessari, dovremmo avere ora a disposizione una struttura tipo quella mostrata in Fig. 8.1. Non ci resta che lanciare
lanalisi: clicchiamo col tasto destro su ArLoader e, nella sottocategoria
Actions, optiamo per Start loading. Attendiamo il termine dellesecuzione (ci viene comunicato nella barra dei log sottostante), quindi clicchiamo col
tasto destro sul Text viewer e selezioniamo Show results: nella nestra
di testo, sulla sinistra, possiamo selezionare i risultati per i metodi inseriti
` facilmente vericabile che i valori, come ci si
nel progetto e visualizzarli. E
attendeva, sono gli stessi di Tab. 8.3.

114

8.4

Note conclusive

` possibile che, specialmente nel caso si utilizzi la KCV su dataset con un


E
numero di pattern elevato, i modelli creati per la valutazione di un metodo
statistico siano piuttosto ingombranti in termini di occupazione di memoria. Spesso, si deve ricorrere ad un heap pi`
u capiente: a questo scopo, `e
necessario ricompilare WEKA da riga di comando. In particolare, listruzione
di compilazione diventa:
java -Xmx512m -jar weka.jar
identica alla riga di compilazione originaria, presentata nel paragrafo 1.4, a
meno dellopzione di compilazione -Xmx, indicante la dimensione dello stack,
seguita dalla dimensione di questultimo (nel caso citato, 512 MB).

115

Bibliografia
[1] R. Agrawal e R. Srikant. Fast algorithms for mining association rules in large
databases. In Proc. of the Int. Conf. on Very Large Databases, pagg. 478499,
1994.
[2] D. Anguita, S. Ridella, e D. Sterpi. Testing the augmented binary multiclass
svm on microarray data. In Proc. of the IEEE Int. Joint Conf. on Neural
Networks, IJCNN 2006, pagg. 19661968, 2006.
[3] M. Aupetit. Homogeneous bipartition based on multidimensional ranking.
In Proc. of the European Symposium on Artificial Neural Networks, ESANN
2008, 2008.
[4] V. Barnett. Elements of Sampling Theory. Arnold, 1975.
[5] M. Berry e G. Lino. Data Mining Techniques for Marketing, Sales, and
Customer Support. John Wiley & Sons, 1997.
[6] C. J. C. Burges. A tutorial on support vector machines for classication.
Data Mining and Knowledge Discovery, 2:121167, 1998.
[7] J. Cohen. A coecient of agreement for nominal scales. Educational and
Psychological Measurement, 20(1):3746, 1960.
[8] C. Cortes e V. Vapnik. Supportvector networks. Machine Learning, 27:273
297, 1991.
[9] U. Fayaad. Proceedings of the First Int. Conf. on Knowledge Discovery and
Data Mining. Montreal, Canada, 1995.
[10] P. Giudici. Applied Data Mining: Statistical Methods for Business and
Industry. John Wiley & Sons, 2003.
[11] I. Guyon, J. Weston, S. Barnhill, e V. Vapnik. Gene selection for cancer
classication using support vector machines. Machine Learning, 46:389422,
2002.
[12] G. H. John e P. Langley. Estimating continuous distributions in bayesian
classiers. In Proc. of the 11th Int. Conf. on Uncertainity in Artificial
Intelligence, pagg. 338345, 1998.
[13] I. T. Jollie. Principal component analysis. In Springer Series in Statistics,
2002.

116

[14] R. Kimball e M. Ross. The Data Warehouse Toolkit (2nd edition). John
Wiley & Sons, 2002.
[15] T. Kohonen. SelfOrganizing Maps (3rd edition). Springer, 2001.
[16] M. L. Minsky e S. A. Papert. Perceptrons. Cambridge Press, 1969.
[17] K. Pearson. On lines and planes of closest t to systems of points in space.
Philosophical Magazine, 2(6):559572, 1901.
[18] J. C. Plat. Probabilistic outputs for support vector machines and comparison
to regularized likelihood methods. In Advances in Large Margin Classifiers.
MIT Press, 2000.
[19] J. R. Quinlan. Learning with continuous classes. In Proc. of the Australian
Joint Conf. on Artificial Intelligence, pagg. 343348, 1992.
[20] J. R. Quinlan. C4.5: Programs for Machine Learning. Morgan Kaufmann,
1993.
[21] F. Rosenblatt. The perceptron: A probabilistic model for information storage
and organization in the brain. Psychological Review, 65(6):386408, 1958.
[22] A. J. Smola e B. Schoelkopf. A tutorial on support vector regression.
Rapporto tecnico, Statistics and Computing, 1998.
[23] V. Vapnik. The Nature of Statistical Learning Theory. Springer, 2001.
[24] Y. Wang e I. H. Witten. Induction of model trees for predicting continuous
classes. In Proc. of the European Conference on Machine Learning, 1997.

117

S-ar putea să vă placă și