Machine learning, al servizio della data science
Azure è anche machine learning. L’idea del machine learning è quella di “addestrare” un computer per “interpretare” i dati e rispondere a determinate situazioni senza, ad esempio, impostare una lunghissima lista di “if…then…else” come farebbe il programmatore “vecchia scuola”.
Grazie al cloud e, in particolare, ad Azure è possibile offrire agli utenti funzionalità di machine learning riducendo al minimo i costi da affrontare.
Il machine learning consente di:
– Estrapolare da grosse moli di dati informazioni che sarebbero difficili da individuare perché ancora completamente sconosciute dallo sviluppatore, dal professionista o dall’azienda.
– Effettuare una classificazione automatica dei dati.
– Individuare correlazioni nascoste tra oggetti, concetti e così via.
– Offrire un’indicazione per le tendenze future sulla base di quanto accaduto nel passato.
Il vantaggio derivante dall’utilizzo della piattaforma Azure consiste nel fatto che gli algoritmi di machine learning, previo “addestramento”, potranno essere semplicemente integrati con le applicazioni già esistenti (ad esempio software gestionali).
Gli algoritmi di machine learning consentiranno così di avvertire i responsabili o comunque i decisori aziendali quando, sulla base di un’esame dei dati, si presentassero informazioni degne di interesse o comunque suscettibili di revisioni.
L’enorme mole di dati oggi prodotta può ad esempio essere sfruttata – grazie al machine learning – per fornire un servizio migliore ai clienti. E questi ultimi, proprio sulla base del miglior servizio ottenuto, forniranno più volentieri i loro dati se il servizio è davvero utile per la loro attività o per aiutarli nelle attività giornaliere.
Le soluzioni per il machine learning che Azure offre non sono destinate solo al mondo enterprise ma possono essere sfruttati, anche gratuitamente, da parte di singoli sviluppatori per verificare quali sono le possibilità e le potenzialità della piattaforma.
Per iniziare a confrontarsi con il mondo della data science, campo interdisciplinare che si occupa di estrarre “conoscenza” dai dati disponibili in varie forme (strutturati o non strutturati), sarà importante acquisire la padronanza dei linguaggi più comunemente utilizzati: R e/o Python. Molto più giovani ma molto promettenti sono linguaggi come Go, Julia, Scala e Rust. R e Python, comunque, sono un “must” nel campo del machine learning, grazie all’ampia disponibilità di packages funzionali per l’analisi dei dati, le attività di statistica, la manipolazione dei dati e così via.
Un nome su tutti? Python mette a disposizione un package chiamato Scikit-Learn che raccoglie centinaia di algoritmi di machine learning già pronti per essere utilizzati senza scrivere codice.
Grazie al machine learning è possibile scoprire correlazioni pertinenti, ottenere risposte giuste e soprattutto estrarre informazioni senza conoscere nulla dei dati che si stanno elaborando. Si possono così prendere decisioni corrette senza disporre dell’esperienza necessaria demandando l’analisi dei dati più “critici” ad un esame da parte di un esperto “in carne ed ossa”.
Per approcciarsi al tema del machine learning, il miglior consiglio è quello di utilizzare dataset ovvero insiemi di dati già noti. “Dando in pasto” tali dataset ad Azure Machine Learning si potrà successivamente chiedere alla piattaforma di effettuare delle analisi o comunque delle approssimazioni sugli stessi.
A questo indirizzo sono disponibili numerosi dataset di esempio che possono essere utilizzati con Azure per effettuare i primi esperimenti con gli algoritmi di machine learning.
Cliccando su Data folder quindi sul file con estensione .data
si potrà dare una rapida occhiata al set di dati di esempio.
Accedendo a questa pagina (suggeriamo di attivare prima un account Azure da questa pagina), si potranno fare esperimenti con gli algoritmi di machine learning sui dataset.
Molto interessanti è la galleria di “esperimenti” che raccoglie Azure Machine Learning Studio: essi possono essere infatti sfruttati per capire come sono state affrontate e risolte specifiche problematiche o esigenze.
Cliccando sul riquadro Blank experiment si potrà avviare un nuovo esperimento di machine learning. Come primo passo, però, suggeriamo di servirsi di Experiment tutorial, una guida passo-passo che riassume tutti i passaggi da compiere per iniziare ad usare gli algoritmi di machine learning.
È importante evidenziare che può essere utilizzata qualunque sorgente di dati: si possono impostare URL remoti contenenti le informazioni da elaborare, definire come input database SQL, riferirsi a dati Hadoop/HDInsight (vedere più avanti) e così via.
Per avviare l’importazione dei dati, è sufficiente trascinare il blocco Import data sull’area di lavoro, definire la sorgente quindi cliccare sull’icona Run in basso.
Si può quindi impostare una catena di lavoro che permetterà di arrivare a stabilire quanto il modello scelto sia “adeguato” nell’effettuare una valutazione corretta sui dati presi in esame.
L’obiettivo non è quello di creare un sistema che fornisca il 100% di risposte corrette ma porre in essere un meccanismo che lavori con un margine di errore molto simile o, preferibilmente, uguale a quello di un essere umano.
Nella fase di verifica della “bontà” di un algoritmo di machine learning e, in particolare, del modello scelto, infatti, ciò che si fa è richiedere una prima elaborazione da parte della macchina poi far eseguire le stesse elaborazioni da parte di un team di esperti, composto da persone in carne ed ossa, verificando i margini d’errore in entrambi i casi.
Quella rappresentata in figura è la cosiddetta confusion map, una rappresentazione grafica degli errori commessi dall’algoritmo di machine learning nell’interpretazione dei dati.
Sulla diagonale in azzuro più scuro sono indicate le rilevazioni corrette; al di fuori (in questo caso valori 4 e 2), i casi in cui l’algoritmo non è stato all’altezza della situazione.
Diversi modelli possono essere messi a confronto in modo da capire, per il dataset utilizzato, qual è quello che offre i risultati migliori (blocco Evaluate model).
Le informazioni elaborate dall’algoritmo di machine learning possono essere poi utilizzate nell’ambito di qualunque applicazione web (pulsante Setup Web Service nella parte inferiore della finestra di Azure Machine Learning Studio).
Servizi come How-Old.net, strumento esemplificativo lanciato qualche tempo fa da Microsoft stessa e basato sulla piattaforma Azure (vedere l’articolo Calcolo età di una persona: molto più che un gioco), poggia proprio su algoritmi di machine learning e modelli come quelli proposti in Azure Machine Learning Studio.
Analisi efficace di big data con HDInsight
Per tutte quelle situazioni in cui è necessario svolgere attività di analisi di big data, la piattaforma Azure mette a disposizione la versione cloud del “super-maturo” progetto opensource Apache Hadoop.
HDInsight è un framework disponibile sul cloud, entro la piattaforma Azure, che elaborare, analizzare e creare report sui big data con elevata affidabilità e disponibilità.
Esso fornisce le implementazioni di Apache Spark, Storm, HBase e molti altri.
Le funzionalità “core” sono quelle di Hadoop ma HDInsight permette di svolgere l’elaborazione dei dati “in memoria” utilizzando, ad esempio, Spark.
Spark consente di lavorare su database SQL, dati in streaming e informazioni elaborate da algoritmi di machine learning come quelli citati in precedenza.
Storm, invece, è un eccellente sistema per l’elaborazione veloce, in tempo reale, di grandi quantitativi di dati. Componente di Hadoop, questo, ancora più maturato rispetto a Spark.
L’ecosistema Hadoop è estremamente completo e potente ma, allo stesso tempo, davvero complesso.
A questo proposito, la piattaforma Azure viene ancora una volta incontro agli utenti mettendo nelle loro mani gli strumenti per usare Hadoop, Spark e Storm in maniera molto più semplice e immediata.
Tutti i vari componenti sono infatti già disponibili su Azure (ne può essere effettuato il deployment con pochi clic, per esempio usando una macchina virtuale) ma, soprattutto, possono godere dell’elevata scalabilità offerta dalla piattaforma cloud di Microsoft.
L’analisi dei dati in tempo reale, infatti, richiede un elevato grado di scalabilità. Proprio per questo motivo Azure fornisce tutti gli “strumenti del mestiere” per muoversi con comodità anche negli scenari più complessi.
Un esempio di ciò che è possibile fare con Azure: analizzare un flusso di dati in ingresso e visualizzarli, con aggiornamenti in tempo reale, su Power BI.
Power BI è un versatile strumento per la business intelligence egualmente fornito, gratis, agli utenti di Azure. Esso consente di raccogliere, organizzare e mostrare graficamente le informazioni d’interesse in modo da restare sempre aggiornati, individuare le tendenze non appena esse si manifestano e migliorare l’attività.
Stream Analytics
Grazie al servizio Stream Analytics è possibile gestire eventi anche piuttosto complessi in maniera relativamente semplice.
La principale peculiarità del servizio sono le performance: Stream Analytics è estremamente prestazionale. Il servizio, anch’esso PaaS, riesce infatti a gestire milioni di eventi al secondo ad un costo davvero contenuto.
Il “traffico” generato da Stream Analytics viene calcolato in streaming units (un’unità equivale all’incirca a 1 MB/s di throughput) e l’utente di Azure può acquistare, se necessario, più streaming units per gestire le sue elaborazioni.
Chiamato Processo di analisi di flusso nella versione italiana del portale Azure, Stream Analytics consente di ottenere informazioni dettagliate dai dati elaborati in tempo reale.
Si tratta quindi della soluzione ideale, ad esempio, per effettuare elaborazioni real time sul flusso di dati inviato da dispositivi, sensori, siti web, social media, applicazioni, sistemi di infrastruttura e altro ancora.
Come abbiamo già visto nel caso di DocumentDB, nell’articolo La piattaforma dati di Azure: oltre SQL Server con DocumentDB. Introduzione a Data Lake, anche Stream Analytics permette di usare un linguaggio simil-SQL per interrogare i dati in streaming (al posto delle tabelle ci sono i “flussi” di dati).
In più Stream Analytics integra un supporto temporale “intelligente” dal momento che i dati possono arrivare continuativamente e, quindi, i risultati di una query possono variare in un brevissimo lasso di tempo.
Tutta l’analisi degli stream di dati, inoltre, può essere gestita non soltanto in modalità visuale, dal portale di Azure, ma – ancora una volta – mediante API REST.
La creazione di un job di Stream Analytics si concretizza digitando Analisi di flusso nella casella di ricerca del pulsante Nuovo nel portale di Azure quindi selezionando Processo di analisi di flusso.
Non appena Azure avrà creato il job, si potrà cliccare su Input per definire le sorgenti dei dati in streaming.
Per Flusso di dati, Stream Analytics intende dati che cambiano continuamente nel corso del tempo e che possono arrivare da un hub eventi (una sorta di collettore di dati), da un file (detto BLOB) che, a sua volta, può continuamente presentarsi con contenuti diversi oppure da un hub IoT (Internet of Things).
In alternativa, sempre dal menu Tipo di origine, è possibile selezionare Dati di riferimento per far sì che vengano elaborati insiemi di dati ausiliari utilizzati per lookup e correlazioni. Si tratta, in questo caso, di dati che non cambiano o che variano molto lentamente nel corso del tempo.
Per impostare il flusso di dati bisognerà in primis generare un service bus (o bus di servizio), un oggetto astratto che può essere pensato come gestore di tutta la fase di “messaggistica”. Il service bus, per il momento, può essere creato servendosi del vecchio portale di Azure, selezionando Hub eventi.
Ultimata questa operazione, la casella Spazio dei nomi del bus di servizio risulterà automaticamente popolata e si potrà impostare la sorgente di dati:
Stream Analytics consentirà poi di effettuare eventuali operazioni di join fra più sorgenti di dati (anche di diversa tipologia) e inviarle in output secondo i criteri definiti dall’utente.
Azure può essere quindi utilizzato per mettere in correlazione, in tempo reale, dati provenienti in streaming con reference data ossia dati per lo più statici in modo da estrarre informazioni utili per il business.
Tipicamente, ciò che si ottiene è un file JSON che, come abbiamo visto anche nell’articolo precedente, può essere “scandagliato” utilizzando il linguaggio SQL. Stream Analytics, inoltre, offre la possibilità di decidere con quale periodicità effettuare la lettura dei dati dallo stream impostando liberamente uno slot temporale.
Uno strumento di valore inestimabile per coloro che si trovano a dover gestire dati che vengono generati, come un flusso continuo, da diversi sistemi sparsi per il mondo.