Introduzione agli algoritmi di Machine Learning

Con l’avvento dell’era computazionale a basso prezzo, grazie al Cloud di Amazon, Google e Azure sono diventati “accessibili” quei metodi di analisi e modellazione precedentemente di solo appannaggio delle grandi aziende.

Oggi Amazon offre un proprio servizio (Amazon Machine Learning), e Microsoft fa altrettanto sul proprio Cloud Azure (Azure Machine Learning).

Per aiutare a capire di quali strumenti si stia parlando riprendo l’articolo di Brandon Rohrer riferito all’utilizzo di Machine Learning su Piattaforma Microsoft Azure e lascio in fondo all’articolo i link alle pagine introduttive dei servizi cloud menzionati.

La risposta alla domanda “Quale algoritmo di Machine Learning devo utilizzare” è sempre “Dipende”. Dipende dalla dimensione, dalla qualità e dalla natura dei dati. Dipende da ciò che si desidera fare con la risposta. Dipende da come i calcoli dell’algoritmo sono stati convertiti in istruzioni per il computer in uso. E dipende dal tempo a disposizione. Nemmeno gli scienziati dei dati più esperti possono stabilire quale algoritmo funzionerà meglio prima di provarlo.

Quando si parla di Machine Learning si considerano diversi approcci all’apprendimento automatico:

Supervisionato

Gli algoritmi di apprendimento supervisionato fanno previsioni in base a un set di esempi. Ad esempio, l’andamento storico dei titoli può essere utilizzato per azzardare ipotesi sui prezzi futuri. Ogni esempio utilizzato per l’addestramento viene etichettato con il valore di interesse: in questo caso, il prezzo dei titoli. Un algoritmo di apprendimento supervisionato cerca modelli ripetitivi nelle etichette dei valori. Può utilizzare tutte le informazioni che potrebbero essere rilevanti, ovvero il giorno della settimana, la stagione, i dati finanziari dell’azienda, il tipo di settore, la presenza di eventi geopolitici di disturbo, e ogni algoritmo cerca tipi diversi di modelli ripetitivi. Dopo che l’algoritmo ha trovato il modello ripetitivo migliore possibile, lo utilizza per eseguire stime per i dati di prova senza etichetta: i prezzi di domani.

Questo tipo di Machine Learning è utile e diffuso. Con una eccezione, tutti i moduli di Azure Machine Learning sono algoritmi di apprendimento supervisionato. Sono presenti diversi tipi specifici di apprendimento supervisionato rappresentati all’interno di Azure Machine Learning: classificazione, regressione e rilevamento di anomalie.

  • Classificazione Quando i dati vengono utilizzati per prevedere una categoria, l’apprendimento supervisionato è chiamato anche classificazione. Ciò avviene quando si assegna un’immagine, come un’immagine di “gatto” o “cane”. Quando sono disponibili solo due opzioni, è chiamato a due classi o classificazione binomiale. Quando sono presenti più categorie, come quando si prevede il vincitore di un torneo, questo problema è noto comeclassificazione multi-classe.
  • Regressione. Quando un valore viene previsto, come con i prezzi dei titoli, l’apprendimento supervisionato viene chiamato regressione.
  • Rilevamento delle anomalie. Talvolta l’obiettivo consiste nell’identificare punti dati che sono semplicemente insoliti. Nel rilevamento delle frodi, ad esempio, i modelli di spesa della carta di credito altamente insoliti sono sospetti. Le possibili variazioni sono così numerose e gli esempi di formazione così pochi, che non è possibile conoscere l’aspetto delle attività illecite. L’approccio del rilevamento delle anomalie è semplicemente apprendere l’aspetto delle attività normali (utilizzando la cronologia delle transazioni non fraudolente) e identificare ciò che è molto diverso.

Non supervisionato

Nell’apprendimento non supervisionato, ai punti dati non sono associate etichette. L’obiettivo di un algoritmo di apprendimento non supervisionato è invece l’organizzazione dei dati in un certo modo o la descrizione della loro struttura. Questo può significare il raggruppamento dei dati in cluster o l’individuazione di modi diversi con cui osservare dati complessi, in modo che appaiano più semplici o più organizzati.

Apprendimento per rinforzo

Nell’apprendimento per rinforzo l’algoritmo arriva a scegliere un’azione in risposta a ogni punto dati. L’algoritmo di apprendimento riceve anche un segnale di ricompensa poco dopo, a indicare il livello di correttezza della decisione presa. In base a questo segnale, l’algoritmo modifica la propria strategia per ottenere la ricompensa maggiore. Attualmente in Azure Machine Learning non sono disponibili moduli di algoritmi di apprendimento per rinforzo. L’apprendimento per rinforzo è un approccio comune in robotica, in cui il set di letture del sensore in un certo momento è un punto dati e l’algoritmo deve scegliere l’azione successiva del robot. Questo approccio è ideale anche per applicazioni “Internet delle cose” (Internet of Things, IoT).

