Unificata, automatizzata e pronta a trasformare i dati in intelligence.
Scopri come trarre il massimo dai tuoi dati.
Un workflow di machine learning è il processo sistematico di sviluppo, formazione, valutazione e implementazione di modelli di machine learning. Comprende una serie di passaggi che guidano i professionisti nell'intero ciclo di vita di un progetto di machine learning, dalla definizione dei problemi al deployment delle soluzioni.
I workflow di machine learning aiutano a:
Un tipico workflow di machine learning prevede le seguenti fasi:
Definizione del problema, in cui si definisce chiaramente il problema da risolvere e si definiscono gli obiettivi del progetto. Questo passaggio implica la comprensione del contesto aziendale, l'identificazione delle origini dati rilevanti e la definizione delle metriche chiave delle performance.
Raccolta e pre-elaborazione dei dati, in cui si raccolgono i dati necessari da varie origini e li si pre-elabora per garantire che siano puliti, coerenti e pronti per l'analisi. Questo passaggio può includere attività come la pulizia dei dati, la progettazione delle funzionalità e la trasformazione dei dati.
Analisi esplorativa dei dati (EDA, Exploratory Data Analysis), in cui è possibile esplorare i dati per ottenere informazioni approfondite e identificare modelli, tendenze e relazioni. EDA aiuta a comprendere le caratteristiche dei dati e a prendere decisioni sulla selezione delle funzionalità, sulla selezione dei modelli e sulle strategie di pre-elaborazione dei dati.
Selezione e addestramento dei modelli, in cui si scelgono algoritmi e tecniche di machine learning appropriati in base ai requisiti dei problemi e alle caratteristiche dei dati, si addestrano i modelli selezionati utilizzando i dati preparati e si valutano le loro performance utilizzando metriche di valutazione adeguate.
Valutazione e tuning dei modelli, in cui si valutano le performance dei modelli formati utilizzando tecniche di convalida come la convalida incrociata e i metodi di tuning degli iperparametri per ottimizzare le performance dei modelli.
Modella il deployment e il monitoraggio, dove distribuisci il modello addestrato nell'ambiente di produzione, lo integri nei sistemi esistenti, monitori le performance del modello in scenari reali e lo aggiorni secondo necessità per garantire un'efficacia continua.
Approfondiamo ciascuna di queste fasi.
Per definire il problema:
Il primo passo per definire il problema è comprendere gli obiettivi aziendali più ampi. Ciò significa collaborare a stretto contatto con gli stakeholder per identificare le principali sfide o opportunità di business che vuoi affrontare con il machine learning.
Sulla base di questi obiettivi aziendali, elaborare una dichiarazione del problema chiara e concisa. Questa affermazione deve specificare cosa deve essere previsto, classificato o ottimizzato e come si allinea con i tuoi obiettivi aziendali complessivi. Dovrebbe anche considerare fattori come la disponibilità dei dati, la fattibilità e il potenziale impatto.
Stabilisci criteri di successo misurabili o indicatori chiave di performance (KPI) che puoi utilizzare per valutare le performance della soluzione di machine learning. Devono essere in linea con la dichiarazione del problema e i risultati di business desiderati.
Identifica i requisiti dei dati per risolvere il problema, compresi i tipi di dati (strutturati o non strutturati), le origini, le considerazioni sulla qualità e qualsiasi vincolo normativo o etico relativo all'utilizzo dei dati. Comprendere i limiti e i vincoli dei dati in anticipo ti aiuterà a definire aspettative realistiche e a pianificare le strategie di acquisizione e pre-elaborazione dei dati.
Eseguire una valutazione preliminare dei rischi per identificare i potenziali rischi e problemi associati alla definizione del problema. Ciò include i rischi correlati alla qualità dei dati, alla complessità del modello, all'interpretabilità, alla conformità normativa e all'impatto sul business. Lo sviluppo di strategie di riduzione dei rischi all'inizio del progetto può aiutare ad affrontare queste sfide in modo proattivo.
Infine, documenta la definizione del problema, tra cui la dichiarazione del problema, i criteri di successo, i requisiti dei dati, l'ambito, i vincoli e i risultati della valutazione del rischio. Questa documentazione sarà il riferimento per tutti gli stakeholder coinvolti e contribuirà a garantire l'allineamento durante l'intero flusso di lavoro di machine learning.
La raccolta di dati rilevanti per il progetto di machine learning è un passo importante che può avere un impatto significativo sulle performance e sui risultati del modello.
Ecco il processo passo-passo per la raccolta di dati e suggerimenti per garantirne l'affidabilità e la qualità:
Definisci chiaramente gli obiettivi del tuo progetto di machine learning. Comprendi le domande a cui vuoi rispondere e i problemi che vuoi risolvere. In questo modo i tuoi sforzi per la raccolta dei dati saranno guidati verso la raccolta delle informazioni più rilevanti.
Determina dove trovare i dati di cui hai bisogno. Le origini dati possono variare a seconda della natura del progetto, ma le origini più comuni includono:
Siti web come Kaggle, UCI Machine Learning Repository e database della pubblica amministrazione.
API: Molte organizzazioni offrono API per accedere ai propri dati in modo programmatico.
Web scraping: Estrazione di dati dai siti web utilizzando strumenti come Beautiful Soup o Scrapy.
Database interni: Se applicabile, utilizza i dati memorizzati nei database della tua organizzazione.
Sondaggi o interviste: Raccogli i dati direttamente dagli utenti o dagli esperti di dominio tramite sondaggi o interviste.
Prima di raccogliere i dati, valutane la qualità per assicurarti che siano adatti al tuo progetto. Considera i seguenti fattori:
Precisione, I dati sono privi di errori o incoerenze?
Completezza: Il set di dati copre tutte le variabili e i record necessari?
Coerenza: I valori dei dati sono coerenti tra origini o periodi di tempo diversi?
Rilevanza: I dati includono le informazioni necessarie per raggiungere i tuoi obiettivi?
Tempestività: I dati sono aggiornati e rilevanti per la tua analisi?
Metodi di raccolta dati: Hai scelto i metodi appropriati per raccogliere i dati in base all'origine dati?
Conservare una documentazione completa delle origini dati, dei metodi di raccolta, delle fasi di pre-elaborazione e di eventuali trasformazioni applicate ai dati. Questa documentazione è cruciale per la trasparenza, la riproducibilità e la collaborazione.
La raccolta dei dati è un processo iterativo. Mentre si analizzano i dati e si perfeziona il modello, potrebbero essere necessari ulteriori dati o modifiche ai dataset esistenti. Valuta continuamente la pertinenza e la qualità dei tuoi dati per migliorare la precisione e l'efficacia del tuo modello di machine learning.
La pre-elaborazione dei dati è il processo di preparazione dei dati grezzi per l'analisi nei progetti di machine learning e data science. Ciò implica la pulizia, la trasformazione e l'organizzazione dei dati per garantire che siano adatti per la modellazione e l'analisi. Inoltre, contribuisce alla qualità dei dati, alla progettazione delle funzionalità, alle performance dei modelli e alla compatibilità dei dati.
Ecco alcuni aspetti chiave della pre-elaborazione dei dati e le istruzioni per la gestione dei dati mancanti, degli outlier e della normalizzazione dei dati:
Inizia identificando colonne o funzionalità con valori mancanti nel dataset. Quindi, a seconda della natura dei dati mancanti, scegli un metodo di imputazione appropriato come media, mediana, modalità o utilizzo di modelli predittivi per compilare i valori mancanti. Nei casi in cui i valori mancanti sono troppo numerosi o non possono essere imputati in modo affidabile, considerare la possibilità di eliminare righe o colonne con dati mancanti. Per le funzionalità categoriche, considerare l'aggiunta di una nuova categoria per rappresentare i valori mancanti o utilizzare tecniche come l'imputazione della modalità per le variabili categoriche.
Per gestire gli outlier:
I passaggi della normalizzazione dei dati sono:
a. Standardizzazione (normalizzazione del punteggio Z): Trasformare le funzioni numeriche in modo da avere una media di 0 e una deviazione standard di 1. Aiuta a scalare le funzionalità a una gamma simile, rendendole paragonabili.
b. Scalabilità min-max: Scala le funzionalità a un intervallo specifico, in genere compreso tra 0 e 1, preservando le relazioni relative tra i punti dati.
c. Scalabilità affidabile: Usa tecniche di scalabilità solide come RobustScaler, che scala i dati in base alla mediana e al range interquartile, rendendoli meno sensibili agli outlier.
La progettazione delle funzionalità implica la trasformazione dei dati raw in un formato più adatto per la modellazione. Si concentra sulla creazione di nuove funzionalità, sulla selezione di funzionalità importanti e sulla trasformazione delle funzionalità esistenti per migliorare le performance dei modelli di machine learning. La progettazione delle funzionalità è molto importante per la precisione del modello, la riduzione dell'overfitting e il miglioramento della capacità di generalizzazione dei modelli.
Ecco alcune spiegazioni ed esempi di alcune tecniche di ingegneria delle funzionalità più comuni:
La codifica one-hot converte le variabili categoriche in un formato numerico che può essere inserito in algoritmi di machine learning. Crea colonne binarie per ogni categoria, dove 1 indica la presenza della categoria e 0 indica il contrario. Ad esempio, considera una funzione "colore" con le categorie "rosso", "verde" e "blu". Dopo la codifica one-hot, questa funzione viene trasformata in tre funzioni binarie: "Is_Red", "Is_Green" e "Is_Blue", dove ogni funzione rappresenta la presenza di quel colore.
La scalabilità delle funzionalità porta le funzionalità numeriche a una scala o a un intervallo simile. Aiuta gli algoritmi a convergere più velocemente e impedisce alle funzionalità di grandi dimensioni di dominare durante l'addestramento. Le tecniche di scalabilità più comuni includono la standardizzazione e la min-max summenzionate.
Le tecniche di riduzione delle dimensioni riducono il numero di funzionalità, conservando al contempo la maggior parte delle informazioni pertinenti. Questo aiuta a ridurre la complessità computazionale, migliorare le performance del modello ed evitare la dimensionalità.
L'estrazione delle funzionalità comporta la creazione di nuove funzionalità da quelle esistenti utilizzando trasformazioni matematiche, conoscenze di dominio o tecniche di elaborazione del testo. La generazione di combinazioni polinomiali di funzionalità per acquisire relazioni non lineari nei dati sarebbe un esempio. Un altro esempio è la conversione dei dati di testo in funzioni numeriche utilizzando metodi come TF-IDF, incorporamenti di parole o rappresentazioni di parole a forma di bag-of-word.
La scelta del modello di machine learning appropriato per un'attività specifica è un passaggio critico nei workflow di machine learning. Prevede la considerazione di vari fattori, come la natura del problema, i dati disponibili, le caratteristiche del modello desiderato (ad es. interpretabilità, precisione) e le risorse computazionali.
Ecco i passaggi e le considerazioni chiave nel processo di selezione dei modelli:
Innanzitutto, determina se il problema riguarda una classificazione, una regressione, un clustering o un altro tipo di attività. È necessario comprendere le funzionalità, la variabile (o le variabili) di destinazione, le dimensioni dei dati, la distribuzione dei dati e gli eventuali schemi o complessità intrinseche nei dati.
Sfrutta l'esperienza del dominio per identificare i modelli comunemente utilizzati e adatti per attività simili nel dominio. Ciò è importante se si considerano diversi tipi di modelli di machine learning, come modelli lineari, modelli ad albero, macchine vettoriali di supporto (SVM), reti neurali, metodi di assemblaggio, ecc., in base al tipo di problema e alle caratteristiche dei dati.
Considera la complessità del modello e la sua capacità di acquisire relazioni complesse nei dati. Modelli più complessi come le reti neurali di deep learning possono offrire una maggiore precisione predittiva, ma possono essere costosi dal punto di vista computazionale e soggetti a overfitting. A seconda dell'applicazione e delle esigenze degli stakeholder, è importante decidere se interpretare il modello. I modelli semplici come la regressione lineare o gli alberi decisionali sono più interpretabili rispetto ai modelli black-box complessi come le reti neurali profonde.
Per le attività di classificazione, considera metriche come precisione, precisione, richiamo, F1-score, ROC-AUC, ecc., in base allo squilibrio di classe e agli obiettivi di business. Per le attività di regressione, è possibile utilizzare metriche come l'errore quadrato medio (MSE), l'errore assoluto medio (MAE), l'errore quadrato R e altre per valutare le performance del modello. Per valutare appieno le performance del modello, utilizza tecniche di convalida appropriate, come la convalida incrociata, la suddivisione dei test di formazione o la convalida basata sul tempo (per i dati della serie temporale).
Inizia con semplici modelli di base per stabilire un benchmark di performance. Formare più modelli di candidati utilizzando dataset di formazione/convalida appropriati e valutare le loro performance utilizzando metriche scelte. Ottimizza gli iperparametri dei modelli utilizzando tecniche come la ricerca nella griglia, la ricerca casuale o l'ottimizzazione bayesiana per migliorare le performance.
Considera i compromessi tra complessità del modello, interpretabilità, risorse computazionali e metriche delle performance, quindi valuta il modello con le migliori performance su un set di dati di test di holdout per garantire la sua capacità di generalizzazione su dati non visti.
La selezione dei modelli è spesso un processo iterativo. Se il modello scelto non soddisfa i criteri desiderati, ripetere l'iterazione perfezionando l'ingegneria delle funzionalità, gli iperparametri o provando diversi algoritmi fino a ottenere risultati soddisfacenti.
L'addestramento di un modello di machine learning implica l'adattamento dell'algoritmo selezionato ai dati di addestramento per apprendere schemi e relazioni nei dati. Questo processo include la suddivisione dei dati in set di addestramento e convalida, l'ottimizzazione dei parametri del modello e la valutazione delle performance del modello.
Diamo un'occhiata più da vicino ai passi:
Dividere il set di dati in set di formazione e convalida/test. I rapporti di suddivisione tipici sono 70-30 o 80-20 per la formazione/convalida, garantendo che il set di convalida rappresenti la distribuzione dei dati nel mondo reale.
In base al tipo di problema (classificazione, regressione, clustering) e alle caratteristiche dei dati, seleziona l'algoritmo di machine learning appropriato o un insieme di algoritmi per addestrare il modello.
Creare un'istanza del modello scelto inizializzandone i parametri. Ad esempio, in Python con Scikit-Learn, potresti utilizzare codice come:
da sklearn.linear_model import LogisticRegression
modello = LogisticRegression()
Adatta il modello ai dati di addestramento utilizzando il metodo .fit(). Questo passaggio implica l'apprendimento dei modelli e delle relazioni nei dati.
Eseguire la messa a punto degli iperparametri per ottimizzare le performance del modello. Le tecniche più comuni includono la ricerca a griglia, la ricerca casuale o l'ottimizzazione bayesiana.
Valuta le performance del modello addestrato utilizzando il set di convalida/test. Calcolare metriche rilevanti come precisione, precisione, richiamo, F1-score (per la classificazione) o errore quadrato medio.
Una volta soddisfatto delle performance del modello sul set di convalida, riaddestra il modello finale utilizzando l'intero set di dati di addestramento (compresi i dati di convalida) per massimizzare l'apprendimento prima del deployment.
Una volta selezionato e addestrato il modello, sei pronto per implementarlo.
Le fasi di deployment includono:
Serializza il modello addestrato in un formato adatto per il deployment. I formati più comuni includono pickle (Python), PMML (Predictive Model Markup Language), ONNX (Open Neural Network Exchange) o formati personalizzati a seconda del framework utilizzato.
Scegliere un ambiente di deployment appropriato, come le piattaforme cloud (AWS, Azure, Google Cloud), i server on-premise o le soluzioni containerizzate (Docker, Kubernetes). Integra il modello nell'ambiente di produzione utilizzando framework o librerie specifici per l'ambiente di deployment scelto (ad esempio, Flask per le API web, TensorFlow Serving o PyTorch per i modelli di servizio).
Progetta l'architettura di deployment per gestire i diversi carichi e requisiti di scalabilità. Considera fattori come gli utenti simultanei, l'elaborazione in batch e l'utilizzo delle risorse. Usa funzionalità di scalabilità automatica basate su cloud o strumenti di orchestrazione dei container per una scalabilità dinamica basata sulla domanda. Considera la modernizzazione del data center per scalare l'AI.
Assicurati che il deployment del modello supporti previsioni in tempo reale, se necessario. Ciò implica la configurazione di endpoint o servizi a bassa latenza per gestire rapidamente le richieste di previsione in entrata. Considera l'ottimizzazione della velocità di inferenza del modello tramite tecniche come la quantizzazione del modello, la potatura o l'utilizzo di acceleratori hardware (ad esempio GPU, TPU) in base all'ambiente di deployment.
Implementa soluzioni di monitoraggio per monitorare le performance del modello in produzione. Monitora metriche come latenza predittiva, velocità di trasmissione, tassi di errore e deriva dei dati (modifiche nella distribuzione dei dati di input nel tempo). Imposta avvisi e soglie per le metriche delle performance critiche per rilevare e rispondere tempestivamente ai problemi.
Definisci una strategia di versioning per i modelli distribuiti per monitorare le modifiche e facilitare il rollback, se necessario. Implementa un processo per implementare aggiornamenti dei modelli o cicli di riaddestramento basati su nuovi dati o algoritmi migliorati. Considera tecniche come i test A/B per confrontare le versioni dei modelli in produzione prima del deployment completo.
Implementa misure di sicurezza per proteggere il modello, i dati e gli endpoint distribuiti da accessi non autorizzati, attacchi e violazioni dei dati. Garantisci la conformità ai requisiti normativi come GDPR, HIPAA o standard specifici del settore relativi alla privacy dei dati e al deployment dei modelli.
Mantieni una documentazione dettagliata per il modello distribuito, inclusi l'architettura, le API, le dipendenze e le configurazioni. Promuovi la collaborazione tra data scientist, ingegneri e stakeholder per iterare i miglioramenti dei modelli, risolvere i problemi e incorporare il feedback dell'utilizzo reale.
Ora conosci i componenti essenziali di un flusso di lavoro di machine learning strutturato, inclusi passaggi chiave come la definizione del problema, la pre-elaborazione dei dati, la progettazione delle funzionalità, la selezione del modello, la formazione e la valutazione.
Ogni fase svolge un ruolo cruciale nel successo complessivo di un progetto di machine learning. La definizione accurata del problema pone le basi per lo sviluppo di una soluzione mirata, mentre la pre-elaborazione dei dati garantisce la qualità e l'idoneità dei dati per l'analisi. La progettazione delle funzionalità migliora le performance del modello estraendo informazioni significative dai dati. La selezione dei modelli implica la scelta dell'algoritmo più appropriato in base a fattori come complessità, interpretabilità e metriche delle performance, seguiti da training, ottimizzazione e valutazione approfonditi per garantire performance dei modelli solide.
Seguendo un flusso di lavoro strutturato, i data scientist possono migliorare l'efficienza, mantenere l'integrità dei modelli e prendere decisioni informate durante l'intero ciclo di vita del progetto, portando a modelli di machine learning più precisi, affidabili e di impatto che offrono vero valore alle organizzazioni e agli stakeholder.
Tuttavia, una delle sfide principali di tutti i workflow di machine learning è costituita dai colli di bottiglia. I set di dati di addestramento per il machine learning in genere superano di gran lunga la capacità della DRAM in un server. Il modo migliore per prepararsi a questi colli di bottiglia è prevenirli completamente grazie a un'infrastruttura AI AI e ML come AIRI® o FlashStack®. Scopri di più su come Pure Storage aiuta ad accelerare le tue iniziative di AI e ML.
Preparati all'evento più importante a cui parteciperai quest'anno.
Accedi a video e demo on demand per scoprire i vantaggi che Pure Storage ti offre.
Charlie Giancarlo spiega perché il futuro è nella gestione dei dati, non dello storage. Scopri in che modo un approccio unificato trasforma le operazioni IT aziendali.
I workload moderni richiedono velocità, sicurezza e scalabilità AI-ready. Il tuo stack è pronto?