Python Data Science con - Edizioni LSWR
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
- Giuseppe Maggi - Data Science con Python La guida completa, dai Big Data al Machine Learning Analisi e gestione dei dati con Python >> Data Science: NumPy, Pandas e visualizzazione dei dati >> Big Data con Hadoop, PySpark e SparkSQL >> Machine Learning con scikit-learn >>
Data Science con Python | La guida completa, dai Big Data al Machine Learning Autore: Giuseppe Maggi Collana: Publisher: Marco Aleotti Progetto grafico: Roberta Venturieri Immagine di copertina: © Ryzhi | Shutterstock © 2020 Edizioni Lswr* – Tutti i diritti riservati ISBN: 978-88-6895-806-0 eISBN: 978-88-6895-807-7 I diritti di traduzione, di memorizzazione elettronica, di riproduzione e adattamento totale o parziale con qualsiasi mezzo (compresi i microfilm e le copie fotostatiche), sono riservati per tutti i Paesi. Le fotocopie per uso personale del lettore possono essere effettuate nei limiti del 15% di ciascun volume dietro pagamento alla SIAE del compenso previsto dall’art. 68, commi 4 e 5, della legge 22 aprile 1941 n. 633. Le fotocopie effettuate per finalità di carattere professionale, economico o commerciale o comunque per uso diverso da quello per- sonale possono essere effettuate a seguito di specifica autorizzazione rilasciata da CLEARedi, Centro Licenze e Autorizzazioni per le Riproduzioni Editoriali, Corso di Porta Romana 108, 20122 Milano, e-mail autorizzazioni@clearedi.org e sito web www.clearedi.org. La presente pubblicazione contiene le opinioni dell’autore e ha lo scopo di fornire informazioni precise e accurate. L’elaborazione dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’editore per eventuali errori o inesattezze. L’Editore ha compiuto ogni sforzo per ottenere e citare le fonti esatte delle illustrazioni. Qualora in qualche caso non fosse riuscito a reperire gli aventi diritto è a disposizione per rimediare a eventuali involontarie omissioni o errori nei riferimenti citati. Tutti i marchi registrati citati appartengono ai legittimi proprietari. Via G. Spadolini, 7 20141 Milano (MI) Tel. 02 881841 www.edizionilswr.it Printed in Italy Finito di stampare nel mese di maggio 2020 presso “Rotomail Italia” S.p.A., Vignate (MI) (*) Edizioni Lswr è un marchio di La Tribuna Srl. La Tribuna Srl fa parte di .
Indice 1. Data Science, Big Data e Machine Learning: un po’ di orientamento.......................................................................... 7 La nuova epoca............................................................................................................................. 7 Perché esistono così tanti dati?................................................................................................ 8 Fattori di accelerazione del nuovo millennio......................................................................... 8 Il dato da fattore tecnico a fattore decisionale................................................................... 10 La monetizzazione del dato......................................................................................................12 Data Science.................................................................................................................................13 Big Data........................................................................................................................................ 14 Intelligenza Artificiale e Machine Learning......................................................................... 16 Il percorso del libro.....................................................................................................................17 Il codice del libro......................................................................................................................... 18 2. Analizzare dati in Python: tutto ciò che serve..................19 Python: panoramica sul linguaggio....................................................................................... 20 Elaborare dati da file..................................................................................................................56 Statistica: concetti e utilizzo in Python.................................................................................67 Database e Python.....................................................................................................................70 Esempio riepilogativo: cittadini generosi.............................................................................79 3. Ambiente di lavoro per la Data Science....................................87 La console più completa: IPython......................................................................................... 88 Jupyter Notebook.......................................................................................................................97 Anaconda, Conda e Miniconda............................................................................................104 4. NumPy, la geniale libreria matematica...................................109 Gli array: definizione e forma.................................................................................................110 Tipi di dato..................................................................................................................................112 Operazioni tra array..................................................................................................................114 Generare array: tanti modi diversi........................................................................................116 Leggere e modificare dati negli array..................................................................................120 Filtrare dati................................................................................................................................. 124 3
Data Science con Python Esempio: creiamo un gioco di memoria con NumPy...................................................... 127 Statistica e matematica sugli array...................................................................................... 131 Lavorare con i file..................................................................................................................... 133 Esempio: variazioni di valori.................................................................................................. 136 5. Pandas, l’ambiente più completo..................................................141 Pandas: il progetto...................................................................................................................142 Iniziare con Pandas: i DataFrame.........................................................................................142 Indici e posizioni nei DataFrame: un’importante differenza..........................................146 Series: righe e colonne di DataFrame..................................................................................150 Filtrare e ordinare dati............................................................................................................. 153 Excel e database: integrazione con i DataFrame.............................................................. 155 Altri modi per creare un DataFrame.................................................................................... 157 Manipolare ed esplorare DataFrame................................................................................... 158 Esempio: lotteria con Pandas................................................................................................160 Calcoli e statistiche su DataFrame......................................................................................166 Raggruppamenti.......................................................................................................................170 JOIN............................................................................................................................................. 174 Salvare DataFrame su file....................................................................................................... 176 Esempio: analisi di transazioni bancarie............................................................................ 178 6. Visualizzare dati: l’importanza dei grafici......................... 185 Matplotlib, un’introduzione...................................................................................................186 I nostri primi grafici..................................................................................................................186 Altri tipi di grafici......................................................................................................................189 Salvare grafici e modificarne le misure: accesso alla Figure.......................................... 195 Generare grafici da NumPy....................................................................................................196 Pandas e i grafici.......................................................................................................................199 Seaborn, il motore grafico moderno................................................................................... 202 7. Tecnologie per I Big Data.................................................................. 205 Apache Hadoop ......................................................................................................................206 Hadoop: funzionamento interno...........................................................................................211 HDFS: comandi per operare sul file system...................................................................... 213 MapReduce: elaborare grandi quantità di dati................................................................. 216 Apache Spark............................................................................................................................ 221 8. Big Data con PySpark...........................................................................225 RDD: Resilient Distributed Dataset.................................................................................... 226 Trasformazioni e azioni.......................................................................................................... 226 RDD: prime operazioni........................................................................................................... 228 Iterazione sugli elementi....................................................................................................... 230 Da RDD a struttura dati Python............................................................................................ 231 MapReduce in Spark............................................................................................................... 232 Filtri e raggruppamenti.......................................................................................................... 235 Partizionare dati....................................................................................................................... 237 4
Indice Salvataggio su file di testo....................................................................................................240 Esecuzione di script PySpark................................................................................................240 PySpark su notebook Jupyter................................................................................................ 241 Esempio: analisi di dati da CSV........................................................................................... 242 9. SparkSQL per Big Data strutturati............................................. 247 Che cosa sono i DataFrame.................................................................................................. 248 Conoscere un DataFrame......................................................................................................250 Metodi per elaborare dati..................................................................................................... 252 Presentare dati......................................................................................................................... 254 Usare il linguaggio SQL.......................................................................................................... 256 Formati Parquet e JSON........................................................................................................ 258 Esempio: analisi dati bancari................................................................................................ 259 10. Machine Learning: dai concetti di base agli strumenti......................................... 265 Che cos'è il Machine Learning............................................................................................. 266 Tipologie di Machine Learning............................................................................................. 268 Come farlo in Python.............................................................................................................. 269 Dataset in scikit-learn............................................................................................................ 270 11. Machine Learning al lavoro: primi passi e regressione lineare..................................................275 Il nostro approccio al Machine Learning........................................................................... 277 Concetti chiave: rapido ripasso........................................................................................... 277 Primo esempio: una semplice regressione lineare.......................................................... 279 Valutare i risultati della regressione lineare.....................................................................284 Suddivisione di dati tra training e test............................................................................... 287 Regressione lineare multipla................................................................................................ 289 12. Machine Learning al lavoro: classificazione e preprocessing.................................................. 291 Classificatori: alberi decisionali........................................................................................... 292 Valutare i classificatori...........................................................................................................300 Classificatore RandomForest...............................................................................................304 K-Nearest Neighbors.............................................................................................................. 305 Regressione logistica..............................................................................................................309 Naive Bayesian........................................................................................................................... 311 Matrici sparse...........................................................................................................................314 Preprocessare i dati................................................................................................................. 315 Esempio: regressione lineare e encoding di features..................................................... 334 Persistenza dei modelli...........................................................................................................337 Elaborazione di testi............................................................................................................... 338 Esempio: classificare recensioni.......................................................................................... 345 INDICE ANALITICO............................................................................................. 349 5
1 Data Science, Big Data e Machine Learning: un po’ di orientamento Studiare il passato, monitorare il presente, predire le tenden- ze future. Sono questi gli scopi della Data Science, ma per diventare professionisti di questa scienza multidiscipli- nare servono risposte ad alcune domande: perché esi- stono così tanti dati? Chi li genera? Qual è il loro valore oggi? La nuova epoca Da un po’ di anni tutto sembra più intelligente. Apri un sito di e-commerce e ti propone da solo proprio ciò che stavi cercando. La casa per poche decine di euro inizia a parlarti con gli assistenti vocali e ogni oggetto dotato di un cuore elettronico sembra conoscerti sempre di più. È la nuova cosiddetta società dei dati che ha ingoiato il nostro mondo e l’ha reso, per molti versi, più facile da vivere. In tutto questo, potranno risiedere anche minacce come alcuni paventano ma sicura- mente sono tantissime le opportunità. Siamo solo all’inizio di quest’epoca e se ne può diventare parte integrante e attiva acqui- sendo gli strumenti giusti. Servono percorsi completi e ben strutturati che mettano in luce origini e problematiche di questo contesto offrendo al contempo gli strumenti concettuali e pratici più adatti per affrontarlo: un percorso simile è ciò che offre il libro che qui inizia. 7
Data Science con Python Perché esistono così tanti dati? Si parla moltissimo di dati. I dati sono sempre esistiti ma oggigiorno sembrano essere diventati un’emergenza gestionale e un’opportunità senza pari. Ma chi genera tutti questi dati e perché la tematica è così scottante oggi? Buona parte della responsabilità è nostra. Siamo noi essere umani che generiamo tan- tissimi di questi dati, affiancati da applicazioni e sensori elettronici. A proposito delle loro finalità, potremmo individuare alcune categorie principali di dati: • dati per il dialogo tra applicazioni: molte applicazioni generano dati per dialo- gare con altre applicazioni. Siamo nel campo delle cosiddette attività machine to machine, basate su sessioni di lavoro in cui l’essere umano svolge il ruolo di controllore mentre le macchine producono e consumano dati reciprocamente; • dati di origine umana: i dati generati da persone possono essere destinati sia ad applicazioni sia ad altri esseri umani. Nel primo caso, possiamo pensare a tutte quelle applicazioni in cui il lavoro di un individuo è stato, in buona parte, sostituito da un servizio on-line come l’e-commerce, l’e-banking o meccanismi di prenotazione. I dati scambiati tra persone rappresentano il grande flusso di comunicazione che svolgiamo ogni giorno con i nostri simili. Una buona parte di ciò deriva dai social network ma pensiamo a tutti i sistemi di chat e alle comu- nicazioni via e-mail; • dati di tipo aziendale: consideriamo l’azienda in senso lato, potrebbe trattarsi di una corporate privata, di un’istituzione o di un’azienda pubblica. Questi dati vertono sul complesso delle attività e ne descrivono gli aspetti più disparati: da flussi economici e fiscalità alle transazioni, dalla cura del cliente agli aspetti personali dei dipendenti. Anche le amministrazioni pubbliche sono una fonte potenzialmente ricchissima di dati tanto che negli ultimi anni si è affermato il fenomeno degli open data, un sistema per cui i dati del settore pubblico – prodot- ti, ricordiamo, in buona parte con gli sforzi economici dei contribuenti – vengono resi disponibili liberamente per essere sfruttati in applicazioni. Fattori di accelerazione del nuovo millennio Se la mole di dati disponibile oggi è così imponente e la sua crescita non accenna a rallentare è in buona parte conseguenza di alcuni fenomeni del nuovo millennio che caratterizzano fortemente la tecnologia. Vediamo quali sono i principali: • il Cloud: è uno dei termini più usati ormai, non solo in discorsi tecnici ma anche nella vita comune dei non addetti ai lavori. Con esso si intende un sistema di risorse di elaborazione e memorizzazione flessibile e reso disponibile come 8
Data Science, Big Data e Machine Learning: un po’ di orientamento Capitolo 1 servizio dai principali operatori in Internet. La prima esperienza che si ha a titolo personale con il Cloud è probabilmente con i servizi di immagazzinamento di file. Lo fa Google con Drive, Apple con iCloud, Microsoft con OneDrive e via dicendo. Proprio questa possibilità di espansione della memoria fisica resa condivisibi- le, sempre disponibile e sicura ha permesso la velocissima crescita dei dati a disposizione di privati e aziende rendendo obsolete pratiche come l’acquisto di nuovi server e la gestione in prima persona di backup e di altre problematiche di sicurezza. Altra potente risorsa fornita in Cloud è la capacità di elaborazione. Dove non arriva più la singola macchina o rete di macchine arriva l’intelligen- za remota del Cloud. Sottoscrivendo un servizio su misura si possono inviare i propri dati in elaborazione per poi ottenere i risultati. Tale realtà ha preso così piede e ha sposato così saldamente le esigenze delle aziende che si parla sempre più spesso di Hybrid Cloud ovvero la combinazione tra Cloud pubblico e risorse private, ottenendo così i vantaggi di un tipo e dell’altro. Inoltre, il Cloud incontra anche le principali esigenze economiche delle aziende non costringendo mai ad abbonamenti fissi ma basandosi generalmente sul concetto di pay as you go che include la possibilità di pagare solo le risorse effettivamente utilizzate; • diffusione capillare della connessione a Internet: le reti sono i vettori fonda- mentali per la trasmissione di dati soprattutto da quando immagazzinamento ed elaborazione sono affidate al Cloud. Il loro miglioramento e potenziamento con la diffusione della fibra e l’avanzamento degli standard è stato sicuramente uno dei fattori che ha permesso un tale aumento della mole di dati esistenti. La diffusione della Rete è diventata capillare ai massimi livelli mediante i contratti offerti dagli operatori per dispositivi mobili. Inoltre, con l’integrazione della com- ponentistica WiFi su board elettroniche ridotte ed economiche la connettività si è estesa anche a molti oggetti comuni in cui esse possono essere innestate; • dispositivi mobili: un altro aspetto che ha incrementato velocemente l’accu- mulazione di dati in privato e in Cloud è la diffusione dei dispositivi mobili. Ci riferiamo in primis, ma non solo, a telefoni cellulari – ormai comunemente detti smartphone – e tablet. La loro disponibilità in ogni tasca e le loro elevate capacità di elaborazione rispetto a un tempo hanno permesso l’immediato sal- vataggio di informazioni. Se fino a pochi anni fa per inviare un contenuto in Rete era necessario aspettare di tornare a casa o raggiungere il proprio ufficio, ora testi, foto e video possono essere salvati e inviati istantaneamente e, a volte, addirittura all’insaputa dell’utente mediante la sincronizzazione automatica con archivi in Cloud; • social network: i cosiddetti social sono una realtà ormai persistente nei nostri giorni. Che ci si voglia informare, farsi conoscere o catturare l’attenzione, avere 9
Data Science con Python un profilo su uno o più social network è assolutamente comune. I più famo- si sono Twitter, Facebook, Instagram ma ne stiamo solo nominando alcuni. Ne esistono molti, a volte anche focalizzati su un’unica tematica, e sono diventati uno dei principali accumulatori di informazioni personali, dati, abitudini compor- tamentali degli utenti. Se l’analisi dati si è così rivoluzionata negli ultimi anni è in buona parte merito loro. Sono la realtà informatica che ha probabilmente mag- giormente beneficiato della diffusione del mobile e della connessione Internet su ogni dispositivo e il loro utilizzo è costantemente alimentato dalle esperienze che viviamo e dagli stimoli che riceviamo; • sensori: si tratta di dispositivi elettronici piccolissimi che servono a trasformare stimoli elettrici in segnale. Sono applicati a porte, oggetti, elementi infrastruttu- rali, dispositivi mobili e oggetti indossabili con l’unico scopo di rilevare dati da trasmettere ad altri componenti che li immagazzineranno o li trasmetteranno in Rete. Esistono da tempo ma l’attuale diffusione pervasiva, anche in corri- spondenza di tutti i loro usi che sono stati concepiti, ha trasformato i sensori elettronici in una delle principali fonti di dati al mondo. Il dato da fattore tecnico a fattore decisionale Il dato nasce come un fattore tecnico. La quotazione di un titolo in Borsa, la rilevazione di un sensore elettronico, l’indicazione di una temperatura sono tutti dati che vengono rilevati e associati, in genere, con un’unità di misura. Fin qui abbiamo un dato “freddo”, per lo più di natura tecnica, che quantizza il valore istantaneo della grandezza cui si rife- risce. La sfida dell’analisi dati moderna è trasformare i dati in fattori decisionali, in gra- do di guidare aziende, privati e istituzioni – più o meno direttamente – nel prendere deci- sioni che in questo modo diverrebbero “più scientifiche” e meno indotte da emotività. Pertanto, tutto ciò che si frappone nella transizione dal dato tecnico al dato decisionale è l’analisi dei dati, intesa in tutta la molteplicità delle sue sfaccettature. Si parla sempre più spesso di aziende data-driven ovvero aziende che si lasciano gui- dare dai dati verso una cosciente accettazione delle decisioni da intraprendere. Tale volontà e consapevolezza dell’importanza fondante del dato spinge le aziende a cercare competenze individuate in genere nell’assunzione di personale specializzato o nell’in- staurazione di rapporti di collaborazione con imprese rivolte proprio al trattamento dei dati. Un’azienda può non svolgere in proprio attività di analisi ma di sicuro svolge in prima persona una delle fasi più importanti: l’acquisizione del dato. I dati vengono acquisiti per lo più da chi avrà poi bisogno di utilizzarli e per questo è importante che la raccolta dati segua delle linee guida necessarie, come le seguenti: 10
Data Science, Big Data e Machine Learning: un po’ di orientamento Capitolo 1 • i dati non vanno sprecati. Fino ad alcuni anni fa, quando il Cloud era ancora una prospettiva e tutto veniva custodito su propri server e database, si badava a mantenere archivi funzionali evitando di sprecare spazio accumulando dati non sicuramente utili. Al giorno d’oggi tutto è cambiato. Il Cloud, coerentemente con le possibilità economiche di ciascuno, permette di accumulare grandissime quantità di dati a costi decisamente ridotti. Pertanto, si tende a immagazzinare qualsiasi informazione, dalla più significativa alle più accessorie. Qualsiasi ser- vizio può incrementare la propria capacità di accumulazione di dati a patto che ci sia l’impegno a non scartare niente. Se parliamo di un servizio di e-commerce, sicuramente conserveremo i dati di “business” come acquisti, dati personali dei clienti, pagamenti, ma qualsiasi impulso che arrivi dall’esterno può essere con- siderato una fonte di dati: accessi degli utenti, articoli visualizzati anche se non acquistati, tempo di permanenza su singoli annunci, link cliccati e così via; • i dati devono essere circostanziati il più possibile. Un dato nasce in un determi- nato istante caratterizzato da una serie di circostanze ben precise. Se, per esem- pio, una persona scatta una foto con il suo smartphone, il dato più importante da salvare è la foto stessa. Questo però può essere arricchito da tutto ciò che il dispositivo è in grado di intercettare in quel momento: dai più banali data e ora, si può passare al segnale GPS che individua la posizione di scatto della foto ma anche eventuali note che si permette di lasciare all’utente nonché rilevazioni di sensori e altro ancora; • il dato va trattato. Una fase fondamentale di ogni analisi dati è la preparazione del dato che spesso viene chiamato pulizia. Proprio perché la raccolta dati è così veloce e completa, il materiale che deve essere sottoposto ad analisi va estratto e organizzato il meglio possibile per facilitare il suo trattamento; • la raccolta dati va concordata tra le varie aree dell’azienda. Nonostante lavorino per la stessa compagnia, molti dipendenti fanno dei lavori totalmente diversi. Chi si occupa di organizzare fisicamente il necessario per la raccolta dati sono tipicamente informatici, addetti allo sviluppo di app mobile, applicazioni web, sistemisti e amministratori di database. Gente brava nel proprio lavoro ma non sempre a conoscenza alle attività di business dell’azienda. Per questo è neces- sario che “cosa” raccogliere sia frutto di un confronto aperto tra le varie aree dell’azienda. Chi si occupa di strategie aziendali deve saper spiegare al personale tecnico di che tipo di informazioni ha bisogno e questi ultimi dovranno escogitare i modi migliori affinché la raccolta fisica dei dati non trascuri tali aspetti; • dati e informazioni devono essere ben comunicati. Anche questo, come il punto precedente, è qualcosa che include una stretta collaborazione tra tutti i rami dell’azienda. Un informatico può trovarsi bene con tabelle numeriche, un esperto 11
Data Science con Python di statistica magari preferirebbe grafici molto sintetici mentre un addetto dell’a- rea business avrebbe bisogno di grafici più dinamici o infografiche. Ognuno, a seconda della propria mansione e preparazione, ha necessità diverse in base alla visualizzazione dei dati. Questo aspetto è sicuramente fondamentale perché un’adeguata visualizzazione permette una maggiore comunicatività dei risultati dell’analisi ed è per questo che le visualizzazioni dei dati dovranno essere il più mirate possibile al destinatario. Una corretta raccolta dei dati agevola chi si si occuperà della loro analisi. Per questo è importante che proprio questa fase venga concordata tra le parti, siano esse figure interne o esterne all’azienda. Una raccolta di dati miope o non ben coordinata potrebbe portare allo spreco di importanti filoni di informazione. La monetizzazione del dato Il dato nella storia è spesso stato trattato come una sorta di prodotto secondario di qualsiasi processo, per così dire, un suo effetto involontario. Di dati ne sono stati regi- strati tantissimi da quando esiste la scrittura ma per lo più per contabilità, gestione dei magazzini, quantizzazione di ricchezze e scopi simili. Chiunque nei secoli si sia impegnato a raccogliere dati provenienti da una qualche atti- vità, l’ha fatto per lo più per propria comodità senza immaginare che oggi a una raccolta di dati potrebbe essere attribuito un valore economico da chi ha fatto dell’analisi dei dati un business. Immaginiamo un’azienda agricola che raccolga uno storico riguardante la propria pro- duzione. Se si collezionasse lo stesso tipo di informazioni da tante aziende dello stesso settore potremmo costituire un archivio dal grande valore, per esempio, per un’industria chimica che fa ricerche sui fertilizzanti. Oltre all’approccio data-driven, si è affermato un modello di commercializzazione dei dati dove qualcuno è interessato a vendere dati e qualcun altro a comprarli. Con la cre- azione di un mercato simile possono nascere aziende dedicate solo alla distribuzione e rivendita di dati forniti da altri, eventualmente dopo opportune operazioni di pulizia e rielaborazione. Tale discorso si incrocia con quello molto importante della privacy. Esistono leggi seve- re che richiamano a un uso consapevole e rispettoso delle informazioni. Non è un argomento trattato in questo libro in quanto siamo interessati a soffermarci su aspetti tecnici, ma sottolineiamo che tutte le entità coinvolte in scambi di dati dovrebbero sempre garantire la sicurezza e il rispetto dei propri utenti. 12
Data Science, Big Data e Machine Learning: un po’ di orientamento Capitolo 1 Data Science Tutto ciò che può mettere ordine in un contesto così vivo ruota attorno a una scienza, relativamente nuova in quanto esistente da una cinquantina d’anni, ma salita alla ribalta dell’opinione pubblica da non molto: la Data Science, la scienza dei dati. Questa espressione pare sia nata tanti anni fa come un sinonimo di Computer Science, e in effetti l’elaborazione massiva dei dati è uno dei principali motivi per cui l’informatica esiste. Per Data Science intendiamo una disciplina, dai confini estesi e non determinabili net- tamente, che si occupa di interpretare, elaborare e valorizzare i dati. Nasce dall’in- contro di una moltitudine di conoscenze che spaziano dalla statistica alla matematica, dall’informatica alle scienze. La definizione è fin troppo sintetica considerando la quantità di materie a cui la Data Science deve attingere. L’importanza di questa scienza ha reso il data scientist, colui che se ne occupa, una delle figure più ricercate nel mondo del lavoro. Un data scientist ha il compito di analizzare dati al fine di individuare modelli al loro interno che possano essere funzionali agli scopi del suo committente (aziende, ammi- nistrazioni, privati ecc.). Un progetto di Data Science consta di una serie di fasi: 1. descrizione del problema: è generalmente una problematica molto pratica, per esempio il risollevamento di un settore in crisi dell’azienda o la soluzione di un’emorragia di clienti. In questa fase, vanno circoscritte bene le caratteristi- che dei risultati che si vogliono ottenere nonché eventuali tempistiche entro cui conseguirli; 2. raccolta dei dati: possono essere dataset già presenti in azienda, magari prove- nienti da un sistema di raccolta come sondaggi on-line o risposte a call center. In molti altri casi, vengono acquisiti per altre vie. L’intero patrimonio informati- vo che viene così accumulato va poi organizzato, pulito e strutturato per poter costituire la fonte di lavoro del data scientist; 3. esplorazione dei dati di partenza: piuttosto che iniziare immediatamente a ela- borarli ci si dedica al loro studio. Vengono in questi casi filtrati, riassunti in tabelle e ancora di più visualizzati in grafici. Tutto ciò permette di individuarne confini, lacune ed evidenziarne le caratteristiche; 4. analisi dei dati: questa prende le mosse dalle considerazioni che sono state tratte dall’esplorazione dei dati raccolti. È il momento di individuare modelli e, a tale fine, in dipendenza del tipo di risultato che si vuole ottenere, si possono applicare le più varie tecniche a disposizione. Proprio su questi aspetti pratici ci si concentrerà molto nel corso del testo; 13
Data Science con Python 5. applicazione dei modelli: qui si vede se il progetto ha dato i frutti sperati. Sarà generalmente qualche settore dell’azienda a dover trarre beneficio dai modelli e molto spesso il lavoro del data scientist si concluderà con la produzione di una serie di linee guida, espresse nei termini del linguaggio di business dell’azienda, che serviranno a risolvere la problematica proposta. Da questa scaletta sintetica, si può vedere come il lavoro del data scientist sia perfet- tamente calato nella realtà aziendale. L’input su cui egli lavora viene prodotto da qualche ramo dell’azienda e i risultati della ricerca dovranno essere usati dalla stessa o altre componenti aziendali. Un aspetto molto importante in questo è comprendere che al progetto parteciperanno figure differenti le quali interagiranno con i data scientist e il loro rapporto verterà attor- no alla correttezza dei linguaggi utilizzati. Il data scientist avrà bisogno di corrette indicazioni dal management e probabilmente anche di aiuto nella corretta interpretazione dei dati che gli sono stati forniti. Egli stes- so dovrà però essere altrettanto bravo nell’esprimere i risultati delle sue ricerche in indicazioni che possano essere comprensibili per il personale non tecnico dell’azienda. Con il progresso tecnologico il destino del data scientist si è legato sempre più, un po’ per convenienza un po’ per necessità, a Big Data e Intelligenza Artificiale: le nuove tappe del nostro viaggio. Big Data Tutte le certezze dell’analisi dati tradizionale sono andate in crisi di fronte ai Big Data. Parliamo di uno dei fenomeni più significativi degli ultimi decenni, attualissimo, molto discusso, del quale si è faticato anche a trovare una definizione pregnante. Se ne è ini- ziato a parlare nei primissimi anni del millennio quando venne formulata la cosiddetta regola delle 3 V. Consiste nella scelta di tre termini che caratterizzano il fenomeno Big Data nei tratti essenziali e che iniziano tutti con la lettera V: • Volume: la quantità di dati da trattare è estremamente alta. Questo non è l’unico fattore che caratterizza tale realtà ma sicuramente il più indicativo. Non a caso alla parola Data è stato anteposto l’aggettivo Big. Il rapporto di tali volumi con quelli con cui siamo abituati a trattare quotidianamente sulle nostre macchine non ha paragone. Se i file con cui abbiamo a che fare a casa o in ufficio misurano Megabyte o al massimo Gigabyte, gli archivi Big Data si misurano nell’ordine dei Terabyte o Petabyte; • Velocità: altro fattore importante è la rapidità con cui i dati vengono accumulati. Sono sempre più i contesti in cui un flusso di dati senza sosta (streaming) afflui- 14
Data Science, Big Data e Machine Learning: un po’ di orientamento Capitolo 1 sce ai server. Ciò ha portato alla necessità di gestirne l’accumulazione eliminando perdite di dati, evitando il blocco dei sistemi e riducendo al minimo i tempi di latenza. Casi di questo tipo possono riguardare, a titolo di esempio, transazioni finanziarie, settore industriale o dispositivi IoT (Internet of Things) con la costante trasmissione di eventi rilevati; • Varietà: a differenza dei classici archivi fortemente strutturati, i dati che ven- gono accumulati nei sistemi Big Data sono altamente variegati. Basti pensare ai post che si pubblicano continuamente sui social network. Sono composti da testo, immagini, video e altri contenuti multimediali, in numero, quantità e ordine mutevole da caso a caso. In realtà, questa legge rappresenta il nocciolo essenziale dei Big Data ma di “V”, nel tempo, ne sono state individuate molte altre. Una caratteristica di cui si è parlato molto è la Veridicità dei dati. La quantità e la velocità di accumulazione devono comunque permettere l’affidabilità delle informazioni. Dati errati o malformati possono non avere alcun valore e, in casi peggiori, portare a valutazioni non corrette. Tale aspetto non è faci- le da verificare in quanto il dato spesso viene prodotto da esseri umani, in genere comu- nissimi utenti, e viene trattato più volte fino ad arrivare al momento dell’archiviazione. Grandi volumi a grande velocità caratterizzati da grande varietà portano necessaria- mente a problematiche di organizzazione e di accoglienza del dato in arrivo. Come organizzarli? Prevedere tipi di dati di ogni genere possibile? Strutturarli in arrivo o even- tualmente rielaborarli in seguito? I più comuni paradigmi di organizzazione dei sistemi di dati, affermatisi via via nel tempo, sono: • suddivisione in comparti stagni, detto in genere silos. Ogni comparto dell’azienda mantiene i propri archivi e non v’è alcuna condivisione con gli altri. Ciò è molto diffuso e può verificarsi per molti motivi tra cui: mancanza di interesse, riserva- tezza e protezione delle informazioni, visione poco lungimirante; • Datawarehouse: archivi strutturati di dati. Si cerca di integrare tutti i dati dell’a- zienda in un unico sistema nella speranza di ottimizzarne la gestione e sfrut- tarne, un giorno, sinergie e correlazioni. È un sistema molto in voga negli ultimi decenni che può portare ad attività di analisi particolarmente interessanti. I dati all’interno devono tuttavia essere strutturati al momento della loro introduzione; • Data Lake (lago di dati). È un’organizzazione per cui ogni dato in arrivo, di qual- siasi genere, viene accantonato in un unico storage senza alcuna elaborazione in ingresso. Ciò inverte tutto ciò che gli archivi tradizionali trattano. Se si pensa a classici database relazionali prevale il principio dello schema on-write (strut- turazione in scrittura) ovvero esiste uno schema di base per il database e i dati 15
Data Science con Python possono essere inseriti solo se si adattano a questa struttura. Nel Data Lake pre- vale il paradigma inverso, lo schema on-read, ovvero i dati vengono accumulati e salvati e solo nel momento in cui li si vorrà utilizzare si provvederà a interpretarli e adattarli a una struttura. Tale approccio, adottato da molte aziende, facilita l’acquisizione e il salvataggio di dati nonostante l’alta velocità e la varietà. Nonostante le aziende generalmente si rivolgano a uno specifico di questi approcci, una via che prevale sempre più spesso è quella dell’integrazione. Una compagnia può ave- re bisogno di un Data Lake per l’accumulazione di dati ma anche di un Datawarehouse per la loro analisi. Tali sistemi possono convivere contemporaneamente dedicandosi alla raccolta di dati diversi o costituendo fasi attigue dello stesso ciclo di vita. Intelligenza Artificiale e Machine Learning Nonostante la loro grande utilità, da sempre si sa che le macchine sono “stupide”. In fin dei conti, in informatica si impara subito che un computer non sa fare niente se non è l’essere umano ad analizzare un problema, trasformarlo in un algoritmo e codificarlo in un programma. Così è sempre stato finché non si è iniziato a parlare di Intelligenza Artificiale. Come si evince dall’espressione stessa, lo scopo dell’Intelligenza Artificiale consiste nell’indurre una sorta di ragionamento spontaneo nella macchina che la possa portare, in autonomia, a risolvere problemi senza la diretta guida dell’uomo. Se ne è iniziato a parlare negli anni Cinquanta e la tematica ha da subito affascinato sia la platea di ricercatori sia il pubblico, come dimostra l’ampio numero di ricerche condotte ma anche la vasta produzione di libri e film che ha visto umanoidi e macchine intelligenti protagonisti. Da suggestioni e ipotesi iniziali, i continui progressi avutisi nei decenni grazie a com- pagnie come IBM e la diffusione di linguaggi di programmazione come il Lisp hanno rafforzato l’idea che tale branca dell’informatica potesse davvero avere successo. In realtà, tutta la seconda metà del secolo scorso è stata dominata da vicende alterne costellate da delusioni ma anche da successi come l’affermazione del cervellone Deep Blue in una serie di partite a scacchi contro il campione del mondo Garry Kasparov. Proprio eventi come quest’ultimo hanno dimostrato che, oltre a farla ragionare in base a strutture impostate, si potesse mettere una macchina in condizione di imparare. Questo è proprio il concetto chiave del Machine Learning, la branca dell’Intelligenza Artificiale in cui il programmatore guida la macchina in una fase di training basata sullo studio di dati storici. Grazie a questa attività, viene prodotto un modello che può essere applicato nella risoluzione di problemi con dati nuovi. 16
Data Science, Big Data e Machine Learning: un po’ di orientamento Capitolo 1 A differenza dell’approccio classico, fondato sulla stesura di algoritmi risolutivi, con il Machine Learning sarà la macchina a scoprire cosa compone il modello e compito del data scientist sarà quello di sottoporla a fasi di training sempre più efficaci con dati ricchi e ben trattati e di sperimentare i modelli prodotti sottoponendoli a test. È gran parte merito del Machine Learning se i sistemi che utilizziamo nei dispositivi mobile, nella domotica, in Internet o in qualsiasi altro luogo sembrano sempre più intelligenti. Man mano che un sistema lavora, molti dati su di esso e sugli utenti pos- sono essere raccolti e utilizzati per la fase di apprendimento: in base a questo i modelli individuati permetteranno di sviluppare previsioni. Chi vuole applicarsi in questo campo deve conoscere bene gli strumenti di base della Data Science, approfondire i vari algoritmi di training che esistono per scegliere il più adatto ai dati e alla problematica che si deve affrontare. Il percorso del libro Questo libro mira a formare la figura professionale del data scientist, pronta per poter- si cimentare nelle principali sfide che ricerca e industria pongono. Il linguaggio scelto è Python, uno dei più usati al mondo e in particolar modo in questo ambito, protagonista dell’informatica dalla fine degli anni Ottanta. Si tratta di un linguaggio ricco, dotato di tutto il necessario, ma privo di ridondanze, sostenuto da un’attivissima comunità di sviluppatori che costantemente lo rifornisce di strumenti. Tuttavia, gran parte dei principi che si impareranno possono essere applicati nel mede- simo settore sfruttando altri linguaggi apprezzati per la Data Science (Java, R, Julia, Scala e altri ancora). Il percorso che offre il libro è costituito dai seguenti step: 1. studio dei fondamenti del linguaggio Python: si imparano le basi del linguaggio in maniera approfondita con particolare attenzione a tutto ciò che servirà nei prossimi capitoli. Ci si dedica tuttavia all’analisi dei dati tradizionale approfon- dendo aspetti come la lettura e scrittura di dati su file (i principali formati come CSV, XML e JSON), l’interazione con database e l’uso di strutture dati; 2. strumenti per la Data Science: Python offre già un insieme di tecniche molto efficienti per l’analisi dei dati ma il data scientist deve conoscere almeno altre tre librerie dominanti nel settore: NumPy, Pandas e Matplotlib. Con queste sarà in grado di gestire e trattare vettori e matrici di dati con la maggiore efficienza possibile. Tali strumenti saranno indispensabili in ogni ambito che verrà trattato, dall’elaborazione di file fino alle tecniche di Machine Learning; 3. tecnologie e tecniche per la gestione e l’analisi dei Big Data: quando le moli di dati da trattare assumono consistenze e modalità di accumulazione imponenti si 17
Data Science con Python entra nell’ambito dei Big Data e da lì sarà indispensabile conoscere gli ambienti per l’elaborazione di informazioni distribuite su molti nodi. Questa tematica così cruciale al giorno d’oggi verrà esplorata con cura e sarà approfondita tecnica- mente con la risoluzione di problemi per i framework Hadoop e Spark; 4. Machine Learning: l’opera, infine, si concentra sulle tecniche di Machine Learning offrendo una panoramica sui principali approcci possibili e una descri- zione con applicazione pratica degli algoritmi maggiormente utilizzati. Il percorso mira a mantenere la coerenza dei suoi obiettivi formando il professionista su molti concetti e tecniche e illustrando il tutto in maniera organica, privilegiando in primis l’applicazione pratica. Il codice del libro Tutti gli esempi di codice trattati nel testo sono disponibili per il download al seguente link: https://datascientist-python.blogspot.com. Riepilogo La realtà della Data Science è particolarmente articolata al giorno d’oggi. Spazia dal- l’analisi di dati presenti su file di dimensioni perfettamente gestibili fino alla vastità degli archivi Big Data, conservabili solo su reti composte da molte macchine. Affronta interrogazioni su dati storici ma risponde anche a necessità di predizioni di tendenze future caratterizzate dalla maggiore affidabilità possibile. Pertanto, per affrontare un percorso di formazione da data scientist è necessario per prima cosa orientarsi e questo capitolo mira proprio a questo. Viene spiegata l’importanza dei dati al giorno d’oggi e perché costituiscano una risorsa economica importantissima e autonoma tanto che sempre più aziende nascono fina- lizzate alla loro analisi e sfruttamento. Si illustra il lavoro del data scientist e come in esso si intersechino scenari Big Data e tecniche di Machine Learning. Con la prima espressione si intende un’accumulazio- ne di ingenti quantità di dati, molto variegati, ad altissima velocità. Con la seconda, si indica una branca dell’Intelligenza Artificiale che descrive una serie di algoritmi di apprendimento con cui una macchina può imparare dai dati e in base a questo attuare previsioni per il futuro. Il capitolo si conclude con un piano dell’opera che più che illustrare la distribuzione degli argomenti evidenzia le finalità del libro e il suo essere uno strumento unico per la formazione della figura professionale del data scientist. 18
Puoi anche leggere