Condividi tramite


Approfondimento - Analisi avanzata

Cos'è l'analisi avanzata per HDInsight?

HDInsight offre la possibilità di ottenere informazioni dettagliate importanti da grandi quantità di dati strutturati, non strutturati e in rapido movimento. L'analisi avanzata prevede l'uso di architetture altamente scalabili, modelli di apprendimento statistici e di Machine Learning e dashboard intelligenti per offrire informazioni dettagliate significative. Il Machine Learning, o analisi predittiva, si serve di algoritmi che identificano le relazioni tra i dati e apprendono da tali relazioni per generare previsioni e aiutare nei processi decisionali.

Processo di analisi avanzata

Advanced analytics process flow.

Dopo aver identificato il problema aziendale e aver avviato la raccolta e l'elaborazione dei dati, è necessario creare un modello che rappresenti la domanda per cui generare una previsione. Il modello usa uno o più algoritmi di Machine Learning per creare il tipo di previsione più adatto alle esigenze aziendali specifiche. La maggior parte dei dati deve essere usata per eseguire il training del modello, mentre i dati rimanenti vengono usati per testare o valutare il modello.

Dopo aver creato, caricato, testato e valutato il modello, il passaggio successivo è costituito dalla distribuzione del modello per iniziare a rispondere alle domande. L'ultimo passaggio consiste nel monitorare le prestazioni del modello e procedere all'ottimizzazione in base alle esigenze.

Tipi di algoritmi comuni

Le soluzioni di analisi avanzata offrono un set di algoritmi di Machine Learning. Di seguito è riportato un riepilogo delle categorie di algoritmi e dei casi d'uso aziendali comuni associati.

Machine Learning category summaries.

Insieme alla selezione degli algoritmi più adatti, è necessario considerare se devono essere forniti dati per il training. Gli algoritmi di Machine Learning sono suddivisi in categorie come indicato di seguito:

  • Supervisionati: per poter ottenere risultati, è necessario eseguire il training dell'algoritmo su un set di dati etichettati
  • Semi-supervisionato: l'algoritmo può essere aumentato da destinazioni aggiuntive tramite query interattiva da un trainer, che non erano disponibili durante la fase iniziale del training
  • Non supervisionato: l'algoritmo non richiede dati di training
  • Rinforzo: l'algoritmo usa agenti software per determinare il comportamento ideale in un contesto specifico (tecnica spesso usata in robotica)
Categoria algoritmo Utilizzo Tipo di apprendimento Algoritmi
Classificazione Classificare oggetti o persone in gruppi Supervisione eseguita Alberi delle decisioni, regressione logistica, reti neurali
Clustering Dividere un set di esempi in gruppi omogenei Supervisione non eseguita Clustering K-Means
Rilevamento schemi Identificare associazioni frequenti nei dati Supervisione non eseguita Regole di associazione
Regressione Prevedere risultati numerici Supervisione eseguita Regressione lineare, reti neurali
Rinforzo Determinare il comportamento ottimale dei robot Rinforzo Simulazioni Monte Carlo, DeepMind

Machine Learning in HDInsight

HDInsight offre diverse opzioni di Machine Learning per un flusso di lavoro di analisi avanzata:

  • Apprendimento automatico e Apache Spark
  • Azure Machine Learning e Apache Hive
  • Apache Spark e Deep Learning

Apprendimento automatico e Apache Spark

HDInsight Spark è una soluzione ospitata in Azure di Apache Spark, un framework di elaborazione parallela dei dati unificato e open source che usa l'elaborazione in memoria per ottimizzare l'analisi dei Big Data. Il motore di elaborazione Spark è costruito per la velocità, la semplicità d'uso e le analisi sofisticate. Le funzionalità di calcolo distribuite in memoria rendono Spark uno strumento valido per l'esecuzione di algoritmi iterativi utilizzati in calcoli grafici e di Machine Learning.

Tre librerie di Machine Learning scalabili introducono funzionalità di modellazione algoritmica nell'ambiente distribuito:

  • MLlib: MLlib contiene l'API originale basata su RDD di Spark.
  • SparkML: SparkML è un pacchetto più recente che contiene un'API di livello superiore basata su Spark DataFrames per la costruzione di pipeline ML.
  • MMLSpark: la libreria di Microsoft Machine Learning per Apache Spark (MMLSpark) è stata progettata per incrementare la produttività dei data scientist in Spark, aumentare la velocità di sperimentazione e sfruttare le più innovative tecniche di Machine Learning, tra cui l'apprendimento avanzato, su set di dati molto ampi. La libreria MMLSpark semplifica le attività di modellazione comuni per la creazione di modelli in PySpark.

Azure Machine Learning e Apache Hive

Azure Machine Learning Studio (versione classica) offre strumenti per modellare l'analisi predittiva e un servizio completamente gestito che è possibile usare per distribuire i modelli predittivi come servizi Web pronti per l'uso. Grazie agli strumenti per la creazione di soluzioni di analisi predittiva complete nel cloud, Azure Machine Learning consente di creare, testare, usare e gestire modelli predittivi in modo rapido. È possibile selezionare gli algoritmi da una libreria di grandi dimensioni, usare un ambiente basato sul Web per creare modelli e distribuire con facilità il modello come servizio Web.

