Ultima modifica da un moderatore:
Questo perché nel prossimo capitolo andremo a testare un algoritmo per il Supervised, uno di Unsupervised e uno di Reinforcement Learning su Dataset ad-hoc. Questo capitolo ha lo scopo di farvi acquisire una panoramica generale di vari algoritmi di ML disponibili e utilizzati oggigiorno per vari obiettivi.
Capitoli: |
|
1 Tipi di Machine Learning
Una caratteristica comune che si ha sulle varie tipologie di Machine Learning è incentrata sull'avere in input i dati e i risultati per dedurre delle regole. Possiamo mettere a confronto come elabora i dati un modello di programmazione tradizionale rispetto a quello definito dal Machine Learning.
Proprio tali algoritmi vengono differeti tramite vari tipi:
1. Supervised Learning: Partendo da alcuni elementi di input si deducono dei valori noti di output andandone a definire le regole.
2. Unsupervised Learning: Partendo da un set di informazioni, senza fare distinzioni tra dati di input e dati di output, si deducono, tramite il modello, i pattern che mettono i relazioni i dati del dataset.
3. Reinforcement Learning: Forma di apprendimento di pattern tramite un processo di intensificazione "trial-and-error" in cui il risultato viene migliorato in relazione ad un particolare set di fattori.
Una caratteristica nota che andremo a vedere per ogni tipo di machine learning è il compromesso che si ha tra bias (distorsione o presenza di errori) e varianza (variazione degli errori).
2 Compromesso tra Bias e Varianza
Il compromesso bias-varianza si riferisce anche alla generalizzazione del modello. In qualsiasi modello, c’è un equilibrio tra distorsione (bias), che è il termine di errore costante, e la varianza, che è la quantità in base alla quale l’errore può variare tra diversi set di dati. Pertanto, alta distorsione e bassa varianza corrisponde ad un modello che è costantemente errato nel 20% delle volte, mentre un modello a bassa distorsione e ad alta varianza sarebbe un modello che può essere sbagliato in qualsiasi punto dal 5% al 50% delle volte, a seconda dei dati utilizzati per il training.
Si noti che la distorsione e la varianza in genere si muovono in direzioni opposte l’una dall’altra; l’aumento della distorsione di solito porta a una minore varianza e viceversa. Quando si crea il modello, il problema specifico e la natura dei dati dovrebbero consentire all’utente di prendere una decisione informata su dove rientrare nello spettro della distorsione.
In generale, l’aumento della distorsione (e la riduzione della varianza) si traduce in modelli con livelli di prestazione relativamente garantiti, che possono essere fondamentali in determinate attività. Inoltre, per produrre modelli che si generalizzano bene, la varianza del modello deve essere ridimensionata in base alle dimensioni e alla complessità dei dati di allenamento. I set di dati semplici e di piccole dimensioni devono in genere essere appresi con modelli a bassa varianza e set di dati complessi e di grandi dimensioni spesso richiedono modelli con varianza più elevata per apprendere appieno la struttura dei dati.
3 Supervised Learning
Il Supervised Learning è uno dei metodi più popolari e usati oggigiorno. Il processo che vede l'applicazione del Supervised Learning inizia dai dati di input che rappresentano il dataset. Il dataset viene diviso prima in variabili di input e variabili di output poi i vari esempi (o tuple) vengono divise in Training Set e Testing Set. Il Training Set viene utilizzato per costruire un Modello di Predizione tramite l'applicazione dell'algoritmo che determina un modello in grado di processare i dati del Testing Set per definire delle predizioni (aventi una precisione probabilistica molto alta) sulle variabili di output.
La fase di training serve per trovare delle regole in grado di far combaciare le variabili di input con le variabili di output per le tuple del training set. Oggigiorno, il Supervised Learning viene affiancato o sostituito da tecniche più specifiche chiamato Deep Learning ed è basato su modelli reali in grado di simulare il comportamento del cervello umano come, ad esempio, tramite le reti neurali. Uno dei vantaggi del Deep Learning rispetto al Supervised Learning è che la precisione e le performance di un modello predittivo aumenta in maniera direttamente proporzionale al numero dei dati e di neuroni della rete (mantenuti in strati intermedi nascosti) cosa che, per il supervised learning non succede e che, anche se si dispone di un numero di dati maggiore, le performance si "saturano" più velocemente ossia non si ha un miglioramento proporzionale ai dati che si hanno in input.
Dopo questa breve chiacchierata, possiamo ora passare ad alcuni algoritmi di Supervised Learning.
3.1 Classificazione
La classificazione è una forma di Supervised Learning in grado di dover categorizzare delle informazioni (variabili di output) in classi. I dati di output che definiscono tali tecniche sono di tipo categoriche, ossia, come detto anche nel capitolo 1 della nostra guida, sono dei dati che hanno come dominio un insieme di elementi logici come prodotti per il supermercato, stanze di una casa o altri domini prettamente non numerici.I tipi di classificazione sono variabili a secondo del numero di classi a cui può appartenere un valore di output, ossia un numero pari alla cardinalità del dominio della variabile di output. All'interno di questa guida non ci soffermeremo su tale livello di dettaglio, per questo elenchiamo solamente le principali categorie.
1. Classificatori binari: Algoritmi basati sulla decisione di stabilire se una variabile appartiene ad una classe scelta tra due disponibili
2. Classificatori multi-classe: Simile al binario ma su un numero di classi maggiori di 2
In entrambi i casi i valori da scegliere sono di tipo categorico.
3.2 Regressione
La regressione è una forma di classificazione con la differenza che, la variabile di output è numerica ossia ha un dominio aritmetico. Le variabili di input non sono differenti rispetto alla classificazione.3.3 Vari Algoritmi di Supervised Learning
Di seguito ecco una lista con una descrizione ad alto livello per il Supervised Learning. Non andremo a fare distinzioni tra regressione e classificazione dato che alcuni algoritmi possono essere utilizzati per entrambi i metodi e, inoltre, è facilmente deducibile quando un algoritmo è applicabile su dati categorici o dati numerici a secondo se si utilizzano operazioni aritmetiche o solamente di classificazione mediante l'utilizzo di operazioni insiemistiche (che non si limitano alla semplice unione, intersezione o complemento).3.3.1 Naive Bayes Classifier
Rappresenta uno dei metodi di classificazione più semplici. Ha un discreto livello di precisione e rappresenta un dominio di classificatori probabilistici basati sul Teorema di Bayes:Dato E un evento noto e una serie di alternative A1,A2,...AN che partizionano lo spazio campionario Ω
Si specificano le probabilità di un evento in relazione ad eventi noti.
In generale, dato X un evento e x1,x2...xn eventi noti:
Quindi andiamo a misurare il valore che può assumere la nostra variabile in relazione ad eventi noti secondo una visione probabilistica.
3.3.2 Decision Tree
Metodo di classificazione noto per la trasparenza.Consiste nel costruire un albero decisionale strutturato nel seguente modo:
- Partendo dalla radice, si prende in considerazione in ogni livello una variabile del Dataset
- Per ogni valore della variabile si crea un nodo figlio
- Ogni nodo x ha come valore la probabilità di assumere la sequenza dei valori specificata dentro il percorso che parte dalla radice fino al nodo x.
Il processo di classificazione consiste nel definire i cammini che vanno dalla radice alle foglie dell’albero definendone le probabilità.
3.3.3 Support Vector Machine
Uno degli algoritmi di classificazione più efficienti in termini di precisione predittiva. Consiste nel trovare degli iperpiani che separano le istanze in classi con risultati differenti. L’iperpiano generato con la distanza massima dal punto più vicino tra le classi del sistema è chiamato iperpiano ottimale che definisce un classificatore lineare. Per maggiori informazioni su questo algoritmo, vi consiglio di leggere la documentazione fornita da Scikit-learn
3.3.4 Decision Rules
Algoritmo di classificazione nella forma:IF <una condizione di un attributo è rispettata>
THAN <il risultato assume uno specifico valore>
Tali condizioni vengono costruite a partire da un albero decisionale oppure possono derivare direttamente dal dataset. Le performance sono simili agli algoritmi basati su alberi decisionali, sono comprensibili e facili da implementare ma possono essere computazionalmente più costosi.
3.3.5 K-Nearest Neighbours
Classifica gli esempi a secondo del tipo della classe dei k esempi più vicini. La procedura di ricerca e di classificazione può risultare lunga e onerosa, inoltre si deve avere a disposizione l’intero set di training data per poter effettuare con precisione la modellazione. Al variare della K possiamo definire una varianza e un bias differenti. Una delle difficoltà sostanziali di questo algoritmo è il ritrovamento di un K valore pari ad un ottimo compromesso tra Bias e Varianza. Questo algoritmo viene utilizzato prevalentemente non solo per la classificazione ma anche per il decision making all'interno di euristiche per la programmazione vincolata, per ulteriori informazioni, leggi cosa siano le metaeuristiche qui!4 Unsupervised Learning
Tecniche in cui non si utilizzano valori di input per stabilire dei valori di output specifici, non esistono valori di output e molto spesso non ci sta un obiettivo da raggiungere a priori ma si vogliono trovare delle regole o delle proprietà di relazioni all'interno dei dati. Le maggiori tecniche di Unsupervised Machine Learning sono:
- Clustering: Divide gli esempi in gruppi differenti (chiamati cluster) gli esempi di uno stesso gruppo hanno delle proprietà simili che
definiscono i criteri di divisione.
- Association Rules: Scopre delle relazioni basate sulla soddisfacibilità di alcune condizioni basate su un costrutto IF-ELSE
- Anomaly Detection: Identifica gli esempi che sono anomali, ossia che non rispettano delle proprietà comuni (prezzo di una casa troppo alto rispetto alle abitazioni del vicinato)
- Generative Methods: Partendo da alcuni esempi forniti dal set di dati di input, si stabilizzano delle proprietà utilizzate per generare nuovi esempi.
Andiamo ad analizzare gli algoritmi sopra elencati più nello specifico.
4.1 Clustering
Implica la scoperta automatica del raggruppamento naturale nei dati. A differenza dell'apprendimento supervisionato (come la modellazione predittiva), gli algoritmi di clustering interpretano solo i dati di input e trovano gruppi naturali o cluster nello spazio delle caratteristiche. La valutazione dei cluster identificati è soggettiva e può richiedere un esperto del dominio, sebbene esistano molte misure quantitative specifiche per i cluster. In genere, gli algoritmi di clustering vengono confrontati accademicamente su set di dati sintetici con cluster predefiniti utilizzati da un algoritmo per scoprire i vari patterns.Non andremo a parlare degli algoritmi di clustering nello specifico, le strategie di clustering più rilevanti sono:
- Affinity Propagation
- Agglomerative Clustering
- BIRCH
- DBSCAN
- K-Means
- Mini-Batch K-Means
- Mean Shift
- OPTICS
- Spectral Clustering
- Mixture of Gaussians
4.2 Association Rules
Utilizzabile prevalentemente come algoritmo di classificazione, si basa sul concetto di associazione forte ossia in cui alcuni valori possono dipendendere da altri valori associati a delle variabili dipendenti dentro il dataset. Un esempio pratico di algoritmi di association rules può essere quello di associare degli ingredienti a dei prodotti in base alla combinazione di alcune variabili e costruire un menù intelligente basato sulla disponibilità dei prodotti in magazzino.Un esempio più diretto può essere:
1. {pasta,uova,guanciale,pecorino,pepe} => {carbonara}
2. {pasta,guanciale,pecorino,pepe} => {tricia}
3. {pasta,pecorino,pepe} => {cacio e pepe}
4.3 Anomaly Detection
Il rilevamento delle anomalie (Anomaly Detection) è il processo di identificazione di elementi o eventi imprevisti nei set di dati che differiscono dalla norma (caso probabilistico maggiore) . Inoltre, il rilevamento delle anomalie viene spesso applicato ai dati senza etichetta, noto come rilevamento delle anomalie senza supervisione. Il rilevamento delle anomalie ha due presupposti di base:1. Le anomalie si verificano solo molto raramente nei dati.
2. Le loro caratteristiche differiscono notevolmente dalle istanze normali.
Un esempio pratico di rilevamento di anomalie può essere che, date due variabili che hanno rispettivamente il dominio dei colori e il dominio delle lettere, se per il 90% dei casi si ha che ad ogni colore viene associata la lettera iniziale del colore (R con Rosso) se capita un esempio che determina la coppia (C, Verde) essa viene considerata come "anomalia".
4.4 Generative Methods
I metodi di generazione sono molto utili e, a mio avviso, molto difficili da applicare. Si basano sulla gestione delle relazioni derivate dal modello per generare nuovi esempi all'interno del dataset. Una delle applicazioni più curiose che vorrei descrivervi è quello della generazione automatica di immagini, ossia partendo da un algoritmo di apprendimento si consumano informazioni sulla predisposizione di pixel in relazione ad un immagine logica (Il cane ha una sequenza di bit o pixel che è comune per molte immagini). Da ciò, se si raggiunge una precisione molto elevata, possiamo generare tramite il modello immagini intelligenti (immagini di cani autogenerati)Un altro importante aspetto dei metodi generativi è che è riusciti a creare un Intelligenza Artificiale che compone vera musica! Un esempio lo vediamo con AIVA (Artificial Intelligence Virtual Artistis)
5 Reinforcement Learning
Il Reinforcement Learning sono una serie di tecniche che aiutano un computer ad apprendere un comportamento tramite ripetute interazioni di tipo “trial-and-error” (eseguite per tentativi ed errori) con un ambiente dinamico. Questo approccio consente all’agente di attuare una serie di decisioni (o azioni come nell'immagine sopra) in grado di massimizzare una metrica di ricompensa per l’attività, senza essere esplicitamente programmato per tale operazione e senza l’intervento dell’uomo.
Per introdurre cosa sia il Reinforcement Learning nello specifico, bisogna delineare alcuni termini di un dizionario specifico cosi da poter comprendere meglio tutti i concetti collegati al RL.
- Agente: lo studente e il decisore.
- Ambiente: in cui l'agente apprende e decide quali azioni eseguire.
- Azione: un insieme di azioni che l'agente può eseguire.
- Stato: lo stato dell'agente nell'ambiente.
- Ricompensa: per ogni azione selezionata dall'agente l'ambiente fornisce una ricompensa. Di solito un valore scalare.
- Politica - la funzione decisionale (strategia di controllo) dell'agente, che rappresenta una mappatura dalle situazioni alle azioni.
- Funzione valore - mappatura dagli stati ai numeri reali, dove il valore di uno stato rappresenta la ricompensa a lungo termine ottenuta partendo da quello stato ed eseguendo una particolare politica.
- Approssimatore di funzione - si riferisce al problema di indurre una funzione da esempi di addestramento. Gli approssimatori standard includono alberi decisionali, reti neurali e metodi del vicino più vicino
- Processo decisionale di Markov (MDP) - Un modello probabilistico di un problema decisionale sequenziale, in cui gli stati possono essere percepiti esattamente e lo stato corrente e l'azione selezionata determinano una distribuzione di probabilità sugli stati futuri. In sostanza, il risultato dell'applicazione di un'azione a uno stato dipende solo dall'azione e dallo stato correnti (e non dalle azioni o dagli stati precedenti).
- Programmazione dinamica (DP): è una classe di metodi di soluzione per la risoluzione di problemi decisionali sequenziali con una struttura dei costi di composizione. Richard Bellman è stato uno dei principali fondatori di questo approccio.
- Metodi Monte Carlo - Una classe di metodi per l'apprendimento delle funzioni di valore, che stima il valore di uno stato eseguendo molte prove a partire da quello stato, quindi calcola la media dei premi totali ricevuti su tali prove.
- Algoritmi di differenza temporale (TD) - Una classe di metodi di apprendimento, basati sull'idea di confrontare previsioni temporalmente successive. Forse l'idea più fondamentale in tutto l'apprendimento per rinforzo.
- Modello: la visione dell'ambiente dell'agente, che mappa le coppie stato-azione alle distribuzioni di probabilità sugli stati. Si noti che non tutti gli agenti di apprendimento per rinforzo utilizzano un modello del proprio ambiente.
- Modello globale è un modello che è inserito all'interno di un ambiente generico.
Alcuni conncetti sono nuovi, altri sono noti già dal capitolo precedente, ma, come potete notare, abbiamo una visione differente di modello che si interfaccia verso la relazione tra stato-azione alla distribuzione discreta sugli stati. Non vi preoccupate se tutti questi concetti possano risultare difficili da imparare, con l'apprendimento dei vari algoritmi e la comprensione su come funzionano si potrà comprendere completamente tutti i concetti sopra elencati.
5.1 Tipi di algoritmi per il Renforcement Learning
Possiamo sintetizzare i vari algoritmi per il Renforcement Learning secondo uno schema gerarchico come riportato nell'immagine sottostante:
Per la complessità e l'ampiezza degli algoritmi, andremo a darvi del materiale di supporto per coloro che vogliono approfondire il RL a basso livello. Nei capitoli successivi non andremo ad analizzare tali algoritmi sotto un punto di vista pratico.
5.2 Model-Free RL vs Model-Based RL
Il Model-Based RL utilizza l'esperienza per costruire un modello interno delle transizioni e dei risultati immediati nell'ambiente. Le azioni appropriate vengono quindi scelte mediante la ricerca o la pianificazione all'interno di un modello globale.Il Model-Free RL, d'altra parte, utilizza l'esperienza per apprendere direttamente una o entrambe le due quantità più semplici (valori di stato / azione o politiche) che possono ottenere lo stesso comportamento ottimale ma senza stima o utilizzo di un modello globale. Data una politica, uno stato ha un valore, definito in termini di utilità futura che si prevede maturi a partire da quello stato.
La differenza sostanziale è che negli algoritmi Model-Free non si segue un modello globale, viceversa succede per gli algoritmi Model-Based.
5.3 Fonti per il RL
Per chi vuole approfondire ulteriormente i concetti definiti dal Reinforcement Learning, vi lascio una lista di link utili capaci di farvi comprendere appieno alcuni "bottom algorithms" secondo una visione più a basso livello. Consiglio tali contenuti solamente a persone che abbiamo dimestichezza con le distribuzioni probabilistiche, modelli stocastici e che abbiano buone basi di statistica.6 Conclusioni
Abbiamo appreso in questo capitolo come sono classificati i vari algoritmi andandone a specificarne qualcuno insieme alle sue caratteristiche. Io consiglio vivamente a chiunque voglia iniziare o approfondire questo campo di applicare gli algoritmi scelti nel pratico poiché solamente testando con mano si può apprendere completamente l'intero algoritmo.
Per questo motivo, il prossimo capitolo sarà incentrato proprio sul "sporcarsi le mani", andremo a creare i nostri primi programmi di ML andando ad utilizzare varie forme e algoritmi.[/SUBSECTION]