Concetti e tecniche di Data Science in Python

A cura di Andrea D'Agostino

Cos'è il Machine Learning: come spiego il concetto ad un neofita

Cos'è il Machine Learning: come spiego il concetto ad un neofita

Spiegare cosa sia il machine learning è relativamente semplice, ma il discorso va tarato in base all'interlocutore. Alcuni termini possono essere interpretati in modo diverso dipendentemente dal contesto, quindi è giusto ricercare un vocabolario quanto più generale possibile.

Il mio discorso sarà tarato per i neofiti del campo: persone che sanno poco di analisi quantitativa ma che vogliono iniziare ad approcciarsi alla materia per diversi motivi. In particolare, spero che questo articolo possa aiutare giovani figure ad orientarsi nello spazio universitario e lavorativo.

Che cos'è il Machine Learning?

Il termine machine learning si traduce in italiano apprendimento automatico ed è un ramo dell'intelligenza artificiale, che a sua volta è una branchia dell'informatica.

Nel machine learning si utilizzano i dati numerici per addestrare computer a completare dei compiti specifici. Il risultato è un algoritmo che a sua volta utilizza un modello del fenomeno per trovare la soluzione ad un problema. Il termine addestrare è fondamentale ed è l'attività che caratterizza maggiormente il campo. Successivamente vedremo nel dettaglio cosa significa.

La differenza tra un software che applica una regola specifica per risolvere un compito (ad esempio, se una frase contiene la parola "casa", creare una categoria "immobile" in un foglio di calcolo Excel) e un algoritmo di machine learning è che quest'ultimo non deve essere esplicitamente programmato per risolverlo correttamente.

Un algoritmo di machine learning utilizza un modello per inferire matematicamente delle regole nei dati tale che quest'ultimo sia in grado di trovare una soluzione generica al problema.

Diamo quindi una definizione generale:

Il machine learning è un ramo dell'intelligenza artificiale che permette a software di utilizzare dati numerici per trovare soluzioni a specifici compiti senza essere esplicitamente programmati per farlo.

Queste soluzioni possono essere più o meno accurate, e difficilmente si arriva a giungere performance paragonabili a quelle umane. Questo non deve però destare preoccupazioni: la maggior parte dei problemi affrontati col machine learning offre performance che soddisfano i casi d'uso. Ci basti pensare alle raccomandazioni dei prodotti su Amazon oppure all'identificazione di spam di Gmail. Vedremo degli esempi a breve.

Che si intende per algoritmo, modello e performance?

Chiariamo alcuni concetti prima di continuare.

Un algoritmo non è altro che una serie di istruzioni seguite da un computer. È sicuramente una parola molto inflazionata al momento (algoritmo di Facebook, algoritmo di Twitter e così via), ma di fatto è un concetto molto semplice.

Un modello è un software che viene inserito nell'algoritmo e che ci serve per trovare la soluzione al nostro problema. Poiché spesso non conosciamo la vera soluzione, queste vengono chiamate predizioni.

Prima di essere utilizzato per risolvere problemi importanti, un modello viene sottoposto ad una serie di test che ne valutano la performance. Questa può essere calcolata solo se possediamo un set di dati che ci permette di confrontare la realtà con la predizione del modello. Se la performance ci soddisfa allora useremo il modello, altrimenti decidere di addestreremo nuovamente oppure di usarne un altro.

Esempio di una pipeline di machine learning

Cosa significa "addestrare un modello"?

Come abbiamo menzionato, ad un modello vengono forniti dati numerici per trovare delle soluzioni generalizzabili. L'atto di mostrare questi dati al modello e di permettere a quest'ultimo di apprendere si chiama training (addestramento).

Durante il training, l'algoritmo di apprendimento cerca di imparare i pattern che legano i dati insieme partendo da certe ipotesi. Ad esempio, gli algoritmi probabilistici fondano il loro funzionamento proprio nel dedurre le probabilità che un evento accada in presenza di certi dati.

L'addestramento è controllato attraverso gli iperparametri, che ci permettono di regolare/tarare come il modello interpreta i dati e molto altro. Ogni modello ha i suoi iperparametri che variano in base alla logica di funzionamento (ce ne sono veramente tanti). Uno degli aspetti più importanti del lavoro di un data scientist è proprio trovare quali siano gli iperparametri giusti per un determinato modello. Spesso è una vera e propria ricerca che può durare anche molto tempo.

Una volta tarato il modello e addestrato, occorre calcolare le performance per comprendere se siamo soddisfatti o meno delle sue predizioni. Se lo siamo, la fase di training si considera conclusa e si procede con le seguenti fasi di sviluppo.

Un modello addestrato si comporta come qualsiasi altro software: riceve input e restituisce output. In input ci saranno i dati del fenomeno, in output invece le predizioni.

Tipi di apprendimento automatico

