Big Data con MATLAB

Come lavorare con grandi serie di dati

Con big data si intende l’incredibile aumento nella quantità e velocità di acquisizione dei dati che vengono creati e resi disponibili per l’analisi.

Uno dei fattori trainanti di questa tendenza è il continuo aumento della digitalizzazione dell’informazione. Il numero e i tipi di dispositivi di acquisizione e altri meccanismi di generazione dei dati crescono in continuazione.

Le fonti di big data comprendono i dati in streaming da sensori di strumentazione, immagini satellitari e medicali, video di telecamere di sicurezza e dati provenienti dai mercati finanziari e da operazioni di vendita al dettaglio. Le serie di big data provenienti da queste fonti possono contenere gigabyte o terabyte di dati e possono aumentare nell’ordine di megabyte o gigabyte al giorno.

I big data rappresentano una opportunità per gli analisti e i ricercatori di dati, consentendo loro di acquisire una visione approfondita e di prendere decisioni più informate, ma li pone di fronte anche a numerose sfide. I big data possono non rientrare nella memoria disponibile, possono necessitare di troppo tempo per l’elaborazione o possono transitare troppo rapidamente per poter essere immagazzinate. Gli algoritmi standard non sono normalmente progettati per elaborare serie di big data in una quantità di tempo ragionevole e con una memoria altrettanto ragionevole. Non esiste un approccio singolo ai big data. Pertanto, MATLAB fornisce diversi strumenti per far fronte a queste sfide.

Lavorare con i big data in MATLAB

  1. Elabrorazione a 64 bit La versione a 64 bit di MATLAB aumenta drasticamente la quantità di dati che è possibile conservare in memoria – normalmente fino a 2000 volte più di ogni altro programma a 32 bit.  Mentre i programmi a 32 bit limitano l’utente a usare solo 2 GB di memoria, MATLAB a 64 bit consente di utilizzare la memoria fino ai limiti fisici del sistema operativo. Per Windows 8, parliamo di 500 GB per le versioni desktop e di 4 TB per Windows Server.
  2. Variabili mappate in memoria La funzione memmapfile di MATLAB consente di mappare un file, o parte di esso, a una variabile MATLAB in memoria. Ciò consente di accedere in modo efficiente a serie di big data su disco che sono troppo estese per essere tenute in memoria o che necessiterebbero di troppo tempo per caricarsi.
  3. Variabili su disco La funzione matfile consente di accedere alle variabili MATLAB direttamente da MAT-file su disco, usando i comandi di indicizzazione di MATLAB, senza caricare le variabili nella memoria. Ciò consente di svolgere un’elaborazione a blocchi su serie di big data che sarebbero diversamente troppo larghi per rientrare in memoria.
  4. Datastore Usare la funzione datastore per accedere ai dati che non sono gestibili in memoria. Può trattarsi di dati da file, raccolte di file o, se si utilizza il Database Toolbox, di tabelle di database. La funzione datastore consente di definire i dati che si desidera importare dai file o dalle tabelle da database, definire il formato da applicare ai dati importati e gestire l’importazione incrementale dei dati, fornendo un mezzo per iterare su serie di big data utilizzando solo un loop di while.
  5. Matematica intrinseca multicore Molte delle funzioni matematiche incorporate in MATLAB, quali fft, inv e eig, sono multithread. Operando in parallelo, queste funzioni traggono il massimo vantaggio dai diversi core presenti nel computer, fornendo un calcolo di elevate prestazioni sulle serie di big data.
  6. Calcolo GPU Se state lavorando con GPU, le funzioni matematiche ottimizzate per GPU del Parallel Computing Toolbox forniscono addirittura prestazioni più elevate per serie di big data.
  7. Calcolo parallelo Parallel Computing Toolbox fornisce il for parallelo che esegue il codice MATLAB e gli algoritmi in parallelo su computer multicore. Se si usa MATLAB Distributed Computing Server, è possibile eseguire in parallelo su cluster di macchine che possono raggiungere anche le migliaia di computer.
  8. Cloud Computing È possibile eseguire i calcoli MATLAB in parallelo grazie a MATLAB Distributed Computing Server su Amazon’s Elastic Computing Cloud (EC2) per un’elaborazione parallela on-demand su centinaia o addirittura migliaia di computer. Il Cloud computing consente di elaborare i big data senza dover acquistare o mantenere il proprio cluster o data center.
  9. Array distribuiti Utilizzando Parallel Computing Toolbox e MATLAB Distributed Computing Server, è possibile lavorare con matrici e array multidimensionali distribuiti nella memoria di un cluster di computer. Usando questo approccio è possibile archiviare ed eseguire calcoli su serie di big data che sarebbero troppo grandi per la memoria di un singolo computer.
  10. MapReduce Usare la funzionalità MapReduce incorporata in MATLAB per analizzare dati che non possono essere gestiti in memoria. Si tratta di una potente tecnica di programmazione molto diffusa, utilizzabile per analizzare dati sul proprio desktop o per eseguire delle analisi MATLAB sulla piattaforma per big data Hadoop.
  11. Algoritmi in streaming L’uso dei System object consente di eseguire l’elaborazione in streaming di flussi di dati in ingresso che sono troppo grandi o troppo rapidi per essere inseriti in memoria. Oltre a ciò, è possibile generare codice embedded in C/C++ dall’algoritmo MATLAB utilizzando MATLAB Coder ed eseguire il codice risultante su sistemi ad alte prestazioni in tempo reale.
  12. Elaborazione di immagini a blocchi La funzione blockproc in Image Processing Toolbox consente di lavorarecon immagini di dimensioni molto grandi elaborandole in modo efficiente un blocco per volta. I calcoli vengono svolti in parallelo su più core e GPU se questi vengono utilizzati con Parallel Computing Toolbox.
  13. Machine Learning. Le tecniche di machine learning sono utilizzate per estrarre indicazioni e sviluppare modelli predittivi con serie di big data. I toolbox Statistics and Machine Learning Toolbox e Neural Network Toolbox forniscono algoritmi per l'apprendimento automatico comprendenti alberi decisionali con boosting e bagging, k-means e clustering gerarchico, classificazione k-Nearest Neighbor, misture di gaussiane, expectation maximization, modelli di Markov nascosti e reti neurali.
  14. Hadoop Con la funzionalità MapReduce e Datastore incorporata in MATLAB, è possibile sviluppare algoritmi sul proprio desktop ed eseguirli direttamente su Hadoop. Per iniziare, accedere a una porzione dei propri big data memorizzati in HDFS con la funzione datastore di MATLAB e usare tali dati per sviluppare algoritmi basati su MapReduce in MATLAB sul proprio desktop. Quindi usare MATLAB Distributed Computing Server per eseguire i propri algoritmi nel framework Hadoop MapReduce usando la serie completa di dati memorizzata in HDFS. Per integrare le analisi di MATLAB con i sistemi di produzione Hadoop, usare MATLAB Compiler per creare applicazioni o librerie dagli algoritmi MATLAB basati su MapReduce.

Esempi e consigli pratici

Esempi applicativi


Vedere anche: File HDF5, importazione di grandi quantità di dati (in Database Toolbox), MATLAB MapReduce e Hadoop