Considerazioni relative alla scelta di un algoritmo

Precisione

Ottenere la risposta più precisa possibile non è sempre necessario. Talvolta un’approssimazione è sufficiente, a seconda di ciò per cui si desidera utilizzarla. In tal caso, è possibile ridurre drasticamente il tempo di elaborazione utilizzando più metodi approssimativi. Un altro vantaggio di metodi più approssimativi è la tendenza naturale a evitare ilsovradattamento.

Tempo di formazione

Il numero di minuti o ore necessarie per eseguire l’addestramento di un modello varia notevolmente tra gli algoritmi. Il tempo di formazione spesso è strettamente correlato alla precisione, uno in genere accompagna l’altra. Inoltre, alcuni algoritmi sono più sensibili al numero di punti dati rispetto ad altri. Quando il tempo è limitato, può guidare la scelta dell’algoritmo, soprattutto quando il set di dati è grande.

Linearità

Un numero elevato di algoritmi di Machine Learning utilizza la linearità. Gli algoritmi di classificazione lineare ipotizzano che le classi possano essere separate da una linea retta (o dal suo equivalente della dimensione superiore). Queste includono la regressione logistica e le macchine a vettori di supporto (come implementate in Azure Machine Learning). Gli algoritmi di regressione lineare ipotizzano che le tendenze dei dati seguano una linea retta. Queste ipotesi non sono errate per alcuni problemi, ma per altri riducono la precisione.

Limite di classe non lineare

Limite di classe non lineare: basarsi su un algoritmo di classificazione lineare produce una precisione ridotta

Dati con una tendenza non lineare

Dati con una tendenza non lineare: l’uso di un metodo di regressione lineare genera errori più grandi del necessario

Nonostante i loro pericoli, gli algoritmi lineari sono molto popolari come prima linea di attacco. Tendono ad essere algoritmicamente semplici e rapidi da addestrare.

Numero di parametri

I parametri sono i pulsanti che uno scienziato dei dati deve utilizzare per configurare un algoritmo. Sono numeri che influiscono sul comportamento dell’algoritmo, ad esempio sulla tolleranza degli errori o sul numero di iterazioni, o sulle opzioni tra le varianti del comportamento dell’algoritmo. Il tempo dell’addestramento e la precisione dell’algoritmo possono talvolta risultare abbastanza cruciali per ottenere le impostazioni corrette. Di solito, gli algoritmi con parametri in numero elevato richiedono molti tentativi ed errori per trovare una combinazione ottimale.

In alternativa, in Azure Machine Learning è disponibile un blocco di moduli per lo sweep dei parametri che prova automaticamente tutte le combinazioni di parametri alla granularità scelta. Sebbene questo sia un ottimo modo per assicurarsi di aver utilizzato al massimo lo spazio di parametri, il tempo necessario per eseguire l’addestramento di un modello aumenta in misura esponenziale con il numero di parametri.

Il vantaggio è un numero elevato di parametri in genere indica che un algoritmo ha maggiore flessibilità. Può raggiungere spesso un’alta precisione. Ammesso che si trovi la giusta combinazione di impostazioni dei parametri.

Numero di caratteristiche

Per alcuni tipi di dati, il numero di caratteristiche può essere molto grande rispetto al numero di punti dati. Questo accade spesso con i dati testuali o sulla genetica. L’elevato numero di caratteristiche può rallentare alcuni algoritmi di apprendimento, rendendo il tempo di addestramento esageratamente lungo. Le macchine a vettori di supporto sono particolarmente adatte in questo caso (vedere di seguito).

Casi speciali

Alcuni algoritmi di apprendimento fanno ipotesi particolari sulla struttura dei dati o sui risultati desiderati. Se è possibile trovarne uno adatto alle proprie esigenze, può fornire risultati più utili, previsioni più accurate o tempi di addestramento più rapidi.

