Risolvere i problemi di regressione con TensorFlow: un viaggio di apprendimento approfondito

May 08 2023
Scopri come costruire e mettere a punto una rete neurale artificiale utilizzando TensorFlow Introduzione L'analisi di regressione nell'apprendimento automatico è una tecnica utilizzata per prevedere il valore di una variabile dipendente basata su una o più variabili indipendenti. È una tecnica di apprendimento supervisionato che rientra nell'ambito della modellazione predittiva.

Scopri come creare e mettere a punto una rete neurale artificiale utilizzando TensorFlow

Immagine per autore: Dall E

introduzione

L'analisi di regressione nell'apprendimento automatico è una tecnica utilizzata per prevedere il valore di una variabile dipendente basata su una o più variabili indipendenti. È una tecnica di apprendimento supervisionato che rientra nell'ambito della modellazione predittiva.

Sei alla ricerca di una guida per principianti per apprendere i dettagli dell'analisi di regressione e non vedi l'ora di capire quei complessi concetti matematici? Non temere, amico mio! Ho scritto un post sul blog che scompone i concetti in modo semplice e di facile comprensione. Quindi metti giù quella tazza di caffè, prendi la tua calcolatrice e preparati a tuffarti a capofitto nello stravagante mondo dell'analisi di regressione! Non vedo l'ora di vederti lì

I fondamenti della regressione lineare semplice

Allo stesso modo, nel deep learning, i modelli di regressione possono essere costruiti utilizzando reti neurali, che sono modelli computazionali che imitano il modo in cui funziona il cervello umano. Questi modelli sono costituiti da più strati di neuroni interconnessi noti anche come percettroni e insieme noti come MLP (Multi-Layer Perceptron) che possono imparare a estrarre caratteristiche utili dai dati di input e fare previsioni accurate.

Dividerò questo breve post del blog nelle seguenti sezioni:

  1. Preelaborazione dei dati.
  2. Architettura del modello
  3. Formazione e valutazione
  4. Conclusione.

Nell'ambito dell'apprendimento automatico, la fase di preelaborazione dei dati gioca un ruolo fondamentale per il successo di un modello. Questa fase prevede la preparazione dei dati di input per l'addestramento e il test del modello. Questa fase include diversi passaggi come la pulizia, l'esplorazione, la normalizzazione, la selezione delle funzionalità, la codifica, l'aumento, ecc.

  1. Pulizia dei dati: rimozione di dati incompleti, irrilevanti o imprecisi dal set di dati. Serve per garantire che i dati di input siano di alta qualità e non contengano valori anomali o errori che potrebbero influire sulle prestazioni della rete neurale.
  2. Esplorazione dei dati: analisi del set di dati per ottenere informazioni sulla sua distribuzione e sulle relazioni tra le funzionalità. Questo passaggio consente di identificare eventuali modelli o tendenze nei dati che potrebbero essere utilizzati per migliorare le prestazioni della rete neurale.
  3. Normalizzazione dei dati: ridimensionamento dei dati in modo che tutte le funzionalità abbiano scale simili. Questo è un passo importante in quanto garantisce che la rete neurale non dia un peso eccessivo alle caratteristiche che hanno valori maggiori.
  4. Selezione delle funzionalità: selezione delle funzionalità più importanti che verranno utilizzate per addestrare la rete neurale.
  5. Codifica dei dati: conversione di variabili categoriche in variabili numeriche poiché le macchine accettano solo dati numerici come input.
  6. Aumento dei dati: generazione di dati di addestramento aggiuntivi per aumentare la diversità del set di dati.

Qui salteremo il processo di esplorazione e pulizia dei dati per concentrarci sul nostro obiettivo principale. Invece, caricheremo rapidamente un set di dati e lo prepareremo per il modello con pochi semplici passaggi. Sebbene l'esplorazione e la pulizia dei dati siano argomenti importanti, approfondirli qui ci porterebbe fuori strada dal nostro obiettivo principale. Quindi, restiamo concentrati e iniziamo ⚡⚡

Per la generazione del nostro modello di regressione, prenderemo in considerazione il set di dati dell'assicurazione sanitaria statunitense , spesso utilizzato per prevedere i costi medici in base alle caratteristiche dell'individuo e alla polizza assicurativa.

Immagine per autore: preelaborazione dei dati

Il codice carica le librerie necessarie tra cui pandas, MinMaxScaler make_column_transformere OneHotEncoder. Identifica quindi le colonne numeriche e categoriche nel set di dati e crea un trasformatore di colonna ( ct) per applicare MinMaxScaler alle funzionalità numeriche e OneHotEncoder alle funzionalità categoriche.

Immagine per autore: trasformatore di colonna

Infine, il trasformatore viene utilizzato per trasformare i dati del treno e del test e i dati trasformati risultanti vengono archiviati in x_train_transformede x_test_transformed. Questi set di dati trasformati sono ora pronti per essere utilizzati come input per la rete neurale, che è la fase successiva del processo.

Architettura del modello

L'architettura del modello si riferisce alla struttura della rete neurale che mappa le caratteristiche di input alle caratteristiche di output o alle variabili di destinazione. È costituito da più strati di neuroni che eseguono operazioni matematiche sui dati di input.

Un tipico modello di architettura di regressione avrà i seguenti parametri:

Immagine per autore: Tipica architettura MLP di regressione
Immagine per autore: strati nella rete neurale
  1. Livello di input: questo livello contiene i dati di input, che potrebbero essere sotto forma di un tensore o di una matrice.
  2. Livelli nascosti: si tratta di livelli che eseguono una trasformazione non lineare dei dati di input. Il numero di strati nascosti e il numero di neuroni in ogni strato dipenderanno dalla complessità del problema e dalla quantità di dati disponibili.
  3. Livello di output: questo livello produce la previsione finale del modello. In un modello di regressione, il livello di output avrà in genere un singolo neurone che emette un valore continuo.

Qui creeremo una semplice rete neurale basata sul nostro problema. Il codice seguente imposta il seme casuale, definisce l'architettura del modello con tre livelli, compila il modello con una funzione di perdita dell'errore assoluto medio e l'ottimizzatore di Adam e addestra il modello sui dati di addestramento per 100 epoche. La cronologia del processo di addestramento è memorizzata nella historyvariabile, che può essere utilizzata per valutare le prestazioni del modello.

Immagine per autore: rete neurale semplice

L'utilizzo model.summary() riassumerà l'architettura del modello in questo modo

Le forme di input e output sono fondamentali nell'architettura del modello di una rete neurale perché determinano la forma delle matrici di pesi e distorsioni che la rete apprenderà durante l'addestramento.

Le forme impostate in modo errato possono causare errori durante l'addestramento e la previsione e gli errori di forma sono il tipo più comune di errore riscontrato.

Stai cercando di rafforzare le tue abilità fondamentali? Potrebbe valere la pena leggerlo

Elementi essenziali del deep learning

Formazione & Valutazione

Ora che abbiamo configurato l'architettura del nostro modello, è il momento di addestrare il modello e fare previsioni per ottenere informazioni dettagliate. Alleniamoci

Immagine per autore: adattare il modello e visualizzare il modello
Immagine per autore: registri di perdite ed errori

Durante la creazione del modello, abbiamo impostato le metriche e possono essere calcolate utilizzando le funzioni integrate di TensorFlow. Garantire la corretta forma dei tensori è fondamentale, soprattutto durante il confronto.

Tensori non corrispondenti, in particolare forme di input e output, possono portare a molti errori. Sebbene non sia sempre necessario, è importante rimanere vigili e verificare la presenza di discrepanze di forma.

# Check the tensor shapes
y_test.shape, y_predicted.shape

>>> ((335,), (335, 1))

# Shape after squeeze()
y_predicted.squeeze().shape

>>> (335,)

# Calcuate the MAE
mae = tf.metrics.mean_absolute_error(y_true=y_test, 
                                     y_pred=y_predicted.squeeze())

# Calculate the MSE
mse = tf.metrics.mean_squared_error(y_true=y_test,
                                    y_pred=y_predicted.squeeze())

mae, mse

>>> (<tf.Tensor: shape=(), dtype=float32, numpy=3687.7112>,
     <tf.Tensor: shape=(), dtype=float32, numpy=50863628.0>)

Ecco il codice completo per questo

Insieme a questo, ci sono diversi metodi per migliorare una rete neurale, come aumentare il numero di livelli per renderla più profonda, aumentare il numero di unità nascoste per renderla più ampia e regolare il tasso di apprendimento. Questi parametri, che possono essere regolati dall'uomo, sono noti come iperparametri e il processo di ricerca degli iperparametri più adatti è noto come ottimizzazione degli iperparametri. Questa pratica è ampiamente utilizzata nel deep learning per ottimizzare le prestazioni delle reti neurali.
Lascerò a te sperimentare approcci diversi e sviluppare la tua comprensione.

Dove andare da qui?

Per ottenere una comprensione più completa, consiglierei di creare un set di dati personalizzato e sperimentare con gli iperparametri. Un approccio consiste nel creare un elenco di numeri e applicarvi una funzione di generazione personalizzata, introdurre distorsioni e utilizzare i valori risultanti come variabile di destinazione. Quindi, inserisci questo set di dati nella rete neurale e perfezionalo per migliorare la precisione.

Ho creato un repository completo per TensorFlow che continuo ad aggiornare a intervalli regolari con esperimenti ed esempi. Sentiti libero di collaborare in questo spazio

Conclusione

Costruire un potente modello di regressione utilizzando TensorFlow non è un compito facile, ma con gli strumenti e le tecniche giusti è possibile. In questo blog, abbiamo esplorato come preelaborare i dati, definire un'architettura di rete neurale profonda, addestrare il modello e valutarne le prestazioni. Con queste competenze, sarai in grado di costruire modelli di regressione per un'ampia gamma di problemi e set di dati. Ricorda, la pratica rende perfetti, quindi continua a sperimentare e perfezionare i tuoi modelli finché non raggiungi il livello desiderato di accuratezza e prestazioni.

E questo ci porta alla fine di questo post sul blog . Congratulazioni

Spero di essere riuscito a svelare alcune parole d'ordine sull'architettura di un modello di regressione utilizzando MLP (Multi-Layer Perceptron). Se hai domande o mi sono perso qualcosa qui sentiti libero di licenziarli nella sezione dei commenti.

Cercherò di far emergere più concetti di apprendimento automatico / scienza dei dati e cercherò di scomporre termini e concetti dal suono fantasioso in termini più semplici.

Spero che questo articolo ti sia piaciuto! Puoi seguirmi Afaque Umer per altri articoli simili.

Grazie per aver letto Continua ad imparare Continua a condividere Rimani fantastico