Il machine learning può essere diviso fondamentalmente in tre aree: apprendimento supervisionato, non supervisionato e per rinforzo. Vediamo come l'addestramento di questi algoritmi differisce proprio in base alla sottocategoria alla quale appartiene.

Sottocategorie del machine learning

Apprendimento supervisionato

Gli algoritmi che si basano sull'apprendimento supervisionato hanno bisogno di essere addestrati su dati che al loro interno contengono la risposta esatta al problema, in modo tale da comprendere quale sia la relazione tra quest'ultima ed il fenomeno.

Ad esempio, un dataset per un task supervisionato potrebbe essere quello che contiene i dati di proprietà immobiliari e il loro prezzo. Se volessimo predire il prezzo di un immobile, l'algoritmo dovrebbe essere addestrato a comprendere l'associazione tra caratteristiche della casa, come numero di camere, metri calpestabili e altro e proprio il prezzo.

In gergo diciamo che le caratteristiche di un fenomeno facciano parte del feature set (denotato con \( X \) , variabile aleatoria indipendente). La variabile da predire è la variabile dipendente (perché dipende dalle caratteristiche, per l'appunto), denotata tipicamente con \( y \).

Riassumiamo con una frase cosa è l'apprendimento supervisionato.

L'apprendimento supervisionato è una sottocategoria di apprendimento automatico che racchiude algoritmi che hanno bisogno di dati in forma X e y. X è l'insieme delle caratteristiche del fenomeno, y è l'osservazione che vogliamo predire.

Un algoritmo supervisionato apprende la relazione tra X e y ed è in grado di predire una nuova y data una X non appartenente al set di addestramento.

L'ultima parte della definizione potrebbe essere un po' complicata, quindi cerchiamo di capire meglio cosa si intende X non appartenente al set di addestramento.

L'obiettivo di un algoritmo di machine learning supervisionato è quello di predire qualcosa date delle caratteristiche di un fenomeno. Durante il training, un modello predittivo impara le relazioni tra queste e poi viene valutato.

Usando una metafora,

un modello predittivo non è che un bambino a scuola che studia per il suo piccolo test. Durante le esercitazioni (training), il bambino ha accesso alle risposte corrette ed è quindi in grado di perfezionare il suo apprendimento. Al test finale, il bambino sarà sottoposto a delle domande senza avere accesso alla soluzione corretta.

X (domande al test finale) non fa parte del set di addestramento (domande di esercitazione), e quindi il bambino (modello predittivo) dovrà trovare la soluzione (y) più precisa possibile in base all'apprendimento al quale è stato sottoposto.

Fanno parte dell'apprendimento supervisionato gli algoritmi di regressione (predizione di un valore numerico) e classificazione (predizione di una categoria).

Apprendimento non supervisionato

In questo caso i nostri algoritmi non necessitano di avere accesso alla risposta corretta nel nostro dataset, e quindi necessitano solo di un feature set X.

Com'è possibile? Beh perché la logica di questi algoritmi è completamente diversa. Non tutti i modelli di machine learning devono comportarsi come il bambino nella metafora. Infatti, gli algoritmi di apprendimento non supervisionato cercano di scoprire pattern nascosti nei dati per raggruppare, separare o manipolare i dati in qualche modo.

La bellezza di questi algoritmi è che non necessitano dell'intervento umano per fare il loro lavoro. Basta passare ad uno di questi i nostri dati e il gioco è fatto.

Fanno parte dell'apprendimento non supervisionato gli algoritmi di clustering (raggruppamento), anomaly e signal detection (identificazione di anomalie e di segnale) e quelli di riduzione della dimensionalità.

Ci sono anche algoritmi che funzionano in parte in maniera supervisionata e parte in maniera non supervisionata, ma questi sono tipicamente algoritmi ad-hoc creati da grandi aziende o da team molto grandi.

Apprendimento per rinforzo

L'apprendimento per rinforzo, chiamato anche reinforcement learning, viene spesso considerato un argomento ostico e separato dai due menzionati. In realtà il concetto è molto semplice: programmiamo un software, chiamato agente, per apprendere come completare un certo compito (task) in uno specifico ambiente e offriamo ricompense o punizioni in base a come performa.

La logica è di premiare l'agente quando raggiunge il risultato oppure punirlo quando fa qualcosa che lo allontana dal raggiungimento dello stesso. In maniera ciclica, il modello impara le regole per massimizzare la funzione di fitness, cioè quella funzione matematica che definisce la ricompensa, e minimizza l'errore, cioè la punizione. Questo permette un apprendimento simile a quello umano: quello basato sul trial and error.

Sentdex è un esponente del machine learning su YouTube. Consiglio altamente di seguire il suo canale e di guardare questa playlist dove programma un algoritmo di RF a giocare una partita di Starcraft II.

Un altro video particolarmente efficace a comunicare la potenza del reinforcement learning è questo

Esempi di applicazione del machine learning

Per consolidare la nostra interpretazione di cosa sia il machine learning, vediamo alcuni esempi pratici di come viene usato nella vita di tutti i giorni. Ognuno di questi casi d'uso è stato messo in atto da un team di data science, e se scegliete di lavorare nel campo anche voi potreste lavorare su progetti del genere!

Identificazione anomalie

Avete presente quando una banca nota una transazione anomala e vi chiede il permesso più volte per essere sicuri che siete voi effettivamente ad autorizzarla? Ecco. Dietro questi meccanismi ci sono algoritmi di anomaly detection che utilizzando i dati comportamentali riescono a cogliere comportamenti che divergono da quelli usuali. Estremamente utili per bloccare una transazione non autorizzata nel contesto bancario, altrettanto utile durante il monitoraggio di fenomeni naturali, come con i terremoti e uragani.

Classificazione di immagini e di testi

VI siete mai chiesti come fa l'iPhone a sfruttare il nostro volto per funzionalità come FaceID? Anche se non è l'unico meccanismo coinvolto, Apple utilizza il machine learning per classificare le immagini che provengono dalla nostra fotocamera. In questo caso, la classificazione è binaria: presenza o meno di un volto riconosciuto nell'immagine.

Gmail ha uno degli algoritmi anti-spam più famosi. Basta aprire il nostro account email e vedere la casella dello spam piena di email dannose. Come fa Google a sapere che una email è potenzialmente dannosa e piazzarla nella casella spam senza il nostro intervento? Attraverso algoritmi di machine learning precisamente addestrati e tarati per classificare il contenuto testuale delle nostre email.

Come già menzionato, le performance non di un modello non devono essere perfette per fornire valore concreto agli utenti. Infatti a volte potremmo trovarci a dover piazzare manualmente delle email spam nella casella appropriata.

Previsione dei prezzi

Il machine learning permette di prevedere valori numerici, come il prezzo di qualcosa. Potrebbe sembrare una magia, ma nel settore immobiliare le aziende utilizzano algoritmi di machine learning per prevedere il prezzo di immobili e di conseguenza affinare le strategie di compravendita e ottenere un vantaggio competitivo.

Contenuti e UX personalizzata

Alcuni siti web come Amazon tracciano i nostri comportamenti di acquisto e di interazione. Questo permette loro di addestrare modello di machine learning in grado di comprendere cosa vogliamo comprare e mettere davanti a noi quelle possibili scelte. Amazon infatti ci propone spesso prodotti che "potrebbero piacerci" in base ad algoritmi di raccomandazione e di clustering. Implementare soluzioni del genere non è semplice ma offrire una esperienza del genere ai nostri clienti potrebbe veramente fare la differenza.

Condivido qui un video che elenca altre applicazioni del machine learning

Come si lavora nel campo del machine learning?

Per lavorare nel campo del machine learning occorre avere conoscenze di informatica, matematica e statistica. Tanto più specifiche sono queste conoscenze, tanto più saranno le nostre possibilità di trovare un lavoro ben pagato e soddisfacente. Infatti, il data scientist, che è la figura principale che è coinvolta in questo campo, lavora proprio all'intersezione di queste tre discipline.

Un data scientist fa il suo lavoro principalmente scrivendo codice, solitamente in Python o R. Per questo motivo deve possedere buone conoscenze di logiche di sviluppo software, strutture dati e algoritmi.

Le aree della matematica più importanti sono sicuramente quelle dell'algebra lineare, che permette al data scientist di sfruttare le proprietà e operazioni su matrici, dell'analisi matematica, con lo studio di funzione e della loro ottimizzazione e del calcolo della probabilità.

Può sembrare molto complesso essere un data scientist, ma avere conoscenza specifica dell'industria dove si vuole lavorare è ancora più importante. Infatti non serve conoscere a menadito tutte le nozioni delle aree menzionate, ma basta conoscere le basi e aiutare l'azienda o il cliente a cogliere le opportunità più redditizie nel settore dove opera.

Esistono oggi corsi di studi universitari che preparano giovani studenti a lavorare nel settore del data science. I loro curriculum sono variegati, ma tutti coprono le queste discipline. Per gli autodidatti invece, esistono corsi online estremamente validi per iniziare e consolidare le conoscenze necessarie per lavorare nel settore. Non posso non condividere il corso di Andrew Ng su Coursera di introduzione al machine learning. È sicuramente una delle prime tappe da smarcare prima di intraprendere il viaggio profondo nel mondo dei dati.

Andrea D'Agostino
Data scientist con 6 anni di esperienza nell'applicare tecniche di data science per aiutare i clienti a risolvere problemi nei loro asset e a sfruttare le debolezze dei competitor a loro vantaggio.