Algoritmo Precisione Tempo di addestramento Linearità Parametri Note
Classificazione a due classi
regressione logistica 5
foresta delle decisioni 6
giungla delle decisioni 6 Footprint della memoria ridotto
albero delle decisioni con boosting scalabile 6 Footprint della memoria di grandi dimensioni
rete neurale 9
percezione media 4
macchina a vettori di supporto 5 Particolarmente valido per set di funzioni di grandi dimensioni
macchina a vettori di supporto localmente approfondito 8 Particolarmente valido per set di funzioni di grandi dimensioni
Bayes Point Machine 3
Classificazione multiclasse
regressione logistica 5
foresta delle decisioni 6
giungla delle decisioni 6 Footprint della memoria ridotto
rete neurale 9
one-v-all Visualizza le proprietà del metodo a due classi selezionato
Regressione
lineare 4
Lineare bayesiana 2
foresta delle decisioni 6
albero delle decisioni con boosting 5 Footprint della memoria di grandi dimensioni
quantile foresta rapida 9 Distribuzioni anziché previsioni dei punti
rete neurale 9
Poisson 5 Tecnicamente log-lineare. Per la previsione dei conti
ordinale 0 Per la previsione dell’ordine nelle classifiche
Rilevamento delle anomalie
macchina a vettori di supporto 2 Particolarmente valido per set di funzioni di grandi dimensioni
Rilevamento delle anomalie basato su PCA 3
K-means 4 Algoritmo di clustering

Proprietà algoritmo:

: mostra eccellente precisione, tempi di addestramento rapidi e uso della linearità

: mostra buona precisione e tempi di addestramento moderati

Note algoritmo

Linear regression

Come accennato in precedenza, la regressione lineare adatta una riga (o piano o iperpiano) al set di dati. È un ottimo strumento di lavoro, semplice e veloce, ma potrebbe essere troppo semplicistica per alcuni problemi. Qui è disponibile un’esercitazione sulla regressione lineare così come disponibile sulla piattaforma Azure.

Dati con una tendenza lineare

Dati con una tendenza lineare

Regressione logistica

Sebbene includa ‘regressione’ nel nome, la regressione logistica in realtà è uno strumento potente per la classificazione a due classi e multiclasse. È semplice e veloce. Il fatto che utilizzi una curva a forma di ‘S’ anziché una linea retta la rende ideale per dividere i dati in gruppi. La regressione logistica fornisce limiti della classe lineari, pertanto quando la si utilizza, assicurarsi che un’approssimazione lineare sia accettabile.

Regressione logistica a dati a due classi con una sola caratteristica

Una regressione logistica in dati a due classi con una sola funzionalità : il limite della classe è il punto in cui la curva logistica è alla stessa distanza da entrambe le classi

Alberi, foreste e giungle

Le foreste delle decisioni (regressione, a due classi e multiclasse), le giungle delle decisioni (a due classi e multiclasse) e gli alberi delle decisioni con boosting scalabile (regressione e a due classi) sono tutti basati sugli alberi delle decisioni, un concetto fondamentale del Machine Learning. Esistono molte varianti di alberi delle decisioni, ma tutti svolgono lo stesso compito: suddividere lo spazio di elementi in aree con essenzialmente la stessa etichetta. Possono essere aree di una categoria coerente o di un valore costante, a seconda che si esegua la classificazione o la regressione.

L’albero delle decisioni suddivide uno spazio di caratteristiche

Un albero delle decisioni suddivide uno spazio di elementi in aree di valori approssimativamente uniformi

Poiché uno spazio di elementi può essere suddiviso in aree arbitrariamente piccole, è facile immaginare la sua divisione con precisione per disporre di un punto dati per ogni area, un esempio estremo di sovradattamento. Per evitare questo, un elevato numero di alberi viene realizzato con attenzione matematica poiché gli alberi non sono correlati. La media di questa “foresta delle decisioni” è un albero che consente di evitare il sovradattamento. Le foreste delle decisioni possono utilizzare molta memoria. Le giungle delle decisioni sono una variante che utilizza meno memoria a discapito di un tempo di addestramento leggermente superiore.

Gli alberi delle decisioni con boosting consentono di evitare il sovradattamento limitando il numero di volte in cui possono suddividersi e il modo in cui pochi punti dati sono consentiti in ogni area. L’algoritmo costruisce una sequenza di alberi, ognuno dei quali apprende come compensare l’errore dell’albero precedente. Il risultato è uno strumento di apprendimento molto accurato che tende a utilizzare una grande quantità di memoria. Per la descrizione tecnica completa, consultare il documento originale di Friedman.

La regressione quantile della foresta rapida è una variante degli alberi delle decisioni per il caso speciale in cui si desidera conoscere non solo il valore tipico (mediano) dei dati all’interno di un’area, ma anche la sua distribuzione sotto forma di quantili.

Reti neurali e percezione

