Approfondiamo il concetto di Supervised Learning, Unsupervised Learning, Semisupervised Learning e Reinforcement Learning in questa guida tutta in italiano!
Esistono differenti sistemi di machine learning: per distinguerli è comodo dividerli in ampie categorie usando diversi criteri.
Ne vedremo 3.
Il primo è l’ammontare di supervisione umana richiesta nella fase di training.
Sulla base di questo criterio di classificazione distinguiamo:
- Supervised learning systems
- Unsupervised learning systems
- Semisupervised learning systems
- Reinforcement learning systems
Struttura dati
Prima di vedere ciascuna categoria nel dettaglio, facciamo chiarezza su alcuni termini tecnici.
Un esempio di dati che vengono forniti ad un algoritmo di machine learning, dopo essere stati accuratamente gestiti, è il seguente:
Si tratta di una tabella, in cui ciascuna riga viene definita observation, osservazione.
La colonna rossa è la nostra variabile target, o label chiamata anche Criterion o Dependent Variable.
E’ il valore che intendiamo prevdere, per risolvere il nsotro problema.
Il nome delle colonne verdi è detto Attribute o attributo, e il binomio attributo-valore Feature, chiamato anche Predictor o Indipedent Variable. Quindi, per ulteriore chiarezza:
L’attributo è “departmnet”, la feature è “department = support”.
Comunque, molte persone usano questi due termini come sinonimi.
Il presupposto è che le features contengano una relazione nascosta con le labels. Compito del machine learning è individuare questa relazione nascosta.
Supervised Learning Systems
Nei sistemi supervisionati, i dati forniti all’algoritmo scelto contengono la soluzione desiderata, quindi la label.
I due principali task di supervised learning sono:
- classification tasks, il cui obiettivo è prevedere il valore di una variabile discreta classificando un’osservazione in due o più classi. (Es, un dato impiegato vuole licenziarsi? True / False)
- regression tasks, il cui obiettivo è prevedere il valore di una variabile continua (Es, prezzo di un’azione in borsa)
Un esempio generale di questo metodo, è l’impiego di un modello predittivo per determinare il numero di utenti che si iscriveranno alla piattaforma del nostro cliente il mese prossimo. (Regression Task)
Unsupervised Learning Systems
Intuitivamente, nei sistemi non supervisionati la label è assente. Il sistema apprende senza alcun riferimento.
Inizialmente potrebbe sembrarti una definizione astrusa, ma con il tempo la farai tua.
I princiapli task si unsupervised learning sono:
- clustering tasks, con l’obiettivo di suddividere i dati in grandi gruppi o cluster in base a somiglianze più o meno evidenti (Es, clienti di un supermercato in base a preferenze d’acquisto). In problemi simili, possiamo solo usare tecniche di visualizzazione per esaminare la qualità della soluzione.
- visualization tasks, gli algoritmi sono in grado di rappresentare su grafici 2D o 3D complessi set di unlabelled data preservando quanta più struttura possibile. Così facendo è possibile individuare pattern nascosti.
- dimensionality reduction tasks, il cui obiettivo è semplificare la struttura dati senza perdere informazioni. (Es, ridurre il numero di features attraverso il merging of correlated predictors: età di un’auto e km percorsi => indice usura. Questa operazione è detta di features extraction)
- anomaly detection tasks, in cui il sistema è allenato su dati “normali” e quando individua un nuovo dato è in grado di stabilire la sua anomalità (Es, individuazione frodi, eliminazione outliers)
- association rule learning, il cui compito è scavare a fondo nei dati per individuare relazioni utili tra le features. (Es, acquisti dei clienti mostrano che chi acquista salsa barbecue e patatine, compra anche carne)
- pattern search / recognition,
Un venditore potrebbe essere interessato a dividere i propri prodotti in gruppi accomunati da una o più caratteristiche simili, senza specificarle a priori. (Clustering)
Semi Supervised Learning Systems
Questi sistemi sono in grado di gestire dati parzialmente labellati. Un esempio, il sistema di analisi delle foto per il riconoscimento dei volti.
Dapprima un algoritmo di clustering (unsupervised learning) riconosce e raggruppa volti simili.
Interviene quindi la componente umana che procede alla creazione delle label attribuendo a ciascun volto un nome.
Il set di dati parzialmente labellato è ora pronto ad un semisupervised learning task: il modello sviluppato consentirà in futuro di riconsocere i volti noti.
Reinforcement Learning Systems
Rispetto ai precedenti sistemi, quelli di reinforcement learning hanno una struttura e funzionamento differente.
Esiste un learning system, chiamato Agent che osserva l’ambiente, seleziona e compie azioni ottenendo rewards in cambio. (o penalities, sotto forma di premi negativi).
L’obiettvo è che l’agente impari autonomamente la best strategy per massimizzare il rewards over time. Questa strategia è chiamata policy
La policy definisce quale azione l’agente dovrebbe compiere quando si trova in una specifica situazione.
Il caso lampante è quello di Alpha Go.
È necessario disporre di un ambiente di test funzionante (working testing environment) affinché l’agente possa essere allenato efficacemente e in tempi relativamente brevi (a seconda della sua complessità).
Per risolvere questo problema possiamo fare ricorso a libreria come OpenAI Gym, che mettendo a disposizione ambienti come il CartPole, con molti parametri usufruibili, consente lo sviluppo, la ricerca e la comparazione ai algoritmi di Reinforcement Learning.
Ti ho comunque spiegato cos’è il reinforcement learning in questo post.
Salutiamoci con questa conclusione.
In questa breve guida abbiamo introdotto il concetto di Supervised Learning, Unsupervsied Learning, Semisupervsied Learning e Reinforcemet Learning.
Nel prossimo post esploreremo la differenza tra Batch Learning Systems e Online Learning Systems.
Per il momento è tutto.
Per aspera, ad astra.
Un caldo abbraccio, Andrea