Apache Spark e Deep Learning

L'apprendimento avanzato è un ambito del Machine Learning che usa reti neurali profonde (DNN) ispirate dai processi biologici del cervello umano. Molti ricercatori vedono deep learning come un approccio promettente all'intelligenza artificiale. Alcuni esempi di apprendimento avanzato sono i sistemi di traduzione del parlato, i sistemi di riconoscimento delle immagini e i sistemi di ragionamento automatici. A sostegno del proprio impegno nel campo dell'apprendimento avanzato, Microsoft ha sviluppato Microsoft Cognitive Toolkit, uno strumento open source gratuito e facile da usare. Il toolkit è ampiamente usato da numerosi prodotti Microsoft, da aziende di tutto il mondo che hanno la necessità di distribuire l'apprendimento avanzato su vasta scala e da studenti interessati agli algoritmi e alle tecniche più recenti.

Scenario - Riconoscere le immagini per identificare gli schemi di sviluppo urbano

Di seguito è riportato un esempio di pipeline di Machine Learning di analisi avanzata che usa HDInsight.

In questo scenario si vedrà come i DNN prodotti in un framework di Deep Learning, Il Toolkit cognitivo di Microsoft (CNTK), possono essere operativi per l'assegnazione di punteggi a raccolte di immagini di grandi dimensioni archiviate in un account Archiviazione BLOB di Azure usando PySpark in un cluster HDInsight Spark. Questo approccio viene applicato a un caso d'uso DNN comune, alla classificazione di immagini aeree e può essere usato per identificare modelli recenti di sviluppo urbano. Si userà un modello di classificazione delle immagini con training preliminare. Il training preliminare è stato eseguito in base al set di dati CIFAR-10 e il modello è stato applicato a 10.000 immagini trattenute.

Questo scenario di analisi avanzata prevede tre principali attività:

  1. Creare un cluster Hadoop di Azure HDInsight con una distribuzione di Apache Spark 2.1.0.
  2. Eseguire uno script personalizzato per installare Microsoft Cognitive Toolkit in un cluster Spark di Azure HDInsight.
  3. Caricare un notebook di Jupyter predefinito nel cluster HDInsight Spark per applicare un modello di Deep Learning di Microsoft Cognitive Toolkit con training ai file in un account Archiviazione BLOB di Azure usando l'API Python Spark (PySpark).

Questo esempio è basato sul set di immagini CIFAR-10 compilato e distribuito da Alex Krizhevsky, Vinod Nair e Geoffrey Hinton. Il set di dati 10 CIFAR contiene 60.000 immagini a colori 32x32 appartenenti a 10 classi che si escludono a vicenda:

Machine Learning example images.

Per altre informazioni sul set di dati, vedere l'articolo relativo all'apprendimento di più livelli di funzionalità di Alex Krizhevsky da immagini minuscole.

Il set di dati è stato suddiviso in un set di training costituito da 50.000 immagini e un set di test costituito da 10.000 immagini. Il primo set è stato usato per il training di un modello di rete residua (ResNet) convoluzionale costituito da venti livelli tramite Microsoft Cognitive Toolkit seguendo questa esercitazione disponibile nel repository GitHub di Cognitive Toolkit. Le rimanenti 10.000 immagini sono state usate per testare l'accuratezza del modello. A questo punto entra in gioco l'elaborazione distribuita. L'attività di pre-elaborazione e riconoscimento delle immagini è altamente parallelizzabile. Con il modello sottoposto a training salvato, si è usato:

  • PySpark per distribuire le immagini e il modello sottoposto a training nei nodi di lavoro del cluster.
  • Python per elaborare in via preliminare le immagini in ogni nodo del cluster Spark HDInsight.
  • Cognitive Toolkit per caricare il modello e riconoscere le immagini pre-elaborate in ogni nodo.
  • Notebook di Jupyter per eseguire lo script PySpark, aggregare i risultati e usare Matplotlib per visualizzare le prestazioni del modello.

L'intero processo di pre-elaborazione/riconoscimento delle 10.000 immagini dura meno di un minuto in un cluster con quattro nodi di lavoro. Il modello prevede con accuratezza le etichette di circa 9.100 immagini (91%). Una matrice di confusione illustra gli errori di classificazione più comuni, ad esempio l'inversione di etichettatura di cani e gatti che si verifica più spesso rispetto ad altre coppie di etichette.

Machine Learning results chart.

Prova

Seguire questa esercitazione per implementare questa soluzione end-to-end: configurare un cluster HDInsight Spark, installare Cognitive Toolkit ed eseguire Jupyter Notebook che assegna punteggi a 10.000 immagini CIFAR.

Passaggi successivi

Apache Hive e Azure Machine Learning

Apache Spark e MLLib

Apprendimento avanzato, Cognitive Toolkit e altri strumenti