Le reti neurali sono algoritmi di apprendimento ispirati al cervello che coprono problemi multiclasse, a due classi e di regressione. Sono disponibili per un’ampia varietà, ma le reti neurali all’interno di Azure Machine Learning sono tutte sotto forma di grafici aciclici diretti. Ciò significa che le caratteristiche di input vengono passate in avanti (mai indietro) tramite una sequenza di livelli prima di essere convertiti in output. In ogni livello, gli input vengono ponderati in varie combinazioni, sommati e passati al livello successivo. Questa combinazione di calcoli semplici comporta la possibilità di apprendere limiti di classi e tendenze dei dati sofisticati, apparentemente per magia. Reti con molti livelli di questo tipo eseguono l’”apprendimento approfondito” che fornisce il fondamento di molti rapporti tecnici e fantascienza.

Queste alte prestazioni non sono però possibili senza un costo. Le reti neurali possono richiedere molto tempo per l’addestramento, in particolare per grandi set di dati con molte caratteristiche. Dispongono anche di più parametri rispetto alla maggior parte degli algoritmi, il che significa che lo sweep dei parametri dilata notevolmente il tempo di addestramento.

Limiti appresi dalle reti neurali

I limiti appresi dalle reti neurali possono essere complessi e irregolari

La percezione media a due classi è la risposta delle reti neurali a tempi di addestramento lunghissimi. Utilizza una struttura di rete che fornisce limiti di classe lineari. È quasi primitiva per gli standard odierni, ma dispone di una lunga storia di funzionamento affidabile ed è sufficientemente piccola per apprendere rapidamente.

SVM

Le macchine a vettori di supporto (SVM) consentono di individuare il limite che separa le classi con un margine più ampio possibile. Quando le due classi non possono essere separate nettamente, gli algoritmi trovano il limite migliore possibile. La SVM a due classi esegue questa operazione solo con una linea retta. (Nel linguaggio dell’SVM, utilizza un kernel lineare). Poiché rende quest’approssimazione lineare, è in grado di funzionare molto rapidamente. Dove eccelle davvero è con dati ricchi di caratteristiche, come testi o genomica. In questi casi le SVM sono in grado di separare le classi più rapidamente e con meno sovradattamento rispetto alla maggior parte degli altri algoritmi, oltre a richiedere solo una modesta quantità di memoria.

Limite di classe della macchina a vettori di supporto

Un limite di classe tipico della macchina a vettore di supporto ottimizza il margine separando due classi

Un altro prodotto di Microsoft Research, la SVM localmente approfondita a due classi è una variante non lineare di SVM che mantiene la maggior parte della velocità e dell’efficienza della memoria della versione non lineare. È ideale per i casi in cui l’approccio lineare non fornisce risposte sufficientemente precise. Gli sviluppatori l’hanno mantenuta rapida per scomporre il problema in una serie di piccoli problemi di SVM lineare. Leggere la descrizione completa per i dettagli su come hanno ottenuto questo risultato.

Usando un’estensione intelligente delle SVM non lineari, la SVM a una classe consente di tracciare un limite che delinea strettamente l’intero set di dati. È utile per il rilevamento delle anomalie. Eventuali nuovi punti dati che superano di molto tale limite sono sufficientemente insoliti da essere degni di nota.

Metodi bayesiani

I metodi bayesiani hanno una qualità estremamente utile: evitare il sovradattamento. Ottengono questo risultato facendo ipotesi in anticipo sulla probabile distribuzione della risposta. Un altro risultato di questo approccio è che dispongono di parametri in numero molto ridotto. Azure Machine Learning dispone di algoritmi bayesiani per entrambe le classificazioni (la Bayes Point Machine a due classi) e la regressione (regressione lineare bayesiana). Si noti che questi ipotizzano che i dati possano essere suddivisi o adattati con una linea retta.

Algoritmi specializzati

Se si dispone di un obiettivo molto specifico si potrebbe essere fortunati. All’interno della raccolta di Azure Machine Learning sono disponibili algoritmi specializzati nella previsione delle classifiche (regressione ordinale), nella precisione del conteggio (regressione di Poisson) e nel rilevamento delle anomalie (uno basato sull’analisi dei componenti principali e uno basato sulle macchine a vettori di supporto). Esiste anche un algoritmo di clustering unico (K-means).

Rilevamento delle anomalie basato su PCA

Rilevamento delle anomalie basato su PCA : la maggior parte dei dati rientra in una distribuzione stereotipica; i punti che differiscono notevolmente da tale distribuzione sono sospetti

Set di dati raggruppati utilizzando K-means

Un set di dati viene raggruppato in 5 cluster usando K-means

Inoltre è disponibile un insieme classificatore multiclasse one-v-all che interrompe il problema di classificazione di classe N in problemi di classificazione a due classi N-1. Precisione, tempi di addestramento e proprietà di linearità dipendono dai classificatori a due classi utilizzati.

Classificatori a due classi combinati per formare un classificatore a tre classi

 

Link Utili:

Machine Learning su MS Azure

Machine Learning su AWS

2 anni ago

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *