Mike Ferguson

Mike Ferguson

Febbraio 2018

Big Data e Analytics – Se il machine learning accelera anche la data science

In molte aziende, oggi, la domanda di dati e di analisi è pervasiva. I progetti in corso riguardano molti aspetti: migliorare l’engagement dei clienti, ridurre il rischio e ottimizzare le operazioni di business

Anche le fonti di dati crescono senza sosta, con dati di tutti i tipi che provengono sia dall’interno sia dall’esterno dell’azienda. Ma se le analisi sono necessarie quasi ovunque, gli approcci attuali per svilupparle sono lenti e costosi. Per supportare queste esigenze, il moderno mondo degli analytics si è allargato oltre il tradizionale data warehouse, per diventare un ecosistema che comprende numerosi data store e piattaforme ottimizzati per diversi tipi di carichi di lavoro: data warehouse, database NoSQL, piattaforme Hadoop, di cloud storage e di streaming analytics, oltre a tecnologie come Kafka, Apache Spark e Apache Flink. Alcuni fornitori come Cloudera e MapR, stanno cercando di posizionarsi come piattaforme dati in grado di effettuare tutto questo su un singolo sistema. Inoltre, molte aziende hanno creato team di data science per concentrarsi su specifici problemi di business, che analizzano i dati su diverse piattaforme sottostanti come Spark/Hadoop, i sistemi di elaborazione dei flussi dati e i RDBMS analitici che supportano i data warehouse. È per questo che tali team operano nell’ecosistema analitico su dati presenti in più depositi, cioè in quello che sta diventando un data lake logico distribuito e non un archivio unico di dati centralizzato.

L’esigenza di scalare a basso costo – La richiesta di nuovi dati e di nuovi tipi di analisi su un alto volume di dati multi-strutturati ha fatto sorgere anche l’esigenza di scalare a basso costo, cosa che a sua volta ha innescato la rapida adozione di tecnologie come Hadoop e Apache Spark per scalare i dati e l’elaborazione analitica. Inizialmente, l’adozione di queste tecnologie è stata lenta, ma oggi sono ormai mainstream, con molti diversi tipi di analytics che vengono sviluppati nei progetti di data science, utilizzati per analizzare i dati sia in ambito big data sia negli ambienti tradizionali. I tipi di analisi intrapresi comprendono il machine learning supervisionato e non supervisionato, l’analisi dei testi, l’analisi dei grafi, il deep learning e l’intelligenza artificiale. Molto probabilmente la crescita più rapida tra questi riguarda il machine learning: quello supervisionato per classificare (prevedere) e quello non supervisionato per descrivere i modelli nei dati, per esempio per raggruppare cluster simili in gruppi nella segmentazione dei clienti. Con il machine learning supervisionato, i dati vengono prima preparati e poi alimentati in un algoritmo per addestrarlo a predire correttamente un risultato. I possibili esempi sono prevedere l’abbandono dei clienti, cioè il churn, oppure i guasti ai macchinari. In questo caso, i dati vengono spesso suddivisi in dati di addestramento e di test, con un ulteriore subset tenuto indietro per vedere come un modello si comporta su dati totalmente invisibili dopo che è stato addestrato. Vi è una quantità di algoritmi che possono essere utilizzati per le previsioni: i data scientist svilupperanno tipicamente più modelli, ognuno con un algoritmo diverso, confrontando i risultati per trovare il più accurato. Il machine learning non supervisionato si ha quando viene eseguito un algoritmo sui dati senza alcuna formazione per trovare modelli nei dati. Un buon esempio qui è il clustering per raggruppare dati analoghi o il rilevamento di associazioni per l’analisi dei basket di mercato.

