Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Tesi di Laurea
Relatore Candidato
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 Predictive Analytics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1 Cose la Predictive Analytics? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Le Data Science dietro la Predictive Analytics . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Statistica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2 Data Mining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.3 Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Applicazioni Pratiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 I Dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Il processo di analisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5.1 Identificazione dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5.2 Strutturazione dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5.3 Preparazione dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.5.4 Scelta del modello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.5.5 Implementazione del modello . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.5.6 Valutazione del modello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6 Critiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1 Cosa sono i Big Data? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Big Data e Predictive Analytics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Hardware e Calcolo distribuito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4 Strumenti di Analisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4.1 MapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4.2 Apache Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4.3 Ecosistema Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3 I Modelli di Previsione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.1 I Modelli come Strumento di Previsione . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2 Data Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2.1 K-Means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.2.2 K-nearest neighbors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
VI Indice
Ringraziamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.1 Il logo di R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.2 Lesempio di un dataset utilizzato da R . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.3 Risultati della funzione predict() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.4 Albero di decisione realizzato tramite R . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.5 Il logo di Weka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.6 Linterfaccia Explorer di Weka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.7 Alcuni dei modelli di classificazione disponibili in Weka . . . . . . . . . . . . 89
5.8 Il logo di Orange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.9 Linterfaccia grafica di Orange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.10 Linterfaccia grafica di Azure Machine Learning . . . . . . . . . . . . . . . . . . . 93
5.11 Il logo di Google Cloud Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.12 Metodo richiamato dallinterfaccia di Google Prediction API . . . . . . . . 94
1.2.1 Statistica
Comprende metodi per la raccolta e lanalisi dei dati relativi a determinati fenomeni
al fine di studiarli quando non e possibile avere una completa conoscenza di essi.
Utilizza formule matematiche per studiare tali fenomeni quando e presente una
incertezza, cioe quando non e possibile osservare in modo deterministico la quantita
o la qualita degli attributi del fenomeno. Essa quinti strettamente legata alle teoria
delle probabilita. Tramite la statistica e possibile identificare relazioni tra i dati,
cosa molto utile nella fase di comprensione degli stessi. Al contrario del data mining,
tuttavia, la statistica non prevede il filtraggio e la preparazione dei dati.
La statistica si puo suddividere in due branchie principali: statistica descrittiva
e statistica inferenziale. La prima ha come obiettivo quello di descrivere gli aspetti
piu rilevanti dei dati osservati e sintetizzarli attraverso strumenti grafici e indica-
tori come media, varianza, etc. La seconda cerca di stabilire dei comportamenti e
delle caratteristiche delle variabili ottenute con un certo grado di precisione prede-
terminato e, quindi, spesso descrivendoli in termini di densita di distribuzione di
probabilita. Usando solo un campione dei dati in nostro possesso e possibile, tramite
la statistica, avere una base per avanzare ipotesi su cio che potra avvenire.
Con questo termine si intende linsieme di tecniche analitiche che mirano a trovare
schemi (pattern) utili o nuove relazioni nei dati al fine di estrarre informazioni na-
scoste, cioe non direttamente esplicitate dai dati stessi. A differenza della statistica,
che analizza informazioni generali nel dominio di interesse, il data mining analizza
possibili correlazioni tra piu variabili come, ad esempio, gli acquisti che vengono
fatti da un determinato cliente o gli oggetti di interesse comuni a piu clienti. Il data
miner utilizza una serie di metodi specializzati nello scoprire particolari significati
che assumono certe combinazioni di variabili, metodi ereditati dalla statistica e dal
machine learning (che possiamo definire come una sorta di intelligenza artificiale).
8 1 Predictive Analytics
Gli algoritmi esistenti prendono spunto da queste discipline; esistono molte tec-
niche come la regressione, gli alberi di decisione, il clustering etc., ciascuna delle
quali restituisce un modello che descrive in che modo certe variabili si collegano ad
altre.
La maggior parte delle attivita di data mining puo essere portata a termine
grazie a poche tecniche che si basano sulla regola 80\20 [13, pag.4], che ci suggerisce
che la maggior parte dei problemi, in genere proprio l80%, puo essere risolto con
luso di una piccola parte degli strumenti a disposizione, cioe il 20%; in questo caso,
infatti, e possibile modellare la maggior parte delle situazioni con le tecniche piu
comuni; tuttavia, e importante anche considerare ulteriori strategie che possono fare
emergere schemi ancora piu nascosti.
Uno degli aspetti chiave del data mining e la generalizzazione degli schemi, cioe
lestensione delle relazioni trovate per uno o piu particolari valori del dataset, sui
quali si applicano i metodi per la creazione dei modelli, a nuove e sconosciute istanze
dei dati.
Nellottica della predictive analytics i modelli creati hanno due obiettivi prin-
cipali: stabilire una relazione tra i dati di input osservati e la tipologia di dati di
output desiderata e, tramite questa relazione, prevedere loutput dato da valori non
ancora conosciuti.
Al fine di ottenere un processo di estrazione delle informazioni soddisfacente e
necessario possedere una conoscenza preliminare sui dati e sui processi che li hanno
generati (subject matter expertise). In questo modo si puo rendere il processo di
estrazione un processo iterativo e capace di modificare i vari modelli una volta
ottenute le prime informazioni per identificare nuovi schemi.
Il data mining opera frequentemente su grandi quantita di dati strutturati, af-
fiancandosi, spesso, a tecniche (come la computazione parallela e distribuita) che
giocano spesso un ruolo fondamentale nellelaborazione.
Questo termine fu coniato nel 1959 da Arthur Samuel, pioniere dellIntelligenza Ar-
tificiale, per indicare quel campo che studia labilita dei computer a imparare senza
essere stati esplicitamente programmati a farlo. In altre parole, il Machine Learning
cerca nuovi modi con i quali il computer puo acquisire conoscenza direttamente dai
dati e da essi imparare a risolvere i problemi [15, pag.12].
James N. Morgan e John A. Sonquist nel 1963 proposero un metodo per trovare
schemi e relazioni nei dati. Tale metodo si chiamava AID (Automatic Interaction
Detection) e consisteva in un algoritmo che cerca automaticamente un modo per
categorizzare i dati in due gruppi detti cluster e ricorsivamente analizza ogni gruppo
per cercare un modo per dividerlo ulteriormente, creando un albero di cluster. Tut-
tavia questo metodo utilizza, per le proprie scelte, dei metodi puramente statistici;
percio, indipendentemente dal lavoro di Morgan e Sonquist, i ricercatori sono stati
capaci di introdurre degli algoritmi che rendono il computer capace di imparare
mimando il modo di pensare umano; questi algoritmi costituiscono le tecniche di
Machine Learning.
Il Machine Learning e unaltra disciplina che ha come obiettivo lanalisi dei dati e
la scoperta di nuove informazioni provenienti da essi, ma questo scopo e raggiunto in
1.3 Applicazioni Pratiche 9
cosa ovvia se si pensa alla possibilita di ottenere in anticipo informazioni sul proprio
futuro.
Le varie compagnie e organizzazioni hanno bisogno di una certa esperienza nel
proprio lavoro, o possibilmente anche di consulenze esterne, per avere la conoscenza
adatta (business knowledge) a selezionare i dati sui quali applicare i vari modelli
in modo da dare i risultati migliori in termini di schemi utili e, di conseguenza, di
nuove informazioni estrapolate.
Tramite queste conoscenze, e in congiunzione con le tecniche di data mining e
machine learning, ogni organizzazione ha lopportunita di possedere un formidabile
strumento costituito dalle informazioni. Il successo che questa nuova opportunita
ha riscosso ha portato a un incremento delle richieste di analisi predittiva. Fra le
innumerevoli richieste, nel seguito si elencano [18, pag.14] quelle per le quali ha
avuto un impatto maggiore:
CRM : il CRM, cioe Content Managment System, e una strategia vincente di
mercato che pone al centro del business il cliente, invece che il prodotto. Essa
mira ad individuare i profili dei clienti, attuali o potenziali, cos da mettere a
punto nuove attivita o strategie che, da un lato, aiutino a catturare nuovi clienti
e, dallaltro, consentano di massimizzare i profitti sui clienti fedeli, cercando di
comprenderne esigenze e aspettative [4].
Il CRM e unapplicazione commerciale di analisi predittiva. Infatti, i suoi metodi
ed i suoi strumenti possono essere applicati ai dati dei clienti per conseguire
obiettivi che includono la creazione di efficienti campagne di marketing e di
servizi al cliente. Le compagnie devono riuscire ad analizzare e comprendere i
dati dei loro prodotti, individuando quelli di maggior successo, reale o potenziale,
ed utilizzandoli per conoscere in anticipo le abitudini di acquisto dei clienti e,
di conseguenza, per dare maggiore promozione a quei prodotti che si prevede
verranno acquistati piu frequentemente o per individuare nei prodotti potenziali
problemi che possono portare alla perdita di fiducia da parte del cliente.
Supporto alle decisioni in ambito clinico: gli esperti usano lanalisi predittiva in
ambito medico principalmente per individuare i pazienti che potrebbero correre
il rischio di contrarre particolari patologie: diabete, asma, problemi cardiaci, e
altre. Molti sistemi di supporto incorporano strumenti di analisi predittiva come
mezzo di rinforzo alle decisioni; si tratta, in questi casi di trovare un collegamento
tra conoscenze e osservazioni mediche e le scelte che dovranno essere fatte per
meglio affrontare o prevenire i disturbi.
I dati raccolti provengono spesso da visite in ospedale, sintomi mostrati dai
pazienti, esiti di trattamenti a cui essi vengono sottoposti; questi dati possono
essere utilizzati in particolare per prevenire la diffusione di malattie epidemiche.
Un caso di studio interessante e rappresentato dal possibile utilizzo dei dati
derivanti dalle ricerche fatte sul motore di ricerca di Google come strumento di
predizione per le epidemie [7, pag.81].
Le persone usano Google per cercare praticamente qualsiasi cosa, tra cui anche la
prossima localita che visiteranno, le persone che hanno incontrato o i sintomi dei
disturbi che pensano di avere. Tali ricerche hanno assunto una certa importanza
dal punto di vista medico; infatti, come mostrato nel recente articolo di ricerca
Detecting Influenza Epidemics Using Search Engine Query Data pubblicato
sulla rivista Nature da Jeremy Ginsberg, i ricercatori di Google hanno scoperto
1.3 Applicazioni Pratiche 11
che queste ricerche sono un buon indicatore della diffusione, corrente o futura,
di una determinata malattia.
Ginsberg con il suo team di ricerca ha scoperto una forte correlazione tra il
numero di individui che ricercano termini collegati allinfluenza e il numero di
persone che hanno contratto realmente linfluenza. Come Google stesso ha di-
chiarato: ce un incremento nel numero di ricerche correlate alle allergie durante
le stagioni in cui esse colpiscono, o un incremento di ricerche sulle bruciature
della pelle durante i mesi estivi; questo ci puo far capire come sia plausibile
pensare di trovare un collegamento tra le ricerche su una determinata malattia
e i casi di malattia stessa.
Google riesce a vedere questi schemi e utilizza i dati estratti dalle ricerche per
costruire modelli che permettono di prevedere eventi reali, quali, per lappunto,
la diffusione di una malattia in una determinata regione. Basandosi su un da-
taset costituito da dati raccolti dal motore di ricerca e da altre fonti, in piu di
cinque anni, Google e riuscito a costruire un modello che funge da strumento di
sorveglianza internazionale per la prevenzione delle epidemie.
Gli impieghi dellanalisi predittiva in ambito medico non finiscono qui: il pro-
fessor Abdelghani Bellaachia e il suo team alluniversita di Washington, nel
loro articolo Predicting Breast Cancer Survivability Using Data Mining Tech-
niques, mostrano come lanalisi predittiva possa essere usata per minimizzare
i rischi di contrarre il cancro al seno. Utilizzando dati storici raccolti, disponi-
bili al pubblico, sui vari tipi di cancro, dati contenenti svariati attributi, come
tempi di sopravvivenza, cause di morte, parametri vitali, etc., e implementan-
do, tramite questi dati, degli algoritmi basati su modelli di classificazione come
classificatori bayesiani, reti neurali e alberi di decisione, i ricercatori sono riu-
sciti a creare due classi di pazienti, sopravvissuti e non, trovando le relazioni che
legano gli attributi osservati a una di queste due categorie e quindi riuscendo
a individuare le principali cause che determinano linsorgere del cancro, almeno
per quanto riguarda i pazienti contenuti nel dataset per la creazione del modello.
Gli algoritmi ottenuti usando le varie tecniche sono stati confrontati e i risultati
migliori in termini di conformita del modello sono stati raggiunti dal modello ad
albero di decisione.
Analisi per le riscossioni dei crediti: un gran numero di risorse finanziarie ven-
gono spesso sprecate su clienti fraudolenti; lanalisi predittiva puo aiutare a
ottimizzare la cessione dei crediti, identificando le strategie e le azioni lega-
li piu efficienti per ogni cliente, incrementando significativamente le entrate e
riducendo le perdite.
Cross-Selling: e una strategia di marketing che consiste nel mettere a dispo-
sizione dellutente beni o servizi in qualche modo collegati a un prodotto gia
esistente; per unazienda usare lanalisi predittiva per analizzare le abitudini dei
clienti puo essere utile per offrire prodotti di interesse, per aumentare il profitto
sul singolo cliente e incrementare la fedelta.
Fidelizzare i clienti: per affrontare la concorrenza le aziende devono concentrare i
loro sforzi nel mantenere alta la customer satisfaction, premiando la lealta del
clienti e minimizzando cio che puo farli allontanare. Tuttavia, quando un cliente
ha deciso di allontanarsi da un certo servizio, e praticamente gia impossibile
fargli cambiare idea; lanalisi predittiva puo far si che non si arrivi a questo pun-
12 1 Predictive Analytics
1.4 I Dati
Nellera dellinformazione i dati vengono raccolti con grande rapidita e varieta e
vengono accumulati in database, documenti, e-mail, file audiovisivi, e molti altri
supporti.
Conoscere le varie tipologie di dati con cui si ha a che fare e essenziale per
comprenderli al meglio e per categorizzarli in modo da poterli utilizzare duran-
te il processo di previsione. Le compagnie, spesso, negli anni accumulano grandi
quantita di dati grezzi; piu cose si sanno su questi dati e piu si e in grado di ana-
lizzarli e usarli. Per questi motivi e utile descrivere i dati secondo delle importanti
caratteristiche distintive:
Dati strutturati e non strutturati: tutte le tipologie di dati finora elencati posso-
no essere distinti in dati strutturati e non; i primi sono sempre ben organizzati;
essi appaiono come formalmente ben definiti; su di essi e semplice fare ricerche
o modifiche; essi sono efficienti da analizzare. In definitiva sono facilmente ac-
cessibili da persone o macchine, ma non sono disponibili spesso; lesempio piu
tipico e costituito dai dati contenuti nei database relazionali che mettono bene in
evidenza i vari attributi di ogni dato nelle varie colonne con una visualizzazione
tabulare.
La seconda tipologia, ovvero quella dei dati non strutturati, e costituita da tutti
quei dati non rappresentati in tabelle, non ben organizzati, non ben definiti,
non facilmente accessibili per ricerche o modifiche, poco efficienti da analizzare,
come e-mail, pagine web, documenti vari, file di vario genere, sparsi senza una
ben precisa disposizione logica. Essi richiedono molto piu tempo e molte piu
risorse per essere elaborati, inoltre, tra tutti i tipi di dati, sono quelli che si
trovano in quantita maggiore; per questo motivo uno dei punti di forza piu
apprezzati dellanalisi predittiva e proprio il fatto che i suoi strumenti sono
capaci di processare tali dati, dando loro un significato e uno scopo.
Ovviamente, e molto piu efficiente avere a che fare con dati strutturati in quan-
to quelli non strutturati devono essere preventivamente analizzati e organizzati
in modo che gli algoritmi e gli strumenti utilizzati possano estrarre facilmente
informazioni da essi. Allo stesso tempo, poiche si tratta di una grande e variega-
ta quantita di dati contenenti sicuramente unenorme quantita di informazioni
inutili, essi devono essere filtrati in modo da individuare solo le informazioni
utili alla previsione che si intende fare e buttare via tutto il resto. La discipli-
na del data mining contiene una moltitudine di approcci per processare i dati
non strutturati, strumenti e algoritmi utili per trovare schemi nei contenuti, per
1.4 I Dati 13
la situazione corrente. Un tipico esempio e dato dal prezzo dei prodotti che si
vuole far variare in base alle condizioni del mercato.
A queste categorie appartengono tutti i dati che vengono raccolti, in maniera auto-
matica o meno, e che fanno parte della cosidetta Business Intelligence. Questi dati
possono, ad esempio, riguardare acquisti effettuati, metodi di pagamento, oggetti
acquistati insieme ad altri, dati sui clienti stessi che forniscono informazioni sulle lo-
ro abitudini, dati raccolti nei sondaggi, cronologie di navigazione web, e molto altro
ancora. Se correttamente interpretati e preparati essi servono per la realizzazione
di un modello efficiente.
I dati che vengono utilizzati provengono da tantissime fonti e in formati molto di-
versi tra loro, ma non tutti sono adatte a costruire il modello. Per avere unidea
chiara di cio che puo essere utile bisogna avere bene in mente quali sono gli obiettivi
da raggiungere e capire quali sono le informazioni necessarie al loro raggiungimen-
to di tale scopo. A tal fine puo essere utile interrogare gli esperti del settore; ad
esempio, nel mondo del marketing, una tipica richiesta e quella di voler individuare
preventivamente i clienti che nellimmediato futuro non saranno piu interessati a
una determinata offerta o ad uno specifico servizio; in questo caso potrebbe esse-
re utile interrogare gli esperti del settore clienti. Le risorse raccolte devono essere
capaci di soddisfare il modello che si vuole costruire e, infine, il progetto stesso.
Importantissimo, quindi, conoscere come reperire i dati grezzi, come potervi
accedere (spesso tramite luso di strumenti adatti) e la qualita di questi dati. Inoltre,
e possibile doverli integrare a dati gia provenienti da altri dataset esterni al settore
interessato per riuscire a ottenere quante piu informazioni possibili.
Il dataset che si viene a creare deve contenere tutte quelle informazioni che
si stima possano essere rilevanti ai fini del calcolo predittivo, per rispondere al
problema che ci si e posti. Per riprendere lesempio gia citato, se si sta cercando di
prevedere quali clienti avranno un calo di interesse nei confronti di un determinato
servizio, il dataset che dovranno creare dovra contenere sicuramente informazioni
sui clienti che hanno gia rinunciato a tale servizio e quelli che, invece, non lo hanno
ancora fatto. In genere, i dati piu rilevanti sono quelli che riguardano gli eventi
passati e che coincolgono lentita, o linsieme di entita sulle quali si sta cercando di
fare previsioni.
Infine, una volta in possesso di una certa quantita di dati, e necessario indi-
viduare tra questi quali variabili sono utili e quali, invece, non forniscono alcuna
informazione utile. Un tipico approccio consiste nel prendere in considerazione, ini-
zialmente, una grossa quantita di variabili e, quindi, procedendo con la realizzazione
e con il collaudo del progetto, una volta acquistite alcune informazioni chiave, elimi-
nare quelle che non hanno nessun valore ai fini della predizione. Questi dati verranno
dati in pasto al modello che si sta cercando di realizzare, cercando di ottenere i
risultati desiderati con la maggiore precisione e affidabilita possibili.
Una volta individuati i dati che si considerano essere piu rilevanti ai fini del pro-
getto di analisi predittiva, e necessario, per poterli utilizzare, estrarli dalle sorgen-
ti nelle quali sono stati individuati e inserirli in strutture organizzate, realizzate
appositamente.
In questo modo linsieme di dati grezzi non strutturati, provenienti da fonti ete-
rogenee, diventa un insieme di dati strutturati, inseriti in tabelle e con gli attributi
in evidenza. Questo e utile non solo per organizzare i dati in modo da poter essere
utilizzabili dai vari algoritmi, ma anche per esaminarne le proprieta. In base a ta-
li caratteristiche, infatti, viene scelto lalgoritmo usato per realizzare il modello di
previsione. Per alcuni tipi di dati, infatti, e necessario implementare un determinato
tipo di algoritmo.
16 1 Predictive Analytics
A volte e possibile che le fonti che vengono usate per lestrazione dei dati con-
tengano dati gia strutturati, in tal caso, ma anche nel caso in cui ci troviamo di
fronte a dati non strutturati, e consigliabile realizzare separatamente un database
che contenga quelli estratti, in questo modo anche nel caso in cui si dovranno mo-
dificare o eliminare i dati, ad esempio durante la fase di filtraggio dei dati errati, la
sorgente dei dati verra conservata intatta e sara possibile recuperarli in un secondo
momento.
Unulteriore strategia utile per garantire lefficienza del modello consiste nel ri-
durre il piu possibile le dimensioni del dataset o, dove cio non fosse possibile, nel
cercare di ottimizzare laccesso ai dati. Questo si traduce in operazioni di ristruttu-
razione e normalizzazione del dataset; in particolare, una strategia spesso utilizzata
per ridurre la quantita di dati in presenza di relazioni uno a molti tra di essi, che
causano un eccessivo ingrandimento del dataset, e loperazione di appiattimento.
Tale operazione consiste nellinserire i dati ripetuti relativi ad una stessa istanza
di unentita come attributi aggiuntivi di essa; cio permette di eliminare le relazioni
uno a molti che non fanno alto che rallentare il modello ma che in genere non
portano alcun vantaggio alla costruzione di un modello valido.
I vari risultati ottenuti vanno esaminati da esperti del settore; a questi verranno
mostrate le variabili che emergono da tutte le implementazioni di tutti i modelli
usati. Gli esperti dovranno verificare se cio che e emerso dallanalisi va a favore
della ragione per la quale e stato necessario cercare di fare delle previsioni; inoltre,
sara necessario verificare lefficienza dellalgoritmo anche quando si ha a che fare
con grossi dataset.
Per determinare quali misure adottare per migliorare la qualita del modello
e per vedere se esso incontra gli obiettivi prefissati, e utile osservare i risultati
di tutte le implementazioni tramite lutilizzo di grafici. Il modo in cui vengono
visualizzati i risultati e importante perche, se non viene scelto un metodo semplice e
immediato per la visualizzazione, a causa dellenorme mole di dati da includere nella
rappresentazione di cio che e emerso, sarebbe molto difficile fare delle valutazioni
sui risultati.
Ogni algoritmo prevede una rappresentazione diversa, ma tutte devono avere
delle caratteristiche comuni; in particolare, essi devono essere facili e immediati
da capire e devono semplificare la complessita dellanalisi svolta. Se costruiti in
questo modo i grafici finali saranno un ottimo punto di partenza dal quale prendere
decisioni.
1.6 Critiche
Dopo tutte le possibilita finora illustrate costruire un modello predittivo sembra
unoperazione conveniente in qualsiasi campo in cui venga applicato. Tuttavia, so-
no state mosse alcune critiche dalle quali emerge un certo scetticismo per quanto
riguarda labilita di un calcolatore di prevedere gli eventi futuri.
Il professor Gary King, docente alluniversita di Harvard e direttore dellInstitute
for Quantitative Social Science afferma [18, pag.19] come sia impossibile determina-
re con adeguata precisione le variabili che determineranno il comportamento futuro
di una persona, in quanto ciascuno di noi puo essere influenzato da innumerevoli
fattori in modo cos veloce che neanche noi stessi ce ne rendiamo conto. In pratica,
il modo in cui ognuno pensa e agisce puo essere modificato da qualsiasi evento,
dalle relazioni personali alle condizioni atmosferiche; questo renderebbe impossibi-
le prevedere in maniera accettabile qualsiasi comportamento e renderebbe lanalisi
predittiva solo una tecnica valida a livello teorico, durante le prove in laboratorio,
ma che non potrebbe mai avere alcun riscontro nel mondo pratico.
2
Big Data
Questo capitolo illustra brevemente il concetto sempre piu diffuso di Big Data:
enormi quantia di dati sempre piu diffusi sul web ma anche su altri sistemi utilizzati
al giorno doggi. Ne vengono illustrate le principali caratteristiche e gli scopi per cui
vengono raccolti e analizzati. Tra questi troviamo lanalisi predittiva, per la quale
lo sfruttamento dei Big Data rappresenta un vantaggio formidabile. Vengono infine
illustrati i principali strumenti hardware e software per il trattamento di una tale
mole di dati, in particolare al fine di fornire il maggior numero di informazioni
possibili ai modelli di previsione.
contengono cos tante informazioni da non poter essere gestiti da normali DBMS
relazionali.
Nonostante molte organizzazioni governative, bancarie o di ricerca gia da mol-
tissimi anni abbiano a che fare con queste ingenti quantita di dati, solo da poco
piu di un decennio e stato coniato il termine Big Data, per sottolineare quanto
al giorno doggi si e sempre piu sommersi da un mare di dati di diverso genere. La
Figura 2.2 mostra una testimonianza di cio.
Figura 2.2. Andamento della quantita di ricerche Google riguardo il termine Big Data
negli ultimi anni, a testimonianza del crescere della popolarita del tema.
Gli eventi degli ultimi venti anni[8, pag.8], a partire dal 1991 con lintroduzione
del protocollo HTTP, hanno profondamente cambiato il modo in cui i dati vengono
creati e trattati. Solo per citare alcuni esempi, consideriamo lintroduzione di tecno-
logie come il GPS, il motore di ricerca Google, luso della rete denominato internet
of things, le pagine del sito web Wikipedia, la diffusione dei social network, lenorme
incremento dei dispositivi connessi alla rete (causato dalla diffusione degli smart-
phone e della tecnologia Wi-Fi). Tutti questi fattori hanno contribuito a creare un
flusso di dati immenso. Tali dati non sono prodotti di scarto ma rappresentano un
tesoro nascosto ricco di informazioni che possono essere scoperte ed utilizzate per
affrontare molte sfide attuali.
Nonostante non esista una definizione universale di big data, il termine si usa
per indicare tutte quelle situazioni in cui le tradizionali tecniche di memorizzazione
ed elaborazione dei dati (come, ad esempio, i tradizionali RDBMS, cioe i sistemi di
gestione di database relazionali) non sono sufficienti. Talvolta, infatti, tale difficolta
e data non solo dal volume ma anche da altre caratteristiche che rendono i dati
coinvolti particolarmente complessi da poter essere trattati; ad esempio, laltissima
velocita con la quale questi dati vengono aggiornati e lestrema varieta degli stessi,
possono essere alcune delle cause di tale ostacolo. In dettaglio, le principali grandezze
che caratterizzano i Big Data sono:
Volume: per dare un idea dellincremento che la quantita di dati ha visto negli
ultimi anni basti pensare che, secondo alcuni studi, la quantita di dati che sono
stati creati nel 2003 ha superato la quantita di dati digitali creati durante tutta
la storia precedente a quel momento. Nel 2011, inoltre, la stessa quantita di dati
e stata creata nel giro di soli due giorni.
Ogni database troppo grande per essere gestito da un normale PC o server
puo essere considerato un insieme di big data. Negli ultimi anni si e passato da
2.1 Cosa sono i Big Data? 23
database dellordine dei terabyte a collezioni di dati dellordine dei petabyte (un
petabyte corrisponde a 1.000 terabyte). Leccessiva quantita di dati rappresenta
un problema per molte compagnie che, spesso, sono costrette a scartare i dati in
eccesso non avendo le capacita e le risorse adeguate per contenerli. Ad esempio un
provider di telecomunicazioni con 100.000.000 di clienti raccoglie, ogni giorno,
circa 50 terabyte di dati; cio significa raccogliere 5 petabyte di dati ogni 100
giorni[16, pag.2]. Analizzare una tale quantita di dati porta, sicuramente, a un
gran numero di scoperte, ma per farlo e necessario possedere le risorse adeguate
in termini di capacita di memorizzazione ed elaborazione dei dati.
Velocita: alcuni tipi di dati sono relativamente statici, come, ad esempio, la data
di nascita o il genere di una persona. Altri tipi di dati cambiano occasionalmente,
cioe vengono aggiornati con poca frequenza, come, ad esempio, lindirizzo di
residenza di una persona, il numero di telefono e il numero dei componenti
familiari. Alcuni tipi di dati, tuttavia, cambiano in modo cos rapido da non
essere sempre percepibile dagli strumenti di analisi (ad esempio, la musica che
si sta ascoltando, la velocita di guida, e i dati biologici).
Con il termine velocita si vogliono rappresentare due aspetti utili allo studio
dei Big Data. Il primo e il throughtput cioe la quantita di dati che passa da
un determinato canale nellunita di tempo. Il secondo aspetto da prendere in
considerazione e la latenza, ossia il tempo massimo durante il quale i dati re-
stano immutati. Creare dei tool che riescano ad usare i dati nel minor tempo
possibile ed ottenere i dati in tempo reale, nonostante la complessita di questi
ultimi, rappresenta una grande sfida per gli analisti che si pongono lobiettivo
di scavare dentro i big data.
Varieta: i big data comprendono molti differenti tipi di dati, strutturati e non.
Inoltre, essi racchiudono un numero elevatissimo di possibili formati diversi in
cui si possono presentare i dati: testi, suoni, video e molti altri. Ulteriore compito
degli analisti e quello di formalizzare questa enorme varieta di informazioni in
modo da poter essere compresi anche in maniera automatica.
Ulteriore aspetto da prendere in considerazione e la sincerita dei dati. Molti
di essi, infatti, provengono da fonti interne allorganizzazione che sta realizzando il
processo di analisi; cio significa che essa ha il completo controllo sulla loro struttura
e sul loro formato. Molti altri dati (tra cui informazioni finanziarie, pagine web, da-
ti di navigazione dei GPS), provenendo da innumerevoli fonti esterne, sono spesso
completamente fuori dal controllo di chi li raccoglie. Risulta, quindi, indispensa-
bile verificare la credibilita di queste fonti e valutare se tali informazioni raccolte
rappresentano uno strumento utile ai fini della previsione che si vuole realizzare o,
semplicemente, un prodotto di scarto.
Tutte queste caratteristiche definiscono in maniera precisa cio che al giorno
doggi si intende quando si cerca di descrivere i Big Data. Senza prendere in con-
siderazione aspetti quali la quantita e la qualita dei dati, il termine Big Data puo
essere visto come una filosofia che prevede un modo particolare di reperire, memo-
rizzare e analizzare i dati, agendo in conseguenza a cio che e emerso da tale analisi.
Questa filosofia spinge ad esplorare, in maniera piu completa possibile, tutte le ri-
sorse che si hanno a disposizione (nonostante tali risorse consistano in quantita di
dati dellordine dei petabyte, provengano da innumerevoli fonti e si presentino in
formati eterogenei). Tutto cio si sposa perfettamente con gli obiettivi dellanalisi
24 2 Big Data
I big data, visti come enormi collezioni di dati, oppure in senso esteso come termine
che indica un approccio per raccogliere piu informazioni possibili, costituiscono uno
strumento molto importante per avere un quadro completo degli eventi che si cerca
di prevedere. Se i vari settori sono capaci di analizzare petabyte di dati in modo
molto efficiente saranno capaci di individuare schemi o anomalie e tali scoperte
potranno essere usate per la costruzione di modelli validi.
Raccogliere tutti i dati da tutte le varie fonti disponibili puo essere un proce-
dimento lungo e complesso. Una volta portato a termine, inoltre, una parte delle
informazioni emerse risultera essere inutile. Infatti, anche nel caso dei Big Data, e
necessario individuare quella porzione di informazioni che vanno realmente a favore
26 2 Big Data
del progetto di analisi predittiva (smart data). Tutto cio ha ancora una volta lo
scopo di aumentare la precisione e laffidabilita del modello di previsione.
Unesperienza analoga allo studio dei big data e quella che si trovano ad affron-
tare le industrie minerarie durante la ricerca dei siti di estrazione delloro[9, pag.14].
Si stima, infatti, che esistono molti giacimenti auriferi sommersi dagli oceani, con-
tenenti migliaia di tonnellate di pepite di oro sepolte al loro interno: una quantita
di gran lunga superiore rispetto a quella estratta fino ad oggi. Allo stesso modo ci
sara sicuramente una grande quantita di informazioni non ancora estratte dai big
data, ma ricavare tali informazioni puo essere molto costoso.
Alcune volte i benefici che lanalisi predittiva ottiene esaminando i big data
valgono lo sforzo e le risorse impiegate durante il processo di estrazione delle in-
formazioni, altre volte no. In base al settore in cui si effettua lanalisi, utilizzare
fonti esterne quali i big data puo essere piu o meno conveniente, ma, in molti casi,
utilizzare tali fonti fornisce una sorgente di informazioni estremamente redditizia.
Estendere le proprie conoscenze tramite fonti esterne quali i Big Data richiede,
quindi, un compromesso. Da un lato ce il chiaro vantaggio di ottenere moltissime
informazioni aggiuntive che possono rendere il modello di previsione molto piu utile;
il rovescio della medaglia e costituito dal fatto che, come gia detto, tutto cio ha un
costo. E, quindi, necessario valutare preventivamente se concentrare i propri sforzi
nel provare a districare la matassa di informazioni contenute nei big data in base
alle proprie esigenze. Le risorse richieste consistono sia in nuove teorie, algoritmi e
metodi e di data mining, sia in un hardware migliore, capace di gestire una grossa
quantita di dati. In entrambi gli ambiti gli strumenti devono evolversi di pari passo:
complessi software per lestrazione delle informazioni richiedono grosse quantita di
memoria ed elevate capacita computazionali.
Figura 2.4. Aumento della capacita degli hard disk nel corso del tempo
significativamente. Nel seguito daremo uno sguardo ai principali tra questi strumenti
di analisi.
2.4.1 MapReduce
rappresentano vantaggi fondamentali nel contesto dei Big Data in quanto viene
garantita la possibilita di conservare i dati immutati e di proporre piu volte gli stessi
schemi su di essi. Inoltre, la programmazione funzionale si sposa perfettamente con i
sistemi distribuiti in quanto non e necessario definire dove verranno memorizzati gli
output di ciascun nodo. Le funzione Map() e Reduce() sono implementate seguendo
il modello della programmazione funzionale. Nel seguito esaminiamo piu in dettaglio
le due attivita di Map() e Reduce().
Map(): un sistema distribuito che opera utilizzando il framework MapReduce e
composto da unarchitettura centralizzata in cui un nodo particolare (identificato
come nodo centrale o nodo master) ha piu importanza rispetto agli altri. In tale
nodo risiede la funzione Map(). Essa riceve in ingresso una query o una procedura
che deve essere eseguita su una lista, anche molto grande, di valori in ingresso e
la divide in piu processi, ciascuno dei quali svolge un compito differente. Questi
compiti piu piccoli vengono assegnati ad ogni nodo secondario, o slave, il quale
eseguira la procedura ottenuta in parallelo, restituendo un risultato.
Per fare un esempio[10, pag.103] di un programma che puo essere implementato
tramite la funzione Map(), supponiamo di voler esaminare una lista di citta
che hanno partecipato a una recente elezione. Ogni dato prelevato dalla lista e
fornito alla funzione Map() e costituito da una coppia di valori: una chiave che
ne identifica la particolare istanza ed il valore vero e proprio. In tal modo nella
lista delle citta ogni elemento sara costituito da una chiave che rappresenta il
nome della citta e da un valore che rappresenta il numero di abitanti. Tramite
luso della funzione Map() si avra il seguente codice:
map howManyPeople (mylist) = [ howManyPeople county
1; howManyPeople county 2; howManyPeople county 3;
howManyPeople county 4; . . . ]
Tale funzione riceve tra i propri parametri la stessa funzione howManyPeople;
in questo caso, ciascun parametro corrisponde ad unimplementazione della fun-
zione stessa (ulteriore caratteristica della programmazione funzionale e quella
di poter fornire ai parametri delle proprie funzioni altre funzioni). Ognuna di
queste funzioni conta il numero di abitanti di ogni citta e viene distribuita in
un nodo del sistema distribuito, essa dovraa restituire un valore positivo se tale
citta possiede piu di 50.000 abitanti. In questo modo viene distribuita unim-
plementazione di howManyPeople in ogni nodo, il quale restituira il risultato
indipendentemente dagli altri nodi.
Da notare come anche la lista dei dati in input e stata suddivisa ed ogni frazione
del dataset viene distribuita alle varie funzioni durante limplementazione della
funzione Map(). Tale programma, pur effettuando solo una semplice lettura,
spiega in maniera chiara come avviene la procedura di suddivisione di Map() e
come essa possa essere applicata a grandi collezioni di dati per semplificare il
lavoro da svolgere sullintero dataset.
Reduce(): analogamente alla funzione Map(), anche la funzione Reduce() e rea-
lizzata secondo il paradigma della programmazione funzionale e riceve in ingresso
una lista di elementi. Tramite Reduce() e possibile implementare una funzio-
ne che riceve in input tale lista, opera su di essa alcune istruzioni che vengono
decise dal programmatore, e quindi restituisce il risultato finale. Per riprendere
2.4 Strumenti di Analisi 31
quali Apache Hadoop). Il resto del lavoro verra svolto da MapReduce che risiede in
un livello inferiore secondo unarchitettura a strati in cui lutente, o lo strumento,
di livello piu alto non vuole conoscere il funzionamento delle applicazioni di livello
inferiore ma e interessato semplicemente al risultato che esse forniranno.
MapReduce include, anche, altre caratteristiche per la gestione dei vari processi
che vengono generati. E presente uno scheduler che fa s che tali processi abbiano
maggiore priorita e vengano eseguiti prima che la funzione implementata tramite
Reduce() venga mandata in esecuzione. In questo modo essa non potra essere lancia-
ta prendendo risultati parziali. La sincronizzazione dei sottoprocessi Map() avviene
tenendo traccia della loro esecuzione e, solo quando ciascuno di essi ha fornito il
proprio risultato, verra mandata in esecuzione la funzione Reduce(). Se, inoltre, il
numero di sottoprocessi e maggiore rispetto al numero di nodi presenti nel sistema
allora lo scheduler si occupera di far s che ognuno di essi venga servito. E presente,
anche, un meccanismo di gestione degli errori tale che, se uno dei nodi non riesce
a portare a termine lesecuzione di un processo ad esso assegnato, il sistema rico-
nosce in maniera automatica linsorgere di tale problema e reagisce (talvolta anche
assegnando tale processo a un altro nodo).
Per sfruttare al massimo le potenzialita degli strumenti offerti da MapReduce
sono necessari ulteriori tecnologie che, partendo dai meccanismi che tale piattaforma
offre, permettono di affrontare tutte le sfide che lanalisi dei Big Data propone. Uno
di questi strumenti (forse il piu utilizzato) e Apache Hadoop.
Il progetto di Hadoop nasce dallesigenza di avere un mezzo per gestire grosse quan-
tita di dati in modo semplice e pratico. Prima della nascita di tali strumenti i
2.4 Strumenti di Analisi 33
maggiori motori di ricerca, quali Yahoo! e Google, erano alla ricerca di un modo
per trarre profitto dal continuo flusso di informazioni che ricevevano ogni giorno.
Per fare cio si dovette trovare, prima di tutto, un modo per gestire questi dati in
maniera automatica. Fu proprio il motore di ricerca Yahoo! a dare vita al progetto
Hadoop per venire incontro a tali esigenze. Il creatore di questa nuova piattaforma,
lingegnere Doug Cutting, termino il progetto nel 2004 utilizzando come punto di
partenza il framework MapReduce di Google. Proprio come MapReduce, infatti, lap-
proccio di Hadoop per affrontare la complessita dei Big Data consiste nel dividere
il problema in piu passi minori e nel risolverli parallelamente.
Le componenti principali di Hadoop sono due:
Hadoop Distributed File System. Un file system distribuito e un particolare ti-
po di file system che permette la memorizzazione di file e risorse su dispositivi
di archiviazione distribuiti in una rete informatica, anziche archiviati su un di-
spositivo locale. LHadoop Distribuited File System, o HDFS, e stato ideato per
soddisfare alcuni requisiti, quali la scalabilita e laffidabilita. Esso e in grado di
gestire un numero elevatissimo di file (anche dellordine dei petabyte). Analo-
gamente ad altri file system, esso presenta i file in una struttura gerarchica di
cartelle e li distribuisce attraverso i vari nodi.
I file system di tipo distribuito operano attraverso un meccanismo client-server;
come tutti, anche HDFS lavora a partire da un nodo centrale che contiene unap-
plicazione chiamata namenode. Tale applicazione gestisce lintero file system,
controlla laccesso ai file (per operazioni di lettura, scrittura, etc.) e determina
come essi verranno suddivisi, nei vari nodi, allinterno di blocchi da 64/128MB.
La responsabilita del namenode e quella di tenere traccia della posizione nella
quale i vari blocchi, che compongono ogni file, vengono distribuiti. Inoltre, il na-
menode offre una strategia di replica e di controllo degli errori che garantiscono
laffidabilita del sistema. Tale applicazione comunica in maniera continua con le
componenti del file system distribuite sui vari nodi secondari: tali componenti
sono chiamati datanode. Attraverso questa comunicazione il nodo principale e a
conoscenza di tutto cio che avviene sugli altri nodi; quindi, nel momento in cui
un nodo non riuscira piu a gestire il flusso delle informazioni dirottera il traffico
dei dati verso un altro nodo.
I datanode sono delle applicazioni che si trovano su tutti i nodi della rete diversi
da quello principale; generalmente e presente un datanode per ciascun nodo.
Tali applicazioni gestiscono fisicamente la memorizzazione dei dati in ciascun
nodo, occupandosi delle operazioni di lettura e scrittura richieste. Laccesso a
ogni datanode e sempre gestito dal namenode il quale, interpretando i messaggi
ricevuti, determina se il nodo secondario sia in grado, oppure no, di gestire le
informazioni che dovrebbero essere affidate ad esso. In tal modo, quando un
datanode non fornisce alcuna risposta viene escluso fino a quando non sara di
nuovo capace di accettare nuovi dati in ingresso. Questo meccanismo permette
al sistema di essere sempre bilanciato ed e completamente trasparente allutente,
il quale vede lintero sistema come se fosse una macchina singola.
Al fine di garantire lintegrita dei dati, durante il processo di divisione dei file in
vari blocchi, ogni movimento viene registrato in un file di log. Grazie a questa
strategia HDFS risulta essere un file system affidabile. Ogni dato, inoltre, viene
replicato piu volte sui vari nodi; questa funzionalita, oltre a rappresentare un
34 2 Big Data
ulteriore punto di forza per laffidabilita del sistema, garantisce una riduzione
dei tempi di accesso per rendere piu efficiente il recupero dei dati.
Ulteriore punto di forza di Hadoop e la possibilita di interagire con diversi tipi
di dati. LHDFS accetta qualsiasi formato, strutturato e non strutturato, pro-
veniente da qualsiasi tipo di fonte. E possibile memorizzare file di testo, email,
foto, video, post provenienti da social network, nonche qualsiasi altro tipo di
dato.
HDFS risulta, pertanto, sempre vantaggioso con dati di grandi dimensioni. I
vantaggi diminuiscono quando, al contrario, si ha a che fare con file di dimen-
sioni piu piccole. In particolare, quando troppi file hanno una dimensione molto
inferiore al singolo blocco di memoria del file system, questo determinerebbe un
incremento nello spazio dei nomi del namenode, associati a ogni singolo blocco.
Tale problema viene risolto dagli archivi Hadoop che compattano molti piccoli
file in raccolte piu grandi.
Hadoop MapReduce: e unimplementazione del framework MapReduce di Google.
Tale versione prevede una serie di funzioni precostruite per affrontare il proble-
ma della complessita dei Big Data. Quando, tramite il client di Hadoop, viene
fatta una richiesta di implementazione del pattern di MapReduce, i dati grezzi
vengono per prima cosa individuati allinterno del sistema distribuito e prelevati
tramite HDFS. Prima che i dati possano essere forniti alla funzione implementa-
ta utilizzando Map(), come visto precedentemente, e necessario adattarli in modo
che rispettino i parametri accettati da tale funzione. Ogni parametro fornito al-
la funzione Map() deve essere, infatti, costituito da una coppia chiave-valore. A
tale scopo vengono proposte una serie di funzioni utili per convertire i dati da
un qualsiasi formato generico (con il quale vengono estratti dalle fonti esterne)
ad un formato in cui possono essere processati. Ogni istanza di Map(), quindi,
elaborera i dati cos convertiti e fornira un output.
In alcune applicazioni i dati in uscita devono essere raccolti prima di essere
passati alla funzione Reduce(). Anche questa funzione si trova distribuita in ogni
nodo; per questo motivo Hadoop prevede unapplicazione chiamata collettore
che permette di raccogliere i risultati di tutti i nodi, nel caso in cui questi
ultimi dovessero essere tutti richiesti dalla funzione Reduce(). I risultati delle
elaborazioni delle varie istanze di Map() sono raccolti da unapplicazione reporter
la quale tiene traccia di ogni esecuzione sui vari nodi e permette alla funzione
Reduce() di sapere quando tutti i risultati sono pronti per lelaborazione finale.
Ciascuno di questi meccanismi e presente su ogni singolo nodo: quando i risultati
vengono resi disponibili essi convergono nel nodo che dovra eseguire la funzione
Reduce(); i trasferimenti vengono effettuati in maniera efficiente tramite HDFS.
Una volta che i risultati intermedi sono pronti la funzione Reduce() li elabora
e fornisce il risultato finale. Anche questi risultati saranno composti da una
coppia chiave-valore; per questo motivo saranno necessarie ulteriori funzioni che
tradurranno, ancora una volta, questi elementi nel formato desiderato. Infine, i
dati cos ottenuti verranno memorizzati per ulteriori future elaborazioni tramite
HDFS.
Come e emerso finora, Hadoop fornisce una serie di strumenti per rendere estrema-
mente semplice il lavoro con i Big Data. Al contrario dei normali database relazio-
nali, i quali prima di poter ricevere i dati devono essere preventivamente adattati
2.4 Strumenti di Analisi 35
Intorno alle basi di Hadoop, costituite da MapReduce e HDFS, ruotano una serie
di strumenti indispensabili alla scrittura di applicazioni utili per obiettivi pratici,
quali lanalisi predittiva (come illustrato in Figura 2.7).
In assenza di tali tecnologie il compito degli esperti del settore sarebbe molto
piu complesso in quanto si dovrebbero implementare da zero le tecnologie che per-
mettono di realizzare un modello efficace. La loro esistenza quindi rappresenta un
opportunita per tutti coloro che vogliono includere luniverso dei Big Data alla loro
analisi.
Yarn: Yarn (acronimo di: Yet Another Resource Negotiator) e una piattaforma
che contiene uno scheduler il cui compito e quello di allocare le risorse di siste-
ma alle varie applicazioni implementate dallutente. Lo scheduling dei processi,
nonostante sia gestito da MapReduce, non garantisce la flessibilita e lefficienza
che vengono fornite dal servizio Yarn. Questultimo si prende carico della ge-
stione delle risorse (quali la memoria, la CPU e la rete) e controlla lesecuzione
delle applicazioni. Se queste ultime dovessero richiedere un numero maggiore di
36 2 Big Data
Mahout : questo strumento (Figura 2.8) ha un utilizzo specifico per lanalisi pre-
dittiva. Esso contiene librerie di algoritmi di data mining per implementare
metodi quali clustering, classificazione, e molti altri, direttamente su grandi
quantita di dati. Cio avviene grazie alla possibilita di implementare Mahout su
reti distribuite che vengono gia gestite da Hadoop. In tal modo non e necessario
possedere le conoscenze informatiche per la costruzione del modello utile allana-
lisi predittiva: le conoscenze del settore saranno sufficienti per la scelta delle fonti
e dellalgoritmo piu adatto ad analizzare i dati provenienti da esse e per poter
ottenere un modello di previsione. Gli algoritmi messi a disposizione da Mahout
sfruttano le capacita del paradigma MapReduce; anche in questo caso larchi-
tettura usata e quella a livelli in cui applicazioni di livello superiore (in questo
caso, gli algoritmi forniti da Mahout ) utilizzano per i loro scopi infrastrutture
gia messe a disposizione, quali il framework MapReduce offerto da Hadoop.
Mahout e un progetto relativamente giovane e, quindi, aperto allo sviluppo di
nuove funzionalita e nuovi algoritmi per includere limplementazione di tutte le
tecniche e i modelli che lanalisi predittiva richiede.
Gli strumenti finora esaminati rappresentano solo una piccola parte di tutti quel-
li disponibili agli utenti che utilizzano Hadoop per la gestione dei Big Data. Tali
strumenti richiedono un certo grado di conoscenza da parte degli utilizzatori. Con
la diffusione dei casi duso dei Big Data, e con laumentare, negli ultimi anni, delle
richieste di metodi sempre piu accessibili per sfruttare tali risorse, e sorta la neces-
2.4 Strumenti di Analisi 37
sita di sviluppare nuove tecnologie sempre piu aperte. Per tale ragione una parte
dellecosistema di Hadoop e dedicata sempre piu ad applicazioni che non richiedono
conoscenze informatiche o specifiche del particolare settore. Tra questi strumen-
ti, citiamo Pig, Sqoop e Zookeeper : essi rappresentano levoluzione del concetto di
gestione dei Big Data, sempre piu accessibili e meno costosi da analizzare. Tutti
questi strumenti, inoltre, sono open-source e quindi sono utilizzabili da chiunque
voglia usufruire delle potenzialita dei grossi flussi informativi per i propri scopi.
3
I Modelli di Previsione
In questo capitolo vengono illustrati, dal punto di vista teorico, i piu comuni modelli
i quali rappresentano il cuore dellanalisi predittiva. Questi ultimi sono ereditati
da discipline quali data mining e machine learning. Dopo una breve panoramica
sul concetto di modello, vengono illustrati, con maggior dettaglio, i procedimenti
matematici e statistici con i quali essi riescono a rappresentare la realta (e, in
seguito, a prevederla) apprendendo dallesperienza.
realta a venire, in quanto i dati che la descrivono sono delle semplici raccolte di
attributi che non possono essere associati a uno dei possibili esiti che si intende
individuare (alcuni particolari attributi possono, infatti, essere caratteristici di piu
gruppi di dati contemporaneamente, non possono, percio, essere usati per determi-
nare univocamente una data istanza). Per affrontare il problema appena esposto
esiste una categoria di modelli implementati tramite gli algoritmi di clustering.
Una delle caratteristiche di tali processi e che essi riescono a scoprire gruppi e
categorie nascoste tra i dati in analisi, quindi a ricondurre ogni istanza di essi a
una ben determinata tipologia. In questo modo, e possibile dare un significato ad
un flusso di informazioni che, altrimenti, non avrebbe alcuna utilita pratica. Come
mostrato nella Figura ??, per ricondurre ogni oggetto ad una determinata categoria,
lalgoritmo studia gli attributi degli stessi.
Figura 3.1. Algoritmo di clustering che individua gruppi di appartenenza esaminando gli
attributi dei dati
3.2.1 K-Means
Figura 3.2. Collezione di documenti in formato tabulare; gli attributi, in questo caso,
rappresentano le parole piu frequenti allinterno del testo. Le lettere da A a F indicano le
istanze dei documenti
di cluster che verranno determinati allinterno del dataset. La parola means indica
loutput dellalgoritmo; si riferisce al significato di ognuno dei K cluster individuati
dallalgoritmo.
Lalgoritmo opera nel seguente modo: esso seleziona K oggetti in maniera ca-
suale e li etichetta come cluster representative. In seguito, tutti gli altri elementi
del dataset vengono esaminati e associati a ciascun cluster representative usando un
valore di similitudine. Tale valore e dato da una funzione la quale calcola la distanza
euclidea tra due oggetti con caratteristiche ben definite (come se tali caratteristiche
fossero gli elementi di un vettore); ogni istanza viene associata al cluster represen-
tative verso il quale possiede la distanza minore. A questo punto vengono scelti dei
nuovi cluster representative, esaminando le caratteristiche degli oggetti appena ag-
giunti e verificando quali tra questi ultimi meglio rappresenta la propria categoria di
appartenenza. Tale procedura viene ripetuta fino a quando i cluster representative
non cambiano con laggiunta di nuovi dati, quindi, rappresentato la scelta migliore
allinterno del cluster.
Per mostrare un esempio [7, pag.97] del funzionamento dellalgoritmo K-means,
in Figura 3.3 appare un dataset contenente alcuni dati osservati. Essi sono relativi ad
un insieme di clienti di una compagnia; tra questi e presente lindice di gradimento
che ciascuno di essi ha mostrato nei confronti di due particolari prodotti.
Inizialmente, per ogni cluster che si intende definire, viene scelto un elemento in
maniera casuale, tra quelli disponibili nel dataset; esso sara costituito da una tupla,
ossia un insieme di attributi relativi ad una stessa istanza. In tal modo lalgoritmo
costruisce due cluster e assegna, a ciascuno di essi, il cluster representative appena
determinato.
Per ogni elemento allinterno del dataset viene calcolata, spesso attraverso una
funzione matematica, la distanza euclidea tra tale elemento e il cluster representative
designato per ogni gruppo (in fase iniziale) in maniera casuale. Per distanza euclidea
si intende la distanza geometrica tra due vettori, definita come segue:
qX
d(x1 , x2 ) = (x1 , x2 )2 (3.4)
In questa formula x1 , x2 rappresentano i valori degli attributi di un oggetto. Se,
ad esempio, in fase iniziale, gli elementi scelti casualmente sono i clienti con ID
numero 3 e 4 (i quali rappresentano, rispettivamente, il primo ed il secondo cluster)
e, successivamente, viene preso in esame loggetto con ID cliente pari a 2, la distanza
tra tale elemento e il primo cluster sara:
p
d(x1 , x2 ) = (3 2)2 + (4 2)2 = 2, 23 (3.5)
mentre la distanza tra lelemento con ID cliente pari a 2 e il secondo cluster sara:
p
d(x1 , x2 ) = (3 10)2 +)(4 14)2 = 12, 20 (3.6)
Questo elemento verra, quindi, collocato nel secondo cluster, essendo la distanza
tra esso ed il cluster representative con ID pari a 4 la minore tra le due. E bene
precisare che il calcolo della distanza euclidea non e lunico strumento utile alla
scoperta della somiglianza tra due elementi; ne esistono molti altri, impiegati a
seconda delle evenienze (nel caso di stringhe, ad esempio, e possibile utilizzare la
distanza di Hamming).
A questo punto, una volta ripetuto il suddetto confronto per ogni elemento del
dataset, e quindi aver distribuito ogni istanza al cluster che meglio la rappresenta,
e necessario ricalcolare i K cluster representative secondo le specifiche fornite. Al
contrario della fase iniziale, in tal caso, questultimi verranno scelti separatamente
allinterno di ogni cluster anziche allinterno dellintero dataset. Il risultato sara
quello illustrato nella Figura 3.4.
Un cluster puo essere visto come unarea, in uno spazio n-dimensionale, caratte-
rizzata da una maggiore densita di oggetti [13, pag.234]. Tali oggetti (ossia i dati)
saranno visti, secondo questottica, come dei vettori a n dimensioni. Secondo tale
descrizione, la densita puo essere definita come il numero di elementi in rapporto ad
una porzione unitaria dello spazio a n dimensioni. La quantita n viene definita dal
numero di attributi che caratterizzano ogni elemento. Nella Figura 3.5, ad esem-
pio, viene rappresentata la distribuzione degli elementi di un dataset in funzione di
due attributi. Alcune zone (High Density Region) sono maggiormente popolate
dai vari oggetti. Altre zone (Low Density Region) contengono un minor numero di
elementi. Ogniqualvolta una zona ad alta densita si trova vicina ad altre zone a
densita minore, tale zona puo essere identificata come un cluster.
E anche possibile evidenziare le aree definite come cluster come un sottoinsieme
dellarea alla quale appartengono i diversi punti che rappresentano le varie osser-
vazioni. Partendo da un elemento A, il quale possiede attributi che si avvicinano
molto a quelle caratteristiche del cluster che si vuole mettere in evidenza, e possibile
tracciare un intorno di raggio , come mostrato in Figura 3.6. Qualsiasi elemento
48 3 I Modelli di Previsione
(la cui posizione, anche in questo caso, e funzione di due attributi) ricada allinter-
no dellintorno del punto A fa parte del cluster. Questo tipo di misura e chiamata
center-based density.
Alcuni algoritmi si basano sul calcolo della densita per individuare i cluster
dentro i quali ricadono i vari elementi. Al contrario dei metodi basati sulla ricerca
del cluster representative, tali algoritmi non necessitano della conoscenza, a priori,
del parametro K usato come numero massimo di cluster da definire. Essi esplorano
i dati e ricercano, in maniera automatica, il numero massimo di cluster di elementi
dello stesso genere allinterno del dataset.
Uno dei piu comuni algoritmi di tale genere e DBSCAN (Density-Based Spatial
Clustering of Applications with Noise). Questultimo crea dei cluster identificando le
3.2 Data Clustering 49
zone con alta e con bassa densita allinterno dello spazio a n dimensioni che contiene
tutti i punti. Non e possibile fornire a priori il numero di gruppi da identificare;
lalgoritmo trovera in modo automatico tutte le zone in cui vi e unalta presenza di
elementi con caratteristiche simili.
DBSCAN accetta in ingresso due parametri: il primo e il raggio che ogni
intorno (il quale identifica un cluster) deve avere. Il secondo e un valore che indica
il numero minimo di elementi che ogni cluster deve possedere per essere identificato
come tale. Lalgoritmo esamina un punto scelto in maniera casuale ed osserva tutti
gli elementi contenuti nel proprio intorno. Per fare cio deve individuare quali punti
ricadono, o meno, nella circonferenza delimitata dal raggio di ampiezza calcolando
la distanza tra tali punti ed il centro della circonferenza. Analogamente al caso degli
algoritmi di partizionamento, tale compito viene svolto sfruttando le funzioni per il
calcolo delle distanze come, ad esempio, la distanza euclidea. Dopo aver esaminato
le vicinanze del punto scelto, se in tale intorno ricade un numero sufficiente di punti
da superare la soglia data dal relativo valore fornito in input, viene creato un nuovo
cluster.
Se cio non dovesse avvenire, cioe nel caso in cui nellintorno di raggio del
punto scelto non dovesse ricadere un numero sufficiente di elementi, il punto viene
etichettato come rumore. Un rumore e definito come un punto, o un insieme
di punti, sparsi nellarea con pochi altri oggetti intorno ad essi. Cio significa che
esistono pochi altri elementi che possiedono attributi di valore paragonabile ai punti
di rumore; essi hanno, quindi, poco in comune con la maggior parte degli elementi del
dataset e non entrano a far parte di nessuna categoria particolare. E bene osservare,
tuttavia, che un punto etichettato come rumore potrebbe essere successivamente
incluso nellintorno di un altro punto, e quindi entrare a fare parte di un cluster.
Dopo aver esaminato il primo punto, viene scelto un secondo elemento del dataset.
Si procede come visto finora fino a quando tutti i punti vengono etichettati come
facenti parte di un cluster o come rumore.
Lalgoritmo si avvale del concetto di density-reachability per la definizione dei
vari cluster. Secondo tale definizione, un punto q si dice direttamente raggiungibile
da un punto p (directly density-reachable) se tra i due non vi e una distanza di valore
superiore a . Se esiste una sequenza di punti p1 , p2 , ..., pn , direttamente raggiungibili
tra di loro, dei quali p1 = p e pn = q, allora si dice che q e density-reachable da p
(Figura 3.7).
valore futuro di questi ultimi; inoltre, esse vengono usate per trovare complesse cor-
relazioni nascoste allinterno dei dati. Tutto cio viene svolto con procedure analoghe
a quelle utilizzate dalle cellule del cervello, seppur in maniera molto piu semplice.
Il principale vantaggio dellutilizzo di modelli basati su reti neurali consiste nel
fatto che essi sono capaci di gestire istanze particolarmente ricche di attributi. Inol-
tre sono intrinsecamente vantaggiosi quando e necessario collocare i dati di output
in piu di due gruppi di classificazione.
Per spiegare il funzionamento delle reti neurali e utile, per prima cosa, mostrare
lanalogia con le cellule cerebrali umane. I neuroni possono essere pensati come una
rete di unita computazionali i quali ricevono molti segnali in input parallelamente.
Attraverso i dendriti (dendrites) ciascuno di essi riceve dei segnali in input e, a
sua volta, trasmette un segnale chimico al soma, cioe il centro del neurone. Tale
conversione, da segnale esterno a segnale locale, puo essere rappresentata matema-
ticamente attraverso un valore detto peso il quale moltiplica il segnale in input.
Questultimo puo essere positivo, nel caso di segnali chimici attivatori, o negativo,
nel caso di inibitori. Il centro della cellula, o soma (cell soma), raccoglie tutti que-
sti segnali (proporzionali a quelli forniti in ingresso) mediante un processo che puo
essere assimilato a una somma. Il risultato determina un potenziale che, una volta
raggiunta una certa soglia (bias), permette il trasferimento dellinformazione at-
traverso lassone (axon). Nella Figura 3.8 vengono mostrate le componenti appena
citate.
1, x < 0
g(x) = (3.7)
1, x 0
Lintero processo puo essere riassunto, matematicamente, mediante lequazione:
p
X
y = g(w0 + wi xi ) (3.8)
i=1
o piu gruppi distinti attraverso luso di un vettore. Questultimo deve essere dato
da una combinazione lineare degli stessi parametri che individuano i vari oggetti.
Nel caso di spazio n-dimensionale con n > 2 tale vettore e definito iperpiano. Un
classificatore, inoltre, si dice non lineare se tali osservazioni possono essere separate
da una linea curva, come mostrato in Figura 3.11.
Il vettore
x , che definisce le due aree del classificatore lineare, viene definito vet-
tore delle caratteristiche. Ogni osservazione, corrispondente ad un punto del piano
n-dimensionale, puo essere individuata come combinazione lineare del vettore delle
caratteristiche, le cui componenti vengono moltiplicate per opportuni pesi n .
N
X
xo = n xn (3.9)
n=1
G(
x) =
x + 0 (3.10)
dove x = (x1 , x2 , ..., xn ) e un generico vettore dello spazio n-dimensionale degli
attributi e
e il vettore dei pesi (lincognita del problema). Come ulteriore ipotesi,
si vuole imporre che il valore della funzione G( x ) sia 1 se il punto appartiene al
primo dei due cluster, e 1 se esso appartiene al secondo.
Il vettore G( x ) e mostrato in Figura 3.13.
Per entrare nel dettaglio del meccanismo dellalgoritmo SVM si considerino due
punti dello spazio da classificare: x1 = (1, 1) e x2 = (2, 3). Uno dei possibili metodi
per stabilire la soglia tale da garantire il margine migliore tra i due e calcolare la
distanza media misurando la differenza tra i coefficienti dei due vettori. Il vettore
dei pesi che definira liperpiano avra coefficienti:
= (2, 3) (1, 1) = (, 2) (3.11)
Si osserva, quindi, che la seconda componente dovra essere doppia rispetto alla
prima. In questo modo, le due distanze perpendicolari, tali da congiungere i punti
x1 e x2 con liperpiano, saranno esattamente uguali. Tale situazione e mostrata in
Figura 3.14.
Sostituendo a G(
x ) il punto x1 appartenente al primo cluster si avra:
G(
x ) = + 2 + 0 = 1 (3.12)
sostituendo il punto x2 appartenente al secondo cluster si avra:
G(
x ) = 2 + 6 + 0 = 1 (3.13)
Considerando w0 come incognita dellEquazione 3.13, si ha che:
58 3 I Modelli di Previsione
0 = 1 8 (3.14)
Sostituito questo valore nellEquazione 3.12, si ha:
3 + 1 8 = 1
5 = 2 (3.15)
2
=
5
Tramite e possibile, finalmente, ottenere il vettore dei pesi
, il quale sara:
2 4
=( , ) (3.16)
5 5
Tale vettore e detto support vector. Tramite il prodotto scalare del support vector
con uno degli elementi del dataset e possibile ottenere un valore che indica lappar-
tenenza di tale elemento al primo cluster (se il valore ottenuto risulta essere 1) o
al secondo (se il valore ottenuto e 1). Tale metodologia costituisce lalgoritmo
Support Vector Machine.
Il metodo appena illustrato si presta a essere usato come tecnica di classificazione
in quei casi in cui le possibili classi di uscita sono due (classificazione binaria). Anche
in presenza di oggetti con molti attributi, tale metodo resta unefficace strategia che
restituisce risultati affidabili con il minor errore possibile. Come per le reti neurali,
le support vector machine devono essere opportunamente impostate in modo da
trovare liperpiano che presenti la distanza maggiore da ogni elemento dellarea.
Tale separatore viene individuato attraverso lanalisi del training dataset.
Una possibile applicazione del SVM e la classificazione delle immagini (image
recognition). Unimmagine delle dimensioni di 100 100 pixel, infatti, puo essere
3.3 Data Classification 59
Per ogni nodo viene implementato un costrutto if-else. Il risultato di ogni de-
cisione viene fornito ai nodi successivi, e il processo prosegue fino a quando i dati
arrivano ai nodi foglia. Questi ultimi forniscono il risultato vero e proprio.
Per illustrare il funzionamento di un albero di decisione e utile mostrare un esem-
pio pratico [7, pag.123]. Si supponga di voler prevedere il successo di tre possibili
investimenti finanziari: un ristorante, unazienda di trasporti, un negozio di libri. In
casi come questultimo emerge lausilio dei metodi statistici al fine di condurre un
processo di previsione. Da unintervista con un esperto del settore, il quale si avvale
proprio di tali metodi, emerge che la possibilita di successo del primo investimento
60 3 I Modelli di Previsione
In questo modo nei nodi foglia apparira ogni possibile esito. Un albero di deci-
sione puo essere utilizzato per avere un quadro completo su tutti i possibili sviluppi
di un evento e, quindi, scegliere lalternativa piu vantaggiosa, minimizzando i rischi.
A ogni foglia puo essere associato un valore detto valore atteso; in generale, il valore
atteso di una variabile casuale discreta (che assuma, cioe, solo un numero finito o
una infinita numerabile di valori) e dato dalla somma dei possibili valori di tale
variabile, ciascuno moltiplicato per la probabilita di essere assunto (ossia di veri-
ficarsi). Nellesempio della scelta del business piu remunerativo, esso e dato dalla
somma dei possibili guadagni, o perdite, ciascuno moltiplicato per la probabilita
che tale evento si realizzi. Si avranno, cioe, i seguenti valori:
valore atteso dellinvestimento nel ristorante:
Si puo concludere, quindi, che linvestimento che garantira i risultati migliori sara
quello del ristorante. Tale conclusione rappresenta una previsione sulla strategia che
condurra al profitto maggiore. Gli alberi di decisione rappresentano uno strumento
indispensabile per affrontare quella categoria di problemi in cui e necessario scegliere
lalternativa che permette di minimizzare i rischi (problemi di decision-making).
3.4 Metodi Probabilistici 61
Essi, inoltre, possono essere usati come strumento di classificazione. In tale senso,
ogni foglia puo rappresentare una diversa classe e in ogni nodo interno vengono prese
delle decisioni sugli attributi forniti in input, le quali influenzano la classificazione
finale dellistanza.
Come per tutti gli altri modelli visti finora, dopo essere stato opportunamente
creato, lalbero di decisione permette di compiere delle scelte su istanze di dati mai
viste prima. Come altri modelli, inoltre, lalbero deve essere istruito riguardo ai
criteri che determinano le varie scelte su ogni nodo. Esistono diversi algoritmi per
la costruzione di un albero di decisione. In particolare, per ogni nodo (incluso il
nodo radice), tale algoritmo deve determinare quali sono le caratteristiche di input
e come esse forniranno il valore di uscita; successivamente, sempre per ogni nodo, e
necessario decidere se dovra rappresentare una foglia o, in alternativa, dovra essere
uno dei nodi interni. Per ultimo, sara necessario stabilire la profondita dellalbero
e, una volta giunti ai nodi foglia, cosa dovranno rappresentare i valori attesi.
P (A B)
P (A|B) = (3.20)
P (B)
Il teorema permette di stabilire la probabilita del verificarsi di un evento non di-
rettamente osservabile (quale, ad esempio, la presenza di unappendicite) attraverso
il valore della probabilita di un evento osservabile (quale linnalzamento dei globuli
bianchi). In altri termini, tale teorema si presta perfettamente alla costruzione di un
modello di previsione, in quanto permette di stimare la causa osservando leffetto.
Data la conoscenza del teorema di Bayes e possibile esaminare alcuni dei piu
comuni algoritmi di previsione i quali ne sfruttano le potenzialita.
probabilita composta per il calcolo dellincognita. Tale teorema afferma che, per
eventi indipendenti tra di loro, la probabilita dellevento intersezione di piu eventi
indipendenti e data dal prodotto delle probabilita dei singoli eventi. Cioe:
I termini P (X1 |C) P (X2 |C) ... P (Xn )|C), come gia detto, sono direttamen-
te osservabili, in quanto rappresentano la probabilita che il prodotto C sia stato
acquistato, condizionata dal verificarsi delln-esima osservazione Xn . Attraverso ta-
li considerazioni e possibile calcolare la probabilita che un elemento (nellesempio,
un cliente), etichettato come C e con X1 , X2 , ..., Xn caratteristiche, compia una
determinata azione.
La probabilita P (C|X1 X2 , ..., Xn ) e definita probabilita a priori, in quanto
viene assegnata dopo aver preso in esame le informazioni piu rilevanti raccolte. Per
ottenere un classificatore sfruttando tale risultato e possibile indicare una serie di
classi di uscita Ci . Identificando, ad esempio, ogni classe come un potenziale cliente,
o un gruppo di essi, sara possibile prevedere lesito di una decisione di acquisto
scegliendo la classe alla quale verra associata la probabilita maggiore.
Si puo osservare, infine, che per massimizzare la probabilita a priori di una
classe e necessario massimizzare esclusivamente il numeratore (in quanto, come e
possibile vedere dalla formula del teorema di Bayes, il denominatore e indipendente
dalla classe specifica). Per tale motivo, lesito della previsione puo essere indicato
mediante la formula:
" n
!#
Y
Ci = max P Ci P (Xn |Ci 1) (3.24)
n=1
Tale processo prende il nome dal matematico russo Andrej Andreevic Markov che,
per primo, ne sviluppo la teoria. Modelli di tipo markoviano trovano applicazione in
molti ambiti, dalla progettazione di reti di telecomunicazione allanalisi predittiva.
Un modello costruito attraverso un processo di tale genere si basa su un presupposto,
cioe lipotesi di Markov.
Questultima puo essere riassunta in questo modo: la probabilita del verificarsi
di un evento futuro, calcolata osservando n eventi passati, e pressappoco uguale
alla probabilita del verificarsi dello stesso evento, calcolata osservando solo levento
passato piu recente.
Tale ipotesi puo essere scritta matematicamente in questo modo:
In sintesi, lipotesi di Markov indica che non e necessario ricorrere a dati storici
troppo datati per prevedere lo svolgersi di un evento futuro. Se un evento e condi-
zionato da un solo fenomeno gia avvenuto si parla di approssimazione di Markov di
primo ordine, se vengono considerati due fenomeni si parla di approssimazione di
secondo ordine, e cos via.
Tale enunciato puo essere applicato al calcolo di una probabilita condizionata
tramite luso del teorema di Bayes. Dato un evento X1 , condizionato da una serie
di fenomeni osservati X2 , X3 , Xn (dei quali se ne conosce la probabilita), e possibile
ottenere unapprossimazione di primo livello:
Un grafo cos definito viene chiamato catena di Markov. Esso puo essere inter-
pretato affermando che la probabilita che un sistema passi dallo stato X1 allo stato
X2 e del 35%, mentre la probabilita di restare allo stato X2 e del 60%.
Molti modelli si basano sulla teoria di processi markoviani. Tra questi, lalgo-
ritmo di link analysis ranking PageRank, utilizzato da Google, percorre il grafo del
web e analizza gli archi uscenti e gli archi entranti delle pagine associando un valore
sulla base del quale si effettua lordinamento del motore di ricerca. Esso sfrutta la
conoscenza offerta dal modello di Markov per determinare tale valore sulla base di
quale sito (stato del grafo) si prevede che verra maggiormente visitato.
Un modello di Markov viene definito nascosto se gli stati precedenti, i quali
condizionano quello futuro, sono sconosciuti, cioe non osservabili direttamente. Ogni
stato genera un evento con una certa distribuzione di probabilita che dipende solo
da esso; inoltre, levento e osservabile ma lo stato no. Come ogni modello di Markov,
ogni stato e indipendente dagli altri; inoltre, le osservazioni sono indipendenti tra
di loro.
Per la costruzione di tale modello vengono forniti in ingresso, oltre agli eventi
osservati, tre vettori. Il primo contiene, per ogni possibile stato, un elemento che
rappresenta la probabilita di trovare tale stato nella condizione di partenza. Il secon-
do contiene la probibilita che ogni stato Xn ha di passare allo stato Xn+1 . Lultimo
vettore contiene la probabilita, di ogni stato, di generare un determinato evento.
Anche in questo caso il modello deve essere addestrato a ottenere tali vettori di
probabilita tramite una fase di preparazione usando il training dataset composto
da dati precedenti.
In un modello di Markov nascosto e possibile ottenere diversi risultati in uscita,
tra questi la probabilita del verificarsi di un particolare evento o di una sequenza
di aventi. Queste ultime probabilita vengono calcolate usando il teorema di Bayes.
Una volta ottenuti i parametri appena citati, e possibile risolvere diversi problemi
costruendo il modello attraverso luso di particolari algoritmi. Data, ad esempio, una
sequenza di eventi in ingresso e possibile trovare la sequenza di stati piu probabile
che potrebbe generare tale sequenza; questo problema viene risolto dallalgoritmo
di Viterbi. Attraverso un algoritmo detto algoritmo forward-backward, inoltre, e
possibile trovare la probabilita di una particolare sequenza di eventi.
Le possibilita offerte dal modello di Markov nascosto sono molteplici. Per tale
motivo esso viene utilizzato in molti campi; tra questi, lanalisi predittiva. Nella
seconda meta degli anni ottanta si e cominciato ad applicare lalgoritmo allanalisi
delle sequenze biologiche; da allora questa metodologia e diventata di grande aiuto
nella predizione delle regioni codificanti nella sequenza del genoma umano e nella
previsione degli elementi secondari della struttura dalle sequenze primarie delle
proteine.
neurale, per includere gli oggetti non ancora acquistati da un utente in gruppi
contenenti oggetti gia acquistati.
Il giudizio dei clienti puo essere usato per dare un maggiore o minore peso a
ogni attributo. Anche sistemi di questo genere trovano largo utilizzo tra le piu
comuni piattaforme allinterno del Web.
Sistemi di raccomandazione ibridi. Recenti ricerche hanno dimostrato che un
approccio ibrido, il quale combina le tecniche utilizzate dai sistemi basati sul
filtraggio collaborativo con quelli basati sul filtraggio dei contenuti, risulta es-
sere particolarmente vantaggioso in alcuni casi. Le due strategie possono essere
implementate separatamente o attraverso lo stesso modello.
Esistono diversi approcci per realizzare un sistema di raccomandazione ibrido.
Alcuni di essi prevedono la combinazione dei risultati di diversi sistemi i quali
lavorano parallelamente. Altri prevedono di lavorare sugli attributi usati da di-
versi sistemi per fornire un unico risultato. In altri approcci a cascata i risultati
di un primo modello, costruito da un sistema, vengono usati come input per un
altro modello, costruito da un secondo sistema.
La piattaforma piu nota per lutilizzo di un sistema ibrido e Netflix.
4
Analisi della Regressione
yo = 1 x1 + 2 x2 + ... + 0 + (4.1)
Tali quantita sono ben definite per ogni modello di regressione lineare. In parti-
colare si assume per ipotesi che, per n osservazioni (ossia i vettori xn delle variabili
indipendenti x1 , x2 , xn , costituiti da un solo elemento nel caso semplice), la quan-
tita n sia sempre, per ogni osservazione, una variabile aleatoria a media pari a zero
e varianza costante. Questultima ipotesi e nota come ipotesi di omoschedasticita.
In tale contesto, inoltre, lerrore n associato ad una osservazione e statisticamente
indipendente dallerrore associato ad ogni altra osservazione, ossia due n qualsiasi
hanno covarianza nulla. Cio e impensabile in uno scenario reale dove, spesso, ler-
rore e dovuto ad unimperfezione sistematica della misurazione, durante la quale
unosservazione puo essere funzione di unaltra.
La variabile rappresenta lerrore irriducibile al quale e sottoposto lesito della
previsione. Tale errore puo essere dovuto a problemi di misurazione degli attributi
in input non prevedibili. A causa della presenza di questultimo, i valori riportati
lungo gli assi cartesiani non cadranno sulla retta di partenza ma, invece, risulteranno
discostati da essa. Anche in presenza di misurazioni molto precise ci si aspetta una
certa quantita di errore e, dunque, i punti non formeranno una linea ben definita.
Nello scenario ideale appena descritto, tuttavia, a causa della media a valore nullo e
della varianza costante, e possibile risalire con facilita ai valori reali di output. Cio
non e sempre possibile.
Gli attributi indipendenti relativi a ogni osservazione, per ipotesi, devono esse-
re variabili deterministiche. Cio significa che tali valori saranno sempre ben noti.
Inoltre essi possono essere, a loro volta, restituiti come valore di uscita di ulteriori
modelli di regressione. Come conseguenza, si assume che le variabili indipenden-
ti siano anchesse statisticamente indipendenti tra di loro. Tutte queste assunzioni
sono importanti al fine del calcolo dei coefficienti di regressione . Nonostante sia
ancora possibile realizzare un modello di regressione lineare violando tali ipotesi, cio
potrebbe portare ad ottenere una stima inconsistente dei coefficienti di regressione.
Per le condizioni viste finora, la variabile dipendente sara funzione di una
variabile indipendente x1 e di una variabile aleatoria n :
yo = 1 x1 + 0 + n (4.6)
Cio rende yo , a sua volta, una variabile aleatoria. Data lipotesi di omoschedasti-
cita, il valore medio atteso di tali risultati e pari allequazione della retta 1 x1 + 0 .
Questultima e detta retta di regressione. Lobiettivo della regressione e quello di tro-
vare la retta che si avvicina maggiormente allinsieme dei dati forniti. Si tratta di un
problema di ottimizzazione in quanto, dopo aver determinato i coefficienti di regres-
sione, e possibile stimare il valore di un nuovo punto yo a partire dallosservazione
di misure piu semplici da ottenere.
La fase di addestramento del modello prevede, come per altri strumenti gia
visti, la definizione degli attributi caratteristici di questultimo; in tal caso si tratta
dei coefficienti di regressione , i quali verranno calcolati utilizzando un insieme di
dati storici gia in possesso di chi sta implementando il modello (ossia il training
dataset). Tali dati comprendono, tra i loro attributi, oltre alle variabili indipenden-
ti, anche i campioni delle variabili dipendenti, precedentemente ottenuti. I vettori
osservazione del training dataset includono, dunque, un ulteriore elemento, il qua-
le corrisponde al risultato del modello dati gli elementi indipendenti dello stesso
vettore:
4.2 Regressione Lineare Semplice e Multipla 73
Le stima dei parametri di regressione e ottenuta dai valori dei parametri cui
corrisponde la retta che interpola al meglio le osservazioni. Dato il punto (x1 , y1 ),
la differenza:
y1 (1 x1 + 0 ) = n (4.8)
rappresenta lerrore relativo allattributo x1 . Questo valore, definito scarto, e
anche la distanza dal punto campione alla retta di regressione. E necessario de-
terminare 1 e 1 minimizzando la somma degli scarti al quadrato di ogni punto
osservazione, ossia:
X
min [yn (1 x1 + 0 )]2 (4.9)
n=1
74 4 Analisi della Regressione
yo = 1 x1 + 0 + o (4.12)
Dove x1 rappresenta lo spazio di esposizione e y1 rappresenta il totale delle
vendite. Tali punti vengono riportati su un grafico cartesiano come mostrato in
Figura 4.3.
4.2 Regressione Lineare Semplice e Multipla 75
1 = 3, 2
(4.13)
0 = 1092, 88
Dopo aver determinato 1 e 0 sara, infine, possibile prevedere le vendite set-
timanali sostituendo il valore del nuovo spazio di esposizione nellequazione della
retta di regressione.
Ogni volta in cui, al fine di prevedere una determinata quantia, sono disponibili
piu variabili indipendenti si utilizza un modello di regressione lineare multiplo. Dati
n variabili di input, lequazione generale di un tale modello e:
Yo = X + (4.16)
Per stimare i parametri del modello di regressione multipla si utilizza il metodo
dei minimi quadrati. Questultimo consente di trovare il vettore che minimizza la
somma degli scarti al quadrato. Si dimostra come esso possa essere ottenuto dalla
relazione:
= (X X)1 X Y (4.17)
Dove X e la trasposta della matrice delle variabili indipendenti. Se il numero
di tali variabili e maggiore di due, lequazione del modello descrivera un iperpiano.
Nel caso in cui fosse presente una dipendenza lineare tra gli attributi indipendenti
il termine (X X) sara prossimo allo 0 e non sara possibile calcolare i coefficienti.
E interessante notare come i vari modelli di regressione lineare possano esse-
re utilizzati in un numero elevatissimo di casi diversi. Essi vengono impiegati per
prevedere quantita numeriche quali: temperature, prezzo e quantita di oggetti acqui-
stabili, intervalli di tempo e molti altri ancora. Come appena mostrato, realizzare
un modello lineare prevede la formulazione di alcune ipotesi restrittive sui dati
(tuttavia, il modello risulta essere semplice da realizzare e molto intuitivo).
metodo che non mira a minimizzare lerrore quadratico medio e, dunque, si presta
maggiormente ad essere utilizzato come metodo di classificazione.
Quello logistico e un modello di regressione applicato nei casi in cui la variabile
dipendente y sia riconducibile ai valori 0 e 1 (si dice che essa e di tipo dicotomico, che
puo, cioe, assumere esclusivamente due valori). Il modello logistico viene applicato
a quei casi in cui le variabili di restituzione sono vero o falso, maschio o femmina,
vince o perde, sano o ammalato, etc.
I valori di ingresso sono, come nel caso del modello lineare, delle variabili indi-
pendenti; inoltre, anche in questo caso, una combinazione lineare di questultime
restituisce una variabile dipendente y. La differenza fondamentale, rispetto al mo-
dello lineare, consiste nel fatto che la variabile y viene usata come input per la
funzione sigmoidale:
ey ey ey 1
f (y) = = = (4.18)
ey + 1 ey ey + 1 1 + ey
Sostituendo lequazione lineare della variabile indipendente si ottiene:
1 1
f (y) = = (4.19)
1 + ey 1 + e 1 X0
P (Y = 1|Yo )
ln( ) = X + 0 (4.21)
1 P (Y = 1|Yo )
78 4 Analisi della Regressione
Dopo aver esaminato i modelli matematici che stanno alla base dei processi di predi-
zione, questo capitolo illustra gli strumenti software che implementano tali modelli.
Sono innumerevoli i tool che contengono metodi che prevedono algoritmi che permet-
tono di ottenere i modelli precedentemente esaminati. In questo capitolo verranno
esaminati alcuni di questi strumenti, tra quelli di uso piu comune.
sulla reale efficacia del modello senza la necessita di possedere competenze specifiche
per la valutazione.
Il numero di tool disponibili e liberamente accessibili aumenta parallelamente
alle richieste di analisi predittiva come strumento di supporto. Tali mezzi si diffe-
renziano tra di loro per il grado di complessita con il quale affrontano il problema
della creazione dei modelli. Alcuni contengono opzioni limitate e favoriscono luso da
parte di utenti meno esperti; altri permettono di realizzare modelli particolarmente
complessi, ma necessitano di maggiori conoscenze da parte dellutente. E possibile
citare numerosi tool i quali possono essere piu o meno sfruttati dalle piu importanti
compagnie; nelle prossime sezioni verranno approfonditi gli aspetti salienti di quelli
maggiormente utilizzati e di maggior successo.
5.2 R
Tra i tanti strumenti per lanalisi predittiva, e impossibile non citare R. Si tratta
di un ambiente di sviluppo open-source integrato con un linguaggio di program-
mazione per utilizzo specifico nel contesto del calcolo statistico. Il linguaggio di
programmazione R (Figura 5.1) e largamente utilizzato ai fini dellanalisi statistica
e del data mining. Per estensione potra, dunque, essere utilizzato ai fini dellanalisi
predittiva.
quali: C++, Java, .NET, Python; cio risulta particolarmente utile quando si devono
affrontare problemi che richiedono un elevato onere computazionale. Uno dei punti
di forza di R e la possibilita di mostrare i risultati delle varie implementazioni
attraverso luso di grafici ed opportuni simboli matematici.
A differenza di molti altri tool commerciali specifici (i quali semplificano la scelta
del modello migliore in base al particolare tipo di problema), R permette, sempli-
cemente, di richiamare una o piu funzioni e di utilizzarle con i dati a disposizione.
Esso rappresenta, quindi, unottima base di partenza per familiarizzare con i vari
algoritmi. Il linguaggio di programmazione R e un linguaggio interpretato; pertanto,
in esso, non esiste un compilatore e il codice sorgente viene tradotto da un interprete
in linguaggio macchina al momento dellesecuzione. Linterprete e quel software che
allavvio del programma, riceve unistruzione alla volta (istruzioni scritte nel lin-
guaggio di alto livello, in questo caso R) e la traduce in linguaggio macchina prima
di passarla alla CPU. Solitamente tale processo provoca un rallentamento generale
del software. Tale approccio richiede piu memoria ed e meno veloce, a causa del-
loverhead introdotto dallinterprete stesso. Nel caso di R cio non rappresenta un
problema, in quanto le operazioni svolte durante lesecuzione dei metodi non richie-
dono un numero eccessivo di risorse computazionali, a meno di avere a che fare con
grosse quantita di dati (in tal caso e possibile ridurre il peso della computazione
assegnando alcuni compiti ad altri programmi o ricorrendo alla programmazione
distribuita).
La sintassi di R prevede lassegnazione delle variabili tramite luso delloperatore
< , la seguente istruzione assegna la stringa hello, world! alla variabile x e la
stampa:
> x <- hello, world!
hello, world!
In aggiunta alloperatore di assegnamento, come per altri linguaggi di programma-
zione, esistono diversi altri operatori. Essi possono essere:
Aritmetici (+, , , /) : consentono di svolgere operazioni e assegnare il risultato
direttamente ad una variabile:
> raggio <- 21.35
< Minore
<= Minore o Uguale
> Maggiore
>= Maggiore o uguale
== Uguale
! = Diverso
& Intersezione
82 5 Tool di Analisi Predittiva
| Unione
! Negazione
Di seguito vengono riportati alcuni esempi [3] della sintassi di tali operatori (il
simbolo # precede un commento in R):
> x<- 3:8; #Genera una sequenza di valori (da 3 a 8)
Data Frame: possono essere considerati come matrici dove ogni colonna puo
avere un tipo di dato diverso dalle altre. Rappresentano il modo piu pratico
per gestire tabelle di dati. E possibile specificare un nome per ciascuna colonna;
nel caso in cui venga omesso il nome viene utilizzato quello delloggetto che
costituisce la colonna. Un data frame puo essere realizzato come una matrice le
cui colonne sono costituite da vettori precedentemente definiti. Un esempio di
Data Frame e riportato nel seguente listato:
> specie <- c (2,3,7,8,9,35,37,31,38,36)
> training_indices <- sample(nrow(x) , trainSize)
5.3 Weka
Acronimo di Waikato Environment for Knowledge Analysis, Weka (Figura 5.5) e
un ambiente software open-source per lapprendimento automatico, sviluppato nel-
luniversita di Waikato in Nuova Zelanda. Si tratta di una raccolta di applicazioni,
scritte completamente in Java, le quali implementano procedure di data mining e
5.3 Weka 87
Weka e uno strumento che presenta diversi vantaggi. Innanzitutto, esso e open-
source, in quanto rilasciato con licenza GNU General Public License. In secondo
luogo, poiche interamente implementato in Java, puo essere eseguito su qualunque
sistema operativo supporti la Java Virtual Machine; per tale motivo esso gode di
una elevata portabilita. Ulteriore vantaggio di tale piattaforma e la quantita di
metodi implementati utili sia per il pre-processing dei dati, sia per la costruzione
dei modelli. Essa supporta tutti i piu comuni strumenti di data mining e machine
learning. Questultimi possono essere richiamati con praticita attraverso linterfaccia
grafica inclusa allinterno del software. Weka, infine, ha la capacita di interfacciarsi
con qualsiasi DBMS, purche esistano i driver disponibili per la comunicazione con
Java. Tale potenzialita permette a Weka di avvalersi dei risultati di una query SQL
per ottenere i dati necessari al modello.
Linterfaccia del software, mostrata nella Figura 5.6, e chiamata Explorer. Essa
e costituita da una serie di schede le quali fungono da pannello di controllo per le
varie funzionalita.
Dalla scheda Preprocess e possibile accedere a diverse funzioni per il caricamento
e la visualizzazione dei vari dataset con cui costruire e testare il modello. In Weka
e possibile lavorare con un solo insieme di dati alla volta. Questi ultimi, in genere,
vengono importati da un database, oppure, sono contenuti in un file in formato .CSV
88 5 Tool di Analisi Predittiva
5.4 Orange
Si tratta di un software open-source per la realizzazione di modelli di data mining
e machine learning scritto in Python (Figura 5.8). Orange e un tool di programma-
zione visuale; esso offre un linguaggio che consente la programmazione tramite la
manipolazione grafica degli elementi e non tramite sintassi scritta.
Tra le varie categorie di widget, vengono messi a disposizione tutti quelli ne-
cessari per svolgere la maggior parte dei piu comuni processi per lanalisi dei dati.
Tra questi, e possibile individuare strumenti quali: Naive Bayes, Logistic Regression,
Neural Network, k Nearest Neighbours, Classification Tree, SVM, Linear Regression,
e molti altri. Ognuno di essi ha lo scopo di costruire il corrispondente modello di
predizione utilizzando i dati messi a disposizione attraverso le connessioni. I da-
ti possono essere suddivisi in training e test dataset, mediante lo strumento Data
Sampler, al fine di valutare lefficacia del modello.
Dopo aver realizzato questultimo, infine, e possibile effettuare previsioni in tem-
po reale sfruttando loggetto Predictions, il quale accetta in ingresso i dati ed il mo-
dello precedentemente realizzato e restituisce i risultati. I parametri dei vari modelli,
come anche gli attributi di maggiore interesse, possono essere definiti allinterno di
ogni widget attraverso un menu grafico. Il programma permette la connessione tra
due elementi per i quali loutput del primo e ammissibile come input per il secondo;
inoltre, impedisce la connessione tra elementi per i quali non e possibile interagire.
In questo modo lo sviluppo di modelli di previsione risulta essere particolarmente
efficiente ed intuitivo. I risultati di ogni previsione possono, inoltre, essere visualiz-
zati per una rapida analisi visiva utilizzando strumenti per la visualizzazione, quali
Image Viewer, Go Browser, Scatter Plot, ed altri.
Le caratteristiche appena citate mettono in evidenza il principale punto di forza
di Orange, ossia la praticita. Mediante luso della programmazione visuale e possi-
bile realizzare previsioni, sfruttando i dati in possesso, in poco tempo ed in maniera
intuitiva. Tra le possibilita offerte vi e anche quella di poter modificare il codice
sorgente Python di ciascun widget. In tal modo, possedendo le capacita di pro-
grammazione necessarie, e possibile modificare totalmente le procedure di default
del programma, sfruttandone a pieno le capacita. Per una maggiore accessibilita,
vengono, inoltre, rese disponibili alcune estensioni, le quali contengono procedure
gia definite per realizzare previsioni in ambito medico, economico e scientifico.
92 5 Tool di Analisi Predittiva
6.1 Introduzione
Al fine di illustrare lo svolgersi di un processo di analisi predittiva, verra affrontato
un caso di studio di interesse comune, ossia la previsione dei tempi di attesa in
aeroporto.
Per tutte le fasi del progetto verra utilizzato il tool di data mining chiamato
R, il quale comprende un ambiente di sviluppo ed un proprio linguaggio di pro-
grammazione. La scelta di tale strumento e determinata dalla sua versatilita. Esso,
infatti, contiene molti metodi i quali implementano procedure utili per il tratta-
mento dei dati e per la definizione dei modelli di predizione. Per tale motivo, R si
adatta perfettamente allo scopo di realizzare una previsione partendo da semplici
dati grezzi.
Il percorso da seguire, per la realizzazione di un processo di analisi predittiva,
prevede diverse fasi indispensabili per il successo dellintero procedimento. La prima
parte consiste nella definizione degli obiettivi della predizione. Comprendere a pieno
levento che si vuole prevedere e fondamentale per effettuare la scelta del modello
piu adatto. La fase successiva consiste nello stadio di acquisizione ed elaborazione
dei dati. Questultima si divide in piu sotto-fasi le quali porteranno ad ottenere una
collezione di dati che potranno essere utilizzati per laddestramento ed il testing
del modello. In seguito, infatti, il dataset ottenuto dal filtraggio dei dati grezzi
iniziali verra suddiviso in due gruppi, ossia il training dataset ed il test dataset.
Dopo aver costruito il modello, infine, lultimo stadio prevede la valutazione dei
risultati ottenuti e, di conseguenza, della veridicita del modello di previsione. Di
seguito verranno esposte le varie fasi appena citate.
96 6 Case study: Utilizzo di R per Predire i Ritardi dei Voli
Attributo Descrizione
YEAR Anno in cui viene effettuato il volo
MONTH Mese in cui viene effettuato il volo
DAY OF MONTH Giorno in cui viene effettuato il volo
DAY OF WEEK Giorno della settimana in cui viene effettuato il volo
UNIQUE CARRIER Codice identificativo del velivolo
CARRIER Codice identificativo del velivolo, assegnato da IATA
FL NUM Codice assegnato al volo
ORIGIN AIRPORT ID Codice identificativo dellaeroporto di partenza
ORIGIN Nome dellaeroporto di partenza
ORIGIN CITY NAME Citta di appartenenza dellaeroporto di partenza
ORIGIN STATE Stato di appartenenza dellaeroporto di partenza
DEST AIRPORT ID Codice identificativo dellaeroporto di arrivo
DEST Nome dellaeroporto di arrivo
DEST CITY NAME Citta di appartenenza dellaeroporto di arrivo
DEST STATE Stato di appartenenza dellaeroporto di arrivo
CRS DEP TIME Orario di partenza previsto
DEP TIME Orario di partenza reale
DEP DELAY Differenza tra lorario di partenza previsto e quello reale
CRS ARR TIME Orario di arrivo previsto
ARR TIME Orario di arrivo reale
ARR DELAY Differenza tra lorario di arrivo previsto e quello reale
CANCELLED Booleano: 1 se il volo e stato cancellato
CANCELLATION CODE Codice della cancellazione
DIVERTED Booleano: 1 se il volo e stato dirottato
CRS ELAPSED TIME Durata del volo prevista
ACTUAL ELAPSED TIME Durata del volo reale
DISTANCE Distanza percorsa (miglia)
CARRIER DELAY Ritardo nel carico dei bagagli, in minuti
WEATHER DELAY Ritardo dovuto a condizioni meteorologiche, in minuti
NAS DELAY Ritardo per congestione del National Aviation System, in minuti
SECURITY DELAY Ritardo dovuto a motivi di sicurezza, in minuti
LATE AIRCRAFT DELAY Ritardo dovuto a precedenti ritardi, in minuti
DIV ARR DELAY Differenza tra lorario previsto e quello reale per voli dirottati
Tabella 6.1. Attributi relativi alle osservazioni
E bene notare come lattributo DEST STATE ABR, pur costituito da valori te-
stuali, non e stato eliminato per conservare informazioni relative allaeroporto di
6.3 Analisi e Preparazione dei Dati 99
partenza. Si osserva come tale attributo presenti valori discreti e, per questo moti-
vo, puo essere ancora utilizzato, in un modello di regressione lineare, se tali valori
vengono associati ad alcuni indici numerici tramite il metodo factor(). Median-
te questultimo, ciascun valore alfabetico verra assegnato ad un indice numerico;
dunque, sara possibile usare la variabile DEST STATE ABR:
> > aeroporto_2015$CANCELLATION_CODE <- factor(aeroporto_2015$CANCELLATION_CODE)
Usando il metodo summary(), il quale restituisce il numero di osservazioni corri-
spondenti ad ogni possibile valore discreto di una variabile, e possibile determinare
il numero di osservazioni relativo ad ogni valore discreto di DEST STATE ABR:
> summary(aeroporto_tot$ORIGIN_STATE_ABR)
AL AR AZ CA CO FL GA HI IL IN KY LA MA MD ME MI MN MO NC NE
183 288 928 8520 1506 22012 6093 101 7836 129 521 857 5125 1962 355 3237 942 1083 5438 39
NH NJ NM NV NY OH OR PA PR SC TN TX UT VA VI VT WA WI WY
176 572 79 1544 90911 2584 227 340 1893 769 1173 4758 699 3904 231 379 593 386 2
Il risultato del metodo mostra come CANCELLATION CODE possa assumere esclusi-
vamente 39 valori possibili, i quali rappresentano alcuni dei codici che vengono attri-
buiti ai diversi aeroporti in tutto il mondo dalla IATA (International Air Transport
Association).
Poiche allinterno dei dati prelevati, sono presenti, tra i vari attributi, informazio-
ni numeriche sul ritardo che ha caratterizzato ogni volo, lalgoritmo che verra scelto
per la realizzazione del modello sara un algoritmo di apprendimento supervisiona-
to. Al fine di indicare esplicitamente tale intervallo temporale e utile evidenziare
un attributo di uscita il quale rappresenta il ritardo e che costituira la variabile di
restituzione del modello. Tale valore sara dato dallintervallo di attesa prima dellar-
rivo di ogni aereo (ARR DELAY) e verra , per convenienza, rinominato come OUTPUT
mediante la sintassi:
> colnames(aeroporto_2015)[colnames(aeroporto_2015)=="ARR_DELAY"] <- "OUTPUT"
Lattributo OUTPUT rappresenta, dunque, la variabile indipendente. Esso po-
tra, inoltre, indicare eventuali anticipi mediante valori negativi. I restanti attributi
rappresenteranno, invece, le variabili indipendenti del modello.
Dopo aver definito attributi dipendenti ed indipendenti, e necessario esaminare
il dataset al fine di individuare le variabili le quali hanno un reale impatto nel deter-
minare il ritardo di arrivo di un aereo. Tale operazione, in casi piu complessi, viene
svolta mediante lintervento di esperti del settore. In questo caso verranno rimosse
le variabili, le quali, intuitivamente, non rappresenteranno una possibile causa del
mancato rispetto dellorario di arrivo previsto per ogni aereo. Le variabili YEAR, FL
NUMBER, ORIGIN AIRPORT ID, DEST AIRPORT ID e DISTANCE risultano non avere
alcun peso su tale ritardo, verranno quindi rimosse mediante la seguenti istruzione:
> aeroporto_2015 <- subset(aeroporto_2015, select = -c(YEAR, FL_NUM, ORIGIN_AIRPORT_ID, DEST_AIRPORT_ID))
Il dataset modificato in tale maniera contiene esclusivamente valori numerici i
quali hanno, quasi tutti, un impatto nel determinare i tempi di ritardo di un viaggio
100 6 Case study: Utilizzo di R per Predire i Ritardi dei Voli
return(numGiorni);
}
dove il costrutto function introduce la definizione della funzione, la quale ac-
cettera in ingresso il mese e il giorno in cui e stato effettuato ogni volo (ossia, i primi
due attributi di ogni osservazione) e restituira la minore tra le differenze, in giorni,
tra tale data e ogni data del vettore delle date festive (denominato vacanze). Il
metodo paste() serve a comporre una stringa a partire da piu stringhe, le quali,
in tal caso, saranno costituite dai parametri mese e giorno forniti alla funzione. La
stringa numGiorni <- as.numeric(min(abs(data-vacanze))) contiene i metodi
abs() il quale preleva il valori assoluti della differenze tra lelemento data ed ogni
elemento del vettore vacanze (ogni differenza potra essere positiva, se la data con-
frontata e precedente a quella dellosservazione, oppure negativa, nel caso contrario)
ed il metodo min(), il quale preleva la piu piccola tra tali differenze.
La funzione cos definita potra essere, infine, utilizzata sui dati appartenen-
ti ad ogni osservazione al fine di associare a questultima il valore di restituzione
numGiorni. Cio puo essere realizzato mediante il metodo mapply(), il quale, co-
me primo parametro, invoca la funzione indicata per ogni coppia di elementi delle
colonne MONTH e DAY OF MONTH; il risultato sara aggiunto alla rispettiva tupla.
> aeroporto_2015$GiorniVacanze <- mapply(GiorniAlleVacanze, aeroporto_2015$MONTH, aeroporto_2015$DAY_OF_MONTH)
Il dataset cos ottenuto conterra unulteriore informazione la quale fornira un
ulteriore punto di forza alla veridicita del modello.
Dopo aver ottenuto tutti gli attributi con cui si intende implementare il modello,
e bene verificare alcune delle ipotesi che sono state assunte durante la definizione del
modello di regressione lineare. Tra tali ipotesi, la piu importante e quella che prevede
la mancanza di unelevata correlazione statistica tra gli attributi del dataset. Essa
viene definita ipotesi di multicollinearita ed e importante per garantire il calcolo
di coefficienti di regressione coerenti. Tale ipotesi puo essere verificata mediante
il metodo cor(). Questultimo crea una matrice quadrata le cui righe e colonne
contengono gli attributi del dataset; per ogni elemento di tale matrice, il metodo
fornisce la covarianza di ogni coppia di attributi:
> matrice_correlazioni <- cov(aeroporto_2015)
Utilizzando tale matrice, mostrata in Figura 6.2, e possibile individuare gli
attributi statisticamente correlati tra di loro.
Sfruttando il medoto findCorrelation(), contenuto nel pacchetto caret, e
possibile ottenere suggerimenti sugli attributi che dovrebbero essere eliminati per
garantire un basso livello di correlazione tra gli attributi del dataset:
102 6 Case study: Utilizzo di R per Predire i Ritardi dei Voli
Figura 6.2. Matrice delle correlazioni tra gli attributi del dataset
E importante, a questo punto, considerare lordine con il quale i vari dati vengo-
no prelevati e collocati nei due gruppi. Realizzare un training dataset, utilizzando
rispettivamente, le prime osservazioni del dataset di partenza, infatti, non e sem-
pre una scelta possibile. Osservando la tabella aeroporto 2015 e possibile notare
come i vari dati siano ordinati secondo il mese in cui sono stati prelevati. Se ot-
tenuta in questordine, una tale collezione di dati non permette la realizzazione di
un modello di previsione valido in quanto il training dataset deve, necessariamente,
contenere informazioni relative allintera collezioni dei dati di partenza. Impiegan-
do, invece, esclusivamente le prime 116.573 osservazioni, relative ai primi mesi, il
modello non riusultera essere realmente rappresentativo della totalita delle infor-
mazioni disponibili. Una possibile soluzione e quella di prelevare le informazioni da
collocare nel training dataset in maniera casuale. Cio viene realizzato mediante i
seguenti comandi:
> set.seed(123)
Per praticita, sara utile affiancare i valori previsti con quelli osservati. Se la
maggior parte di essi risulteranno essere relativamente simili tra di loro il modello
potra essere considerato valido e potra essere impiegato per realizzare previsioni.
Al fine di realizzare unanalisi approfondita e possibile realizzare ulteriori prove le
quali garantiranno, in futuro, una maggiore precisione dei risultati.
Durante lo svolgimento della presente tesi sono stati approfonditi gli aspetti prin-
cipali dellanalisi predittiva. Tale disciplina e stata descritta partendo dallinsieme
delle tecniche che costituiscono il mondo dellanalisi dei dati digitali, ossia le tecniche
di data mining e di machine learning. Queste ultime, a loro volta, sfruttano teorie
statistiche per formulare strumenti capaci di utilizzare le informazioni, contenute
nei dati, al fine di prevedere lo svolgersi degli avvenimenti futuri.
Lanalisi predittiva si e evoluta partendo dalle discipline appena citate diven-
tando un vero e proprio strumento professionale a disposizione di chiunque voglia
minimizzare la probabilita di eventuali rischi nellaffrontare unimportante decisio-
ne. Sono state illustrate, infatti, molte delle attuali applicazioni di tali metodologie
in ambiti diversi, quali il marketing, la medicina e la sicurezza. Questi ultimi hanno
integrato lanalisi dei dati in maniera sempre piu efficiente, sviluppando un vero e
proprio percorso diventato ormai un metodo comunemente utilizzato per ricavare
quante piu informazioni possibili sul futuro in maniera affidabile. Tale percorso si
compone di una successione di processi da eseguire con un particolare ordine, ed
e stato illustrato a partire dalla raccolta dei dati grezzi fino allesame svolto sui
risultati finali.
La piu importante caratteristica messa in evidenza costituisce anche la regola piu
importante di qualsiasi previsione basata sui dati: al fine di prevedere un evento futu-
ro e, prima di tutto, necessario raccogliere informazioni riguardo il comportamento
passato delloggetto della previsione stessa.
Sulle informazioni appena citate, si basa la parte successiva della tesi. In parti-
colare sono stati analizzati i cosiddetti Big Data, ossia grosse collezioni di dati grezzi
contenenti enormi quantita di informazioni. Sono stati analizzati le fonti dalle quali
proviene una cos ampia mole di dati e, in seguito, gli strumenti capaci di elaborarli.
I Big Data hanno la capacita di fornire un contributo determinante nello sviluppo
di quegli strumenti, sopracitati, tramite i quali vengono effettuate le previsioni vere
e proprie.
In seguito, tali strumenti sono stati oggetto principale della trattazione; si tratta
di modelli matematici, statistici e grafici in grado di utilizzare i dati in modo da
realizzare una rappresentazione della realta passata e di determinare uno schema,
che potra essere impiegato per rappresentare la realta futura. Ognuno di questi
strumenti viene utilizzato in vari ambiti diversi, in base alle proprie caratteristiche
110 7 Conclusioni e uno Sguardo al Futuro
ed al tipo di dato che viene restituito. Per ciascuno di essi, inoltre, sono stati illustrati
i principali vantaggi e svantaggi. Particolare rilievo e stato dato a quella particolare
tipologia di modelli denominati di regressione. Questi ultimi costituiscono una
categoria di strumenti particolarmente utilizzati in vari contesti applicativi.
Nellultima parte sono stati analizzati alcuni dei software in grado di implemen-
tare i modelli appena citati. Data lesistenza di unenorme varieta di tali applicazio-
ni, durante la trattazione sono stati esaminati solo alcuni di essi, i quali presentano
caratteristiche di particolare rilievo rispetto agli altri. Uno di essi e stato utilizzato,
infine, per affrontare un problema reale che richiedeva la conoscenza di informazioni
future al fine di minimizzare i tempi di attesa in aeroporto.
Questultimo e solo un piccolo esempio delle innumerevoli applicazioni attuali
e potenziali dei modelli di previsione. Dati i motivi del successo dellanalisi predit-
tiva, gia esposti durante la presente trattazione, e facile comprendere il successo
che questultima riscuote in misura sempre maggiore, tra le varie organizzazioni
professionali le quali decidono di includerla nei propri processi decisionali. Essa, al
giorno doggi, trova spazio allinterno degli enti piu diversi quali aziende, governi,
ospedali, enti di beneficenza, universita e molti altri ancora. Lefficienza degli in-
numerevoli servizi che questultimi offrono, puo essere notevolmente incrementata
esclusivamente attraverso i risultati delle previsioni.
Levoluzione degli strumenti digitali, della diffusione dei Big Data e dei progressi
scientifici favorisce lespansione dellutilizzo dellanalisi predittiva come strumento
a favore dei servizi. Attualmente, il numero di tool e metodi per la realizzazione di
modelli di previsione e in continuo aumento. Essi vengono resi sempre piu accessibili
mediante luso di Internet e di piattaforme sul web, e di pratico utilizzo, grazie ad
interfacce grafiche intuitive le quali possono essere utilizzate anche da parte di utenti
non esperti.
Il vantaggio di poter realizzare una previsione appare essere di cos grande inte-
resse che il possesso di grosse quantita di dati, relative a coloro i quali usufruiscono
dei vari servizi, e diventato un punto di forza per ogni organizzazione. Al fine di rea-
lizzare modelli di regressione, classificazione, sistemi di raccomandazione ed altro,
tali enti hanno deciso di interscambiare i dati in proprio possesso al fine di ottenere
vantaggi reciproci nellimplementare strumenti predittivi. In tal modo il flusso di
informazioni diventa anchesso sempre piu accessibile e permette la realizzazione di
modelli sempre piu efficienti.
Le capacita di predizione vengono incluse in molti sistemi informatici ed inoltre la
crescente richiesta sta portando alla diffusione capillare degli algoritmi di predizione
su supporti di ultima generazione. E facile immaginare come tali metodi saranno
presto integrati allinterno di applicazioni per smarthphone, dispositivi wearable
come gli smartwatch e, persino, sulle automobili, al fine di implementare meccanismi
di sicurezza.
Nonostante si tratti esclusivamente di semplici congetture, e facile immaginare
come una tale diffusione delle potenzialita offerte dallanalisi predittiva comporti
unenorme quantita di potenziali nuove applicazioni. Si stima [6] che entro il 2020
luso delle previsioni trovera applicazioni in diversi nuovi campi che ancora non
hanno pienamente sperimentato le sue potenzialita.
Alcune delle possibili applicazioni future prevedibili al momento sono le seguenti:
7 Conclusioni e uno Sguardo al Futuro 111
Dopo tanti sacrifici ed una lunga attesa sono finalmente giunto al termine di questa
prima parte del mio percorso universitario e desidero ringraziare tutte le persone
che mi hanno sostenuto in questi anni e mi hanno permesso di raggiungere tale
obiettivo.
Vorrei ringraziare, innanzitutto, la mia famiglia e, in modo particolare, mia
madre ed i miei nonni che mi hanno sempre guidato e mi hanno fornito i mezzi per
il raggiungimento di un traguardo tanto desiderato.
Ringrazio il Professor Domenico Ursino per avermi seguito con grande pazien-
za durante tutto il periodo di realizzazione del progetto ed i ragazzi del gruppo
Barbiana 2.0 per la disponibilita e le piacevoli ore passate insieme.
Ringrazio di cuore tutti i miei amici, dentro e fuori il mondo universitario, per
avermi donato giornate stupende e serate ancora piu belle.
Un ringraziamento particolare va ad una persona speciale senza la quale non
sarei riuscito a raggiungere tale traguardo e, soprattutto, a superare i momenti piu
difficili.
Infine, vorrei ringraziare colui che, nonostante non ci sia piu, e sempre stato al
mio fianco per ispirarmi e darmi la forza di non arrendermi mai.
Riferimenti bibliografici