Applicazioni web che utilizzano modelli di intelligenza artificiale

  • 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.

rete neurale

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

Tempo stimato: 60 minuti

Esplora un set di dati sul rischio di ictus per costruire un modello di intelligenza artificiale

Segui questo video a:
  1. Scarica un set di dati per la previsione dell'ictus da Kaggle.
  2. 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
Scarica il Quaderno

SFIDA

Prova un modello diverso da quelli presenti nel Jupyter Notebook. 

  1. Cerca sul sito web di scikit-learn altri algoritmi di classificazione e guarda altri esempi di creazione di modelli su Kaggle.
  2. Scegli un algoritmo e aggiungi il codice al tuo quaderno per creare il modello.  
  3. 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

Tempo stimato: 45 minuti

Usa il tuo modello in un'applicazione Streamlit

Segui questo video per realizzare un'applicazione web in grado di fare una previsione del rischio di ictus in base ai dati inseriti dall'utente.

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.

  1. Fai delle ricerche sul set di dati per imparare le sue caratteristiche e i suoi obiettivi. 
  2. 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.
  3. 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. 

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!

riflessione
Di che tipo di modello pensi di aver bisogno per la tua soluzione: classificazione o regressione?
Quali parti hai trovato difficili da capire?
Quali passi puoi fare ora per saperne di più e costruire la tua soluzione?
Diapositiva precedente
Prossima diapositiva

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 

Streamlit