Perché la data science può diventare un collo di bottiglia? -Tuttavia, gli attuali approcci allo sviluppo del modello analitico di machine learning hanno mostrato numerosi problemi. Per cominciare c’è una vera e propria carenza di data scientist qualificati che, anche se si riesce ad assumerli, diventano rapidamente preda degli head hunter. Anche lo sviluppo di modelli analitici è spesso lento, soprattutto sulle grandi piattaforme di dati sulle quali i data scientist preferiscono sviluppare tutto manualmente, scrivendo codice in linguaggi molto utilizzati come Java, R, Scala e Python. Ciò comporta che la funzione data science diventa un collo di bottiglia, con un conseguente backlog di analisi che devono ancora essere costruite. Anche il costo dello sviluppo è superiore a quello che dovrebbe o potrebbe essere perché la data science viene spesso suddivisa su persone diverse, talvolta utilizzando approcci di sviluppo incoerenti, oltre a librerie e strumenti diversi. Ciò porta a una frammentazione di competenze distribuite in maniera esigua su troppe tecnologie. Questo limita anche il riutilizzo e la condivisione di set di dati e modelli. La manutenzione diventa quindi un problema, il costo aumenta e non esiste un programma integrato di attività analitica. Tutto ciò impedisce l’agilità e aggiunge complessità. Inoltre, con il ritmo di sviluppo lento, la data science può diventare un collo di bottiglia, il che a sua volta può far sì che gli analytics già in esecuzione rallentino in quanto le persone vengono trattenute su altre attività di sviluppo connesse al backlog di cui si diceva poco sopra. Inoltre, una funzione data science frammentata ed eccessivamente complessa può anche portare a una preparazione dei dati self-service non gestita, se i team adottano approcci diversi. Ciò avviene soprattutto nel caso in cui tutto venga codificato a mano senza una linea di metadati e senza alcun modo per sapere come è stato preparato il dato. Anche la produttività e la governance soffrono, con impatti negativi sul time-to-value.

Come risolvere tutto questo? – La risposta è quella di accelerare la funzione data science automatizzando lo sviluppo di modelli predittivi. Non a caso, stanno emergendo molte nuove tecnologie di questo tipo, come per esempio DataRobot, Tellmeplus e IBM Data Science Experience. E anche Google sta percorrendo questa strada. L’automazione del machine learning consente di costruire e confrontare rapidamente modelli predittivi e permette ai business analyst che non hanno skill specifici di diventare data scientist a tutti gli effetti. Ma permette anche di integrare modelli, costruiti sia automaticamente sia in maniera personalizzata, in un programma comune di tipo campione/sfidante, in modo da coordinare e gestire tutti i progetti di machine learning da un unico punto.

Per valutare gli strumenti di automazione del machine learning, alcuni dei requisiti chiave da prendere in considerazione sono:

• Project management e allineamento con la strategia di business.
• Sviluppo e condivisione collaborativi.
• Integrazione con un catalogo di informazioni per facilitare la ricerca dei dati da parte dei data scientist.
• Dare accesso a dati sulle piattaforme dei big data e di quelli normali, all’interno o all’esterno dell’azienda.
• Supporto per una facile esplorazione e profilazione dei dati.
• Preparazione dati self-service di terze parti incorporata e integrata.
• Possibilità di automatizzare o definire manualmente i set di dati per formare e convalidare i modelli.
• Possibilità di automatizzare la selezione variabile per l’input a un algoritmo di machine learning.
• Capacità di creare, formare e convalidare automaticamente più modelli candidati usando diversi algoritmi.
• Supporto per una formazione interattiva per una maggiore precisione.
• Possibilità di includere algoritmi dalle librerie di terze parti per integrare tecnologie e formare modelli candidati da una piattaforma comune.
• Capacità di integrare modelli personalizzati costruiti in diversi linguaggi in notebook interattivi come Zeppelin e Jupyter.
• Capacità di confrontare facilmente l’accuratezza predittiva di più modelli candidati.
• Possibilità di selezionare e implementare facilmente modelli per il consumo da parte di altre applicazioni e strumenti.
• Possibilità di implementare facilmente modelli in diversi ambienti di esecuzione, per esempio in cloud, Spark, database, Hadoop o stream.
• Capacità di creare una “fabbrica” di machine learning non solo per industrializzare lo sviluppo, ma anche per automatizzare il monitoraggio della precisione del modello e la manutenzione e l’aggiornamento dei modelli esistenti.