- Addestrare un modello di apprendimento automatico utilizzando le librerie Python in un Jupyter Notebook
- Incorporare un modello di apprendimento automatico addestrato in un'applicazione web Streamlit
Queste sono le attività di questa lezione:
LAVORARE CON I MODELLI DI APPRENDIMENTO AUTOMATICO
Un'altra caratteristica importante di Jupyter Notebooks, Python e Streamlit è la possibilità di addestrare modelli di apprendimento automatico e fare previsioni.
Se sei alle prime armi con l'Intelligenza Artificiale, ti consigliamo di consultare le lezioni sull'Intelligenza Artificiale di questo programma per imparare le basi prima di passare alla codifica più avanzata. Puoi usare una piattaforma di modelli di apprendimento automatico facile da usare come Teachable Machine per creare un modello e poi incorporarlo in un'applicazione web Python.
Se hai già avuto qualche esperienza con l'intelligenza artificiale e il lavoro con i dataset utilizzando Jupyter Notebook, questo è un buon passo avanti per te.
In questa lezione imparerai a conoscere alcune delle librerie di apprendimento automatico di Python e alcuni dei diversi modelli di apprendimento automatico che puoi creare utilizzando Python.
Per ricapitolare, per creare un modello di apprendimento automatico, ci sono 3 parti principali.
DATASET
TROVA MODELLI CON UN ALGORITMO DI APPRENDIMENTO
PREVISIONE!
Il set di dati è l'input per il modello. Può includere testo, immagini, suoni o pose. Nell'Unità 2 abbiamo lavorato con dati testuali e numerici utilizzando i Jupyter Notebook. In questa lezione continueremo a lavorare con dati testuali, sotto forma di foglio di calcolo.
Trovare i pattern significa essenzialmente costruire un modello di apprendimento automatico utilizzando il set di dati. Python contiene molte librerie che permettono di costruire un modello di intelligenza artificiale a partire dai dati. In questo corso utilizzeremo molte delle funzioni del pacchetto scikit-learn. Oltre alle librerie che fornisce, il sito web contiene molte informazioni eccellenti sull'apprendimento automatico e sul processo di costruzione dei modelli. È un'ottima risorsa per saperne di più!
Una volta creato il modello, questo può essere utilizzato per prevedere un risultato sulla base di nuove informazioni. Anche in questo caso, Python fornisce librerie che permettono di farlo.
PREELABORAZIONE DEI DATI
Prima che il tuo set di dati possa essere inviato all'algoritmo per la costruzione del modello, deve essere preprocessatoo "ripulito" in modo che l'algoritmo di costruzione del modello possa lavorarci e creare il modello più accurato possibile. In effetti, la maggior parte del lavoro per la creazione di un modello di apprendimento automatico consiste nella preelaborazione. Dovrai esaminare attentamente i dati per decidere cosa è importante, cosa può essere tralasciato e cosa deve essere ripulito.
Cosa comporta la pre-elaborazione? Con un dataset basato sul testo, ecco alcuni aspetti da affrontare.
Valori nulli
A volte il set di dati contiene valori vuoti o nulli, soprattutto se si tratta di dati di un sondaggio. A volte si eliminano le righe che contengono dati nulli.
Tuttavia, se il numero di campioni è basso, potresti non volerli eliminare. Un'altra opzione è quella di sostituire un valore nullo con un altro valore. Potrebbe essere zero o la media di tutti gli altri valori di quel campo.
I valori fuori norma
A volte i dati contengono uno o due campioni molto diversi dal resto dei dati. Questo potrebbe distorcere il modello. Non vuoi che i valori anomali influenzino la creazione del modello, quindi spesso i valori anomali vengono eliminati dal set di dati.
Ad esempio, potresti avere un set di dati in cui il 95% dei campioni sono persone di età compresa tra i 10 e i 30 anni, ma ci sono alcuni campioni casuali in cui le persone hanno più di 50 anni. Dato che la stragrande maggioranza dei campioni rientra nella fascia d'età compresa tra i 10 e i 30 anni, puoi considerare di eliminare i campioni della fascia d'età più avanzata.
Standardizzazione
Spesso i numeri di un grande insieme di dati variano a seconda delle caratteristiche rappresentate. Ad esempio, potresti avere l'età, che varia da 0 a 70, ma poi potresti avere lo stipendio, che varia da 0 a 500.000! Le scale sono molto diverse, quindi una caratteristica potrebbe contare di più nel modello.
Per risolvere questo problema, puoi standardizzare i dati in modo che siano su un'unica scala. scikit-learn fornisce uno StandardScaler, che aggiorna ogni caratteristica in modo che la media sia 0 e la deviazione standard sia 1.
Un'altra cosa da considerare è un numero equilibrato di campioni per ogni classe o etichetta. Devi assicurarti che nel tuo set di dati ci sia lo stesso numero di classi.
Codifica
All'intelligenza artificiale piacciono i numeri, non necessariamente le parole. Per questo è utile che tutti i dati siano convertiti in numeri. scikit-learn mette a disposizione le funzioni Encoder, in modo da poter convertire facilmente una serie di possibili valori testuali in una serie di numeri.
Un esempio potrebbe essere il livello di attività, con i valori campione sedentario, leggero, moderato, alto. Queste risposte possono essere codificate come valori 0, 1, 2 e 3, il che è molto più facile da gestire per l'algoritmo di costruzione del modello.
SCISSIONE DEI DATI
Una volta preelaborati i dati, devi dividerli in un set di allenamento e in un set di test. L'insieme di formazione verrà utilizzato per addestrare e creare il modello. In seguito, testerai il tuo modello utilizzando l'insieme di test per vedere come si comporta.
Esistono dei modi standard per suddividere i dati (di solito il 75% per l'allenamento e il 25% per i test), ma puoi suddividerli come preferisci. Anche in questo caso sono previste delle funzioni che ti permettono di automatizzare il tutto.
CREAZIONE DEL MODELLO
Il passo successivo è la creazione del modello. Una decisione importante da prendere è: quale algoritmo utilizzare? Esistono molti algoritmi di apprendimento supervisionato tra cui scegliere ed è difficile sapere quale utilizzare. Un buon metodo consiste nel provare diversi algoritmi e vedere quale ti offre la migliore accuratezza.
Il primo passo è quello di decidere se hai bisogno di una classificazione classificazione o un algoritmo di regressione di regressione. Questo dipende da cosa stai cercando di prevedere.
Gli algoritmi di classificazione Sono utilizzati per prevedere obiettivi o classi discrete. Ad esempio, classificare le e-mail come spam o non spam è un problema di classificazione.
Gli algoritmi di regressione sono utilizzati per prevedere qualcosa che si trova in un intervallo continuo. Un esempio potrebbe essere la previsione dell'importo dello stipendio di una persona. La previsione è costituita da un intervallo di numeri e l'output potrebbe essere un qualsiasi valore lungo tale intervallo.
Ecco solo alcuni dei tipi più diffusi di algoritmi per la creazione di modelli.
Classificazione
- Albero decisionale
- Foresta casuale
- Vicini di K
- Baia ingenua
- Regressione logistica
- Macchina vettoriale di supporto
Regressione
- Regressione lineare
- Regressione di cresta
- Regressione Lasso
- Regressione polinomiale
- Regressione lineare bayesiana
- Regressione vettoriale di supporto
Si noti che alcuni algoritmi rientrano in entrambe le tipologie. Ad esempio, esiste un classificatore ad albero decisionale e un regressore ad albero decisionale. Inoltre, una Support Vector Machine lavora per la classificazione e una Support Vector Regression per la regressione.
Quindi, come si fa a decidere quale utilizzare? Dovresti fare una ricerca per vedere cosa usano gli altri data scientist in diverse situazioni per capire cosa potrebbe essere adatto al tuo modello. Dovresti anche provare alcuni algoritmi diversi con i tuoi dati e trovare quello che offre la migliore accuratezza. Puoi anche modificare i parametri di un particolare algoritmo per vedere se restituisce un modello più accurato.
scitkit-learn fornisce funzioni per tutti questi algoritmi, quindi è semplice creare il modello.
VALUTAZIONE DEL MODELLO
Se vuoi che il tuo modello sia il migliore possibile, devi valutarne le prestazioni. Due variabili comuni nella valutazione di un modello sono il bias e la varianza.
Bias è la differenza tra il valore previsto dal modello e il valore corretto.
La varianza è l'entità della variazione delle previsioni quando si utilizzano dati diversi.
Si vuole ottenere un buon equilibrio tra bias e varianza.
Bias elevato -> underfitting.
Underfitting Si verifica quando il modello è troppo semplice per tenere conto del rumore presente nei dati di formazione. Questo può accadere se non ci sono abbastanza dati o non ci sono abbastanza caratteristiche (colonne), oppure se c'è troppo rumore nei dati. Se un modello non funziona bene sia con i dati di addestramento che con quelli di test, significa che l'underfitting è un segnale.
Alta varianza -> overfitting.
Overfitting Succede quando si addestra un modello su una serie di dati e questo si comporta molto bene, ma se poi gli si presentano nuovi dati, il modello non si comporta affatto bene. Questo può accadere se il modello è eccessivamente complesso e cerca di adattarsi troppo ai dati di addestramento. Il modello può prevedere molto bene sui dati di addestramento, ma poi non ottiene risultati soddisfacenti sui dati di test.
Una tecnica per verificare le prestazioni di un modello è la convalida incrociata.
Convalida incrociata significa addestrare il modello più volte, utilizzando ogni volta una diversa suddivisione dei dati di addestramento/test. Il set di dati viene suddiviso in diversi piegheo sottoinsiemi. Poi una piega viene tenuta come set di convalida o di prova e le pieghe rimanenti vengono utilizzate per l'addestramento. Questa operazione viene eseguita più volte, quindi ogni volta i set di addestramento e di test cambiano.
sciikit-learn fornisce anche una funzione metriche in modo da poter ottenere facilmente i punteggi delle prestazioni dei tuoi modelli.
- punteggio di accuratezza = previsioni corrette/previsioni totali
- precisione = veri positivi/(veri positivi + falsi positivi)
- recall = veri positivi/(veri positivi + falsi negativi)
- Punteggio F1 = (2 x precisione x richiamo)/(precisione + richiamo)
- specificità = vero negativo/ (veri positivi + falsi negativi)
- matrice di confusione - mostra i conteggi dei veri positivi, dei veri negativi, dei falsi positivi e dei falsi negativi
Controllando le metriche dei vari algoritmi, puoi scegliere il modello migliore.
PREVISIONE!
Una volta ottenuto un modello che ti soddisfa, vorrai utilizzarlo nella tua applicazione.
È prassi comune eseguire la preelaborazione, la creazione e la valutazione del modello utilizzando Python, in un ambiente come Jupyter Notebooks. Da lì, puoi esportare il tuo modello in un file.
Poi, all'interno della tua applicazione Streamlit, puoi caricare il modello e usarlo per fare previsioni.
Nelle attività di questa lezione affronterai l'intero processo utilizzando un set di dati sul rischio di ictus. Vedrai come preelaborare i dati, creare modelli utilizzando diversi algoritmi e poi utilizzare un modello in una semplice applicazione Streamlit per prevedere il rischio di ictus, date alcune caratteristiche di input.
ATTIVITÀ 1: ADDESTRARE UN MODELLO AI IN JUPYTER NOTEBOOK
Esplora un set di dati sul rischio di ictus per costruire un modello di intelligenza artificiale
- Scarica un set di dati per la previsione dell'ictus da Kaggle.
- Lavora con i dati in un Jupyter Notebook per:
- Esamina i dati
- Preelaborare i dati per prepararli al modello
- Crea alcuni modelli diversi
- Valutare e scegliere un modello per la tua applicazione
- Esporta il modello
SFIDA
Prova un modello diverso da quelli presenti nel Jupyter Notebook.
- Cerca sul sito web di scikit-learn altri algoritmi di classificazione e guarda altri esempi di creazione di modelli su Kaggle.
- Scegli un algoritmo e aggiungi il codice al tuo quaderno per creare il modello.
- Usa le metriche di scikit-learn per verificare l'accuratezza.
Come si comporta il tuo modello? È migliore di altri algoritmi presenti nel quaderno?
ATTIVITÀ 2: COSTRUIRE UN'APP DI PREVISIONE
Usa il tuo modello in un'applicazione Streamlit
SFIDA
Il dataset Iris è un dataset classico che classifica i fiori di iris in 3 specie (setosa, versicolor e virginica) in base alle dimensioni dei petali e dei sepali.
- Fai delle ricerche sul set di dati per imparare le sue caratteristiche e i suoi obiettivi.
- Puoi scaricare il set di dati e creare il tuo modello personale o utilizzare questo modello(file pickle) creato utilizzando i vicini K-nearest. Nota che per questo set di dati non è stato necessario alcuno scaler. Il file pickle contiene solo il modello.
- Importa il modello e crea un'applicazione Streamlit per prevedere le specie di iride in base alle quattro caratteristiche del set di dati.
ISPIRAZIONE TECHNOVATION
Ecco alcuni esempi sorprendenti di partecipanti a Technovation che hanno utilizzato Python e Streamlit per costruire applicazioni web che incorporano modelli di apprendimento automatico.
T.E.D.D.Y - Rilevatore di disagio giovanile basato sul testo , di Team TEDDY degli USAassiste insegnanti e consulenti nell'individuazione precoce dei problemi di salute mentale degli studenti. TEDDY utilizza l'intelligenza artificiale per identificare le frasi che esprimono un sentimento negativo o che mostrano i modelli linguistici tipici degli individui affetti da depressione. In seguito, gli studenti possono essere indirizzati a un consulente per ricevere supporto.
RIFLESSIONE
Hai affrontato l'intero processo di pre-elaborazione di un set di dati, la costruzione di diversi modelli, la valutazione e la scelta di uno da utilizzare in un'applicazione. Sono tante cose da imparare in una sola lezione!
REVISIONE DEI TERMINI CHIAVE
- Preelaborazione - prendere un set di dati e assicurarsi che i dati in esso contenuti siano adatti per addestrare un modello di apprendimento automatico.
- Algoritmo di classificazione - un algoritmo utilizzato per addestrare un modello di apprendimento automatico che classificherà o predirà valori discreti
- Algoritmo di regressione - algoritmo utilizzato per addestrare un modello di apprendimento automatico a prevedere un valore su un intervallo continuo.
- Bias - la differenza tra il valore previsto dal modello e il valore corretto, dovuta a ipotesi errate che semplificano il modello.
- Varianza - la quantità di variabilità nelle previsioni del modello, quando un modello non è in grado di generalizzare di fronte a nuovi dati.
- Overfitting - quando il modello si adatta troppo bene ai dati di addestramento e non è in grado di prevedere bene i nuovi dati, a causa dell'elevata varianza del modello.
- Underfitting - quando un modello è troppo semplificato e non funziona bene né con i dati di addestramento né con quelli di test, a causa di un elevato bias o di assunzioni nel modello.
RISORSE AGGIUNTIVE
Apprendimento automatico
- Geeks for Geeks Machine Learning Tutorial - offre un'ottima introduzione e una panoramica su alcuni processi e terminologie dell'apprendimento automatico.
- Tutorial Scikit-Learn di Simplilearn: analizza un set di dati sulla qualità del vino per esercitarsi a usare scikit-learn in un Jupyter Notebook
- Apprendimento automatico con scikit-learn - una playlist completa su Youtube di Data School
Streamlit
- Costruire un'app web di apprendimento automatico da zero con Patrick Loeber: un altro esempio di costruzione di un modello e del suo utilizzo in un'app web, dall'inizio alla fine.
- Classificatore di immagini con Streamlit, se il modello è addestrato sulle immagini