Il machine learning è una branca dell’intelligenza artificiale che permette ai computer di apprendere dai dati, identificare modelli e prendere decisioni in modo autonomo. In altre parole, è come insegnare a una macchina a “pensare” e a migliorare le proprie prestazioni nel tempo.
Un computer viene addestrato su grandi quantità di dati, imparando a riconoscere pattern e a prendere decisioni autonome. Da qui nascono le raccomandazioni personalizzate dei nostri servizi streaming preferiti, le risposte intelligenti dei nostri assistenti vocali e molto altro.
Il machine learning non si limita a riconoscere immagini. Entrambi possono essere utilizzati per analizzare testi, fare previsioni e stime, creare contenuti originali e molto altro ancora. Esploriamo le applicazioni più comuni del machine learning e il suo impatto sul nostro mondo, con particolare attenzione a come il business analytics può trasformare i dati in strategie aziendali efficaci.
Come implementare il machine learning in azienda
Portare il machine learning in azienda non è così difficile come si potrebbe pensare; certo per un buon successo ci si deve informare e preparare. Il primo passo è identificare un problema specifico che il machine learning potrebbe risolvere. Potrebbe essere ottimizzare un processo produttivo, migliorare la previsione delle vendite o personalizzare l’esperienza cliente. Una volta definito l’obiettivo, è necessario raccogliere e preparare i dati rilevanti. Questi dati saranno il “cibo” per gli algoritmi di machine learning.
Successivamente, si sceglie il modello di machine learning più adatto e si procede con l’addestramento. Questo processo consiste nell’alimentare il modello con i dati preparati, affinché possa imparare a riconoscere pattern e a fare previsioni. Infine, si passa al deploy del modello, ovvero alla sua integrazione nei sistemi aziendali esistenti.
La scelta della tecnologia giusta
La scelta della tecnologia giusta è un passo cruciale nel processo di implementazione del machine learning. Essa dipende da diversi fattori, tra cui:
- Competenze del team: quali linguaggi di programmazione e librerie sono già utilizzati all’interno dell’azienda, quali sono le conoscenze e la preparazione sui temi di intelligenza artificiale e sulle possibilità di utilizzo in contesti specifici, l’esperienza in progetti con uso di algoritmi di machine learning.
- Tipo di problema: alcuni problemi si adattano meglio a determinate tipologie di modelli (es. reti neurali profonde per immagini, algoritmi di regressione per previsioni). La scelta del modello deve essere adatta al problema da risolvere e il modello deve essere padroneggiato per una implementazione ottimale.
- Dimensione dei dati: la quantità e la complessità dei dati influenzeranno la scelta della tecnologia. Un buon modello parte dalla stima del volume di dati disponibili e questa valutazione influenzerà la scelta degli algoritmi più adatti alla gestione del volume disponibile di informazioni.
- Scalabilità: deve essere valutata la possibilità che il volume dei dati disponibili e il volume delle risorse che sfrutteranno il modello possano variare nel tempo, in particolare potrebbero aumentare. La soluzione deve essere in grado di gestire un aumento dei dati e delle richieste.
Machine learning, le tecnologie più comuni
Il machine learning si basa su tecnologie in continua evoluzione, tra queste si possono elencare le più comuni e consolidate.
Tra i linguaggi di programmazione:
- Python (con librerie come TensorFlow, PyTorch, scikit-learn)
- R (con le sue librerie per statistica e machine learning),
- julia (linguaggio emergente non diffuso come Python ma con alte performance).
Ovviamente, anche le tre principali piattaforme cloud: Google Cloud Platform, Amazon Web Services, Microsoft Azure che offrono infrastruttura, servizi e strumenti per realizzare un progetto e implementare ogni componente all’interno dello stesso sistema.
Le piattaforme cloud mettono a disposizione anche database sia di tipo SQL, sia NoSQL e altre tipologie che soddisfano qualsiasi necessità di persistenza dei dati; inoltre, il cloud è sinonimo di scalabilità e una piattaforma cloud permette di realizzare sistemi scalabili con facilità utilizzando le funzionalità in essa integrate.
Infine, dopo tutti gli sforzi di progetto e implementazione i risultati devono essere resi disponibili e fruibili ma soprattutto devono comunicare in modo comprensibile il contenuto informativo a diversi target di utenti; sono disponibili strumenti di visualizzazione integrati nelle stesse piattaforme cloud ma anche indipendenti: Tableau, Power BI, QLik, strumenti open source come Grafana.
La scelta delle tecnologie e degli strumenti deve essere fatta considerando anche fattori molto “veniali”, come la facilità d’uso, considerando l’utente target, e i costi, considerando progetto, sviluppo, manutenzione ed eventuali licenze software e cloud.
Un discorso a parte che qui ricordiamo solamente lo meritano i Large Language Model alla base di sistemi di supporto tramite linguaggio naturale e con molte applicazioni interne a un’azienda o per la creazione di servizi. Per questi ci si appoggia a ChatGPT, Claude AI, Gemini, LLama e altri.
Preparazione dei dati
La raccolta e la preparazione dei dati rappresentano spesso la parte più dispendiosa in termini di tempo di un progetto di machine learning, soprattutto per la fase di pulizia e trasformazione in un formato adatto all’analisi. La prima parte è la raccolta che consiste nell’identificazione di tutte le fonti di dati disponibili e rilevanti, dai database interni, file in formato CSV, fino a sorgenti esterne accessibili attraverso API.
La fase successiva e più importante, ma come dicevamo prima anche tra le più onerose; è la pulizia dei dati che consiste nella correzione di errori, eliminazione di duplicati, gestione dei valori mancanti detti missing values”.
Immediatamente successive alla pulizia avvengono le trasformazioni necessarie come normalizzazione, standardizzazione, conversioni di formati; tutte operazioni che convertono i dati in formati adatti e “quasi pronti” per essere dati in pasto agli algoritmi di machine learning scelti. Quasi pronti perché si possono effettuare ulteriori operazioni per migliorare le performance del modello; questa fase si chiama feature engineering e consiste nella selezione dei dati più significativi, nella ricombinazione dei dati esistenti per creare nuove caratteristiche fino alla data augmentation per aumentare la quantità di dati arricchendo la varietà di quelli iniziali.
Qualità dei dati e rispetto delle normative sulla privacy
In tutte queste operazioni devono essere superate delle sfide; le due più importanti sono la qualità dei dati e il rispetto delle normative sulla privacy.
La qualità dei dati è fondamentale perché da dati inconsistenti, errati o incompleti possono derivare solo modelli con precisione insufficiente all’utilizzo con successo. La fase di raccolta, pulizia dei dati e la fase di trasformazione sono quelle che giocano il ruolo critico per garantire la qualità dei dati.
Le normative sulla privacy, la gestione dei dati sensibili e il rispetto del regolamento europeo GDPR e delle leggi da esso derivate devono essere presi in considerazione fin dall’inizio del progetto, nella fase di ideazione per evitare un blocco insormontabile a metà dell’opera. Privacy e security “by design” devono accompagnare tutte le fasi di progetto in particolare la raccolta e pulizia dei dati che possono comprendere una fase di anonimizzazione.
Nella preparazione dei dati possiamo enumerare alcuni strumenti (elenco non assolutamente completo o esaustivo) utili:
Basso livello (librerie):
- Pandas: libreria Python per la manipolazione e l’analisi dei dati.
- SQL: linguaggio per interrogare database relazionali.
- NLTK: libreria Python per l’elaborazione del linguaggio naturale.
- Scikit-learn: libreria Python per il machine learning.
Medio/alto livello (applicazioni con funzionalità di data preparation):
- Data Science Studio: prodotto per costruzione di dataset.
- Alteryx: piattaforma di data governance e analytics.
- Knime: piattaforma open source completa per analisi, integrazione e preparazione dati, machine learning.
Integrate dai cloud provider:
- DataPrep: prodotto di Trifacta integrato nella Google Cloud Platform
- AWS Glue: servizi su AWS per integrazione, preparazione dati
- Azure Data Factory: prodotto integrato in Azure Cloud
La tendenza è di scegliere sistemi integrati dai cloud provider se si ha un’architettura cloud; la scelta comunque è determinata dal contesto e dalla semplicità di utilizzo.
Machine learning: modellazione e addestramento
La modellazione consiste nella scelta di un algoritmo matematico in grado di apprendere dai dati e fare previsioni. La scelta del modello dipende dal tipo di problema da affrontare e può essere di classificazione, regressione, clustering o altro; questo dipende anche dalla tipologia di dati a disposizione, nel senso di numerici, categorici, testuali, immagini, etc.
La dimensione dei dati influisce nella scelta del modello in quanto alcuni algoritmi non sono indicati in caso di dataset di grandi dimensioni.
La scelta del modello ricade su uno o più dei tanti disponibili:
- Supervised learning: il modello viene addestrato su dati etichettati (es. classificazione di immagini, previsione dei prezzi)
- Unsupervised learning: Il modello cerca pattern nei dati non etichettati (es. clustering, riduzione della dimensionalità).
- Reinforcement learning: Il modello apprende attraverso interazioni con un ambiente, cercando di massimizzare una ricompensa (es. giochi, robotica)
L’addestramento, per i modelli che lo prevedono, è il processo attraverso il quale il modello impara dai dati. Consiste nell’alimentare il modello con un dataset di addestramento, composto da input e output desiderati. Il modello cerca di minimizzare una funzione di costo, che misura la differenza tra le sue previsioni e i valori reali. Il processo di ottimizzazione e massimizzazione della precisione continua fino a che quest’ultima si stabilizza.
Tra le tecniche di ottimizzazione sono molto utilizzate quelle di “regolarizzazione”; queste evitano che il modello impari troppo “a memoria” sul dataset di addestramento e di conseguenza sbagli quando riceve in input dati nuovi (mai visti). L’addestramento comprende le fasi di validazione e test che sono fatte utilizzando appositi dataset appunto di validazione e test; la qualità del modello è stabilita tramite alcune metriche applicate agli output del modello in fase di validazione e test.
Deployment e monitoraggio
Il deployment e il monitoraggio sono le fasi finali nel ciclo di vita di un modello di machine learning e senza di esse il progetto non sarebbe concluso, anzi affossato.
Il deployment, o rilascio in esercizio, consiste nel rendere operativo il modello di machine learning in un ambiente di produzione. In altre parole, si tratta di integrare il modello in un’applicazione, un servizio web o un sistema aziendale esistente, in modo che possa essere utilizzato per prendere decisioni in tempo reale.
Prima del deployment deve essere stata effettuata la scelta della piattaforma che quasi sempre ormai è una piattaforma cloud perché offre servizi gestiti e tutto il necessario per le operazioni di configurazione e deploy.
Oltre alla piattaforma di destinazione si possono scegliere diverse tecnologie disponibili e molto attuali quali i container con docker e kubernetes per una maggiore portabilità e controllo, i servizi serverless in cloud per eseguire funzioni specifiche su richiesta.
Il modello deve essere compatibile e integrarsi coi componenti del sistema esistente, ad esempio database, interfacce utente, API.
Una volta effettuato il deploy del modello deve essere prevista la manutenzione perché un dataset non è eterno, come la tecnologia anche i dati evolvono nel senso che dopo sei mesi o più il dataset potrebbe essere vecchio, non più reale o semplicemente necessita un’integrazione coi dati degli ultimi mesi; per queste ragioni potrebbero essere necessari aggiornamenti periodici del modello.
Questi controlli sono parte di un processo continuo, il monitoraggio che ha lo scopo di verificare le prestazioni del modello in produzione.
Il monitoraggio è fondamentale per identificare eventuali problemi, come il degrado delle prestazioni o i bias, e per prendere azioni correttive. Vengono monitorate le prestazioni attraverso le stesse metriche dell’addestramento per verificare che il modello continui a fare previsioni accurate nel tempo.
Si misura il tempo necessario per ottenere una previsione, l’utilizzo della CPU, della memoria e di altre risorse.
Il monitoraggio del modello in produzione permette di individuare e risolvere rapidamente i problemi che possono influenzare le prestazioni del modello, fornisce informazioni per migliorarlo e aiuta a garantire la qualità delle decisioni basate sul modello prevenendo errori potenzialmente costosi.
Il deployment e il monitoraggio sono due fasi essenziali per garantire il successo di un progetto di machine learning. Un modello ben progettato e addestrato può diventare inutile se non viene implementato correttamente e monitorato nel tempo.
MLOps (Machine Learning Operations)
Come nello sviluppo del software, abbiamo a disposizione un insieme di metodi e strumenti che permettono di automatizzare e standardizzare il ciclo di vita completo di un modello di machine learning, dalla sua creazione al suo monitoraggio in produzione; si tratta di MLOps (Machine Learning Operations).
MLOps include:
- Continuous Integration/Continuous Delivery (CI/CD) per il machine learning: per automatizzare il processo di costruzione, test e deployment dei modelli.
- Versioning dei modelli e dei dati: per tenere traccia delle diverse versioni di modelli e dati per garantire la riproducibilità degli esperimenti.
- Monitoraggio continuo: per monitorare le prestazioni dei modelli in produzione e rilevare eventuali anomalie o degrado delle prestazioni.
- Gestione della configurazione: per gestire in modo efficiente i parametri e le configurazioni dei modelli.
Alcuni strumenti MLOps popolari sono:
- MLflow: piattaforma open-source per gestire il ciclo di vita completo dei modelli.
- Kubeflow: estende Kubernetes per facilitare il deployment e la gestione di applicazioni di machine learning.
- Weights & Biases: piattaforma per tracciare e visualizzare gli esperimenti di machine learning.
- DVC (Data Version Control): sistema di controllo delle versioni per i dati.
- Kubeflow Pipelines: per creare pipeline di machine learning end-to-end.
Conclusioni
Come conclusione ricordiamo che per il successo di un progetto è importante la cultura aziendale che deve essere data-driven e collaborativa; l’azienda deve disporre o trovare professionisti con le competenze necessarie in machine learning e DevOps. Dal lato operativo l’azienda deve disporre le risorse computazionali necessarie normalmente appoggiandosi a una infrastruttura cloud; inoltre, deve essere consapevole che i modelli di machine learning devono potersi integrare nei sistemi aziendali legacy.