Modello di classificazione mediante reti neurali artificiali (ANN)

Pubblicato: 2020-12-01

Nella terminologia dell'apprendimento automatico, la classificazione si riferisce a un problema di modellazione predittiva in cui i dati di input sono classificati come una delle classi etichettate predefinite. Ad esempio, la previsione di Sì o No, Vero o Falso rientra nella categoria della classificazione binaria poiché il numero di output è limitato a due etichette.

Allo stesso modo, l'output con più classi come la classificazione di diversi gruppi di età è chiamato problemi di classificazione multiclasse. I problemi di classificazione sono uno dei tipi di problemi di ML più comunemente utilizzati o definiti che possono essere utilizzati in vari casi d'uso. Esistono vari modelli di Machine Learning che possono essere utilizzati per problemi di classificazione.

Dalle tecniche di bagging alle tecniche di potenziamento, sebbene ML sia più che in grado di gestire casi d'uso di classificazione, le reti neurali entrano in scena quando abbiamo un'elevata quantità di classi di output e un'elevata quantità di dati per supportare le prestazioni del modello. Andando avanti vedremo come possiamo implementare un modello di classificazione utilizzando le reti neurali su Keras (Python).

Impara il corso di intelligenza artificiale dalle migliori università del mondo. Guadagna master, Executive PGP o programmi di certificazione avanzati per accelerare la tua carriera.

Sommario

Reti neurali

Le reti neurali sono vagamente rappresentative dell'apprendimento del cervello umano. Una rete neurale artificiale è costituita da neuroni che a loro volta sono responsabili della creazione di strati. Questi neuroni sono anche conosciuti come parametri sintonizzati.

L'output di ogni livello viene trasferito al livello successivo. Ci sono diverse funzioni di attivazione non lineare per ogni livello, che aiuta nel processo di apprendimento e nell'output di ogni livello. Lo strato di output è anche noto come neuroni terminali.

Fonte: Wikipedia

I pesi associati ai neuroni e responsabili delle previsioni complessive vengono aggiornati ad ogni epoca. Il tasso di apprendimento è ottimizzato utilizzando vari ottimizzatori. Ciascuna rete neurale è dotata di una funzione di costo che viene ridotta al minimo man mano che l'apprendimento continua. Vengono quindi utilizzati i pesi migliori sui quali la funzione di costo sta dando i risultati migliori.

Leggi: Tutorial sul rilevamento di oggetti TensorFlow per principianti

Problema di classificazione

Per questo articolo, useremo Keras per costruire la rete neurale. Keras può essere importato direttamente in Python usando i seguenti comandi.

importa flusso tensoriale come tf

da tensorflow import keras

da keras.models import Sequential

da keras.layers import Dense

Dataset e variabile di destinazione

Utilizzeremo il set di dati sul diabete che avrà le seguenti caratteristiche:

Variabili di ingresso (X):

  • Gravidanza: Numero di volte in gravidanza
  • Glucosio: concentrazione di glucosio plasmatico a 2 ore in un test di tolleranza al glucosio orale
  • Pressione sanguigna: pressione sanguigna diastolica (mm Hg)
  • SkinThickness: spessore della piega cutanea del tricipite (mm)
  • Insulina: insulina sierica 2 ore (mu U/ml)
  • BMI: Indice di massa corporea (peso in kg/(altezza in m)^2)
  • DiabetesPedigreeFunction: funzione del pedigree del diabete
  • Età: Età (anni)

Variabili di uscita (y):

Risultato: variabile di classe (0 o 1) [il paziente ha il diabete o no]

# carica il set di dati

df= loadtxt('pima-indians-diabetes.csv', delimitatore=',')

# Dividi i dati in X (input) e Y (output)

X = set di dati[:,0:8]

y = set di dati[:,8]

Definisci il modello Keras

Possiamo iniziare a costruire la rete neurale usando modelli sequenziali. Questo approccio dall'alto verso il basso aiuta a costruire un'architettura di rete neurale e a giocare con la forma e gli strati. Il primo livello avrà il numero di funzioni che possono essere corrette usando input_dim. Lo imposteremo a 8 in questa condizione.

La creazione di reti neurali non è un processo molto semplice. Ci sono molte prove ed errori che si verificano prima che venga costruito un buon modello. Costruiremo una struttura di rete completamente connessa utilizzando la classe Dense in keras. Il neurone conta come primo argomento da fornire allo strato denso.

La funzione di attivazione può essere impostata utilizzando l'argomento di attivazione. In questo caso utilizzeremo l'unità lineare rettificata come funzione di attivazione. Ci sono altre opzioni come Sigmoid o TanH, ma RELU è un'opzione molto generalizzata e migliore.

# definire il modello keras

modello = sequenziale()

model.add(Dense(12, input_dim=8, activation='relu'))

model.add(Dense(8, activation='relu'))

model.add(Dense(1, activation='sigmoid'))

Compila il modello Keras

La compilazione del modello è il passaggio successivo alla definizione del modello. Tensorflow viene utilizzato per la compilazione del modello. La compilazione è il processo in cui vengono impostati i parametri per l'addestramento e le previsioni del modello. CPU/GPU o memorie distribuite possono essere utilizzate in background.

Dobbiamo specificare una funzione di perdita che viene utilizzata per valutare i pesi per i diversi livelli. L'ottimizzatore regola il tasso di apprendimento e passa attraverso vari set di pesi. In questo caso useremo Binary Cross Entropy come funzione di perdita. Nel caso dell'ottimizzatore, utilizzeremo ADAM che è un efficiente algoritmo di discesa del gradiente stocastico.

È molto comunemente usato per l'accordatura. Infine, poiché si tratta di un problema di classificazione, raccoglieremo e riporteremo l'accuratezza della classificazione, definita tramite l'argomento delle metriche. Useremo la precisione in questo caso.

# compila il modello keras

model.compile(loss='binary_crossentropy', ottimizzatore='adam', metriche=['accuratezza'])

Adattamento e valutazione del modello

L'adattamento del modello è essenzialmente noto come allenamento del modello. Dopo aver compilato il modello, il modello è pronto per esaminare in modo efficiente i dati e addestrarsi. La funzione fit() di Keras può essere utilizzata per il processo di addestramento del modello. I due parametri principali utilizzati prima dell'addestramento del modello sono:

  1. Epoche: un passaggio attraverso l'intero set di dati.
  2. Dimensione lotto: i pesi vengono aggiornati a ogni dimensione del lotto. Le epoche sono costituite da batch di dati equamente distribuiti.

# adatta il modello keras al set di dati

model.fit(X, y, epochs=150, batch_size=10)

In questo processo viene utilizzata una GPU o una CPU. L'addestramento può essere un processo molto lungo a seconda delle epoche, della dimensione del batch e, soprattutto, della dimensione dei dati.

Possiamo anche valutare il modello sul set di dati di addestramento usando la funzione di valutazione(). I dati possono essere suddivisi in set di addestramento e test e i test X e Y possono essere utilizzati per la valutazione del modello.

Per ogni coppia di input e output, questo produrrà una previsione e raccoglierà i punteggi, inclusa la perdita media e tutte le misurazioni che abbiamo installato, come la precisione.

Un elenco di due valori verrà restituito dalla funzione valuta(). Il primo sarà la perdita del modello sul set di dati e il secondo sarà l'accuratezza del modello sul set di dati. Siamo interessati solo all'accuratezza del rapporto, quindi ignoreremo l'importanza della perdita.

# valutare il modello keras

_, accuratezza = model.evaluate(Xtest, ytest)

print('Precisione: %.2f' % (precisione*100))

Leggi anche: Introduzione al modello di rete neurale

Conclusione

Abbiamo creato e valutato una rete neurale basata sulla classificazione. Sebbene i dati utilizzati in questo caso fossero piccoli, le reti neurali sono per lo più adatte per grandi set di dati numerici.

Scopri il programma di certificazione avanzato di upGrad in Machine Learning e NLP. Questo corso è stato creato tenendo a mente vari tipi di studenti interessati all'apprendimento automatico, offrendo tutoraggio 1-1 e molto altro.

Come possono essere utilizzate le reti neurali per la classificazione?

La classificazione riguarda la categorizzazione degli oggetti in gruppi. Un tipo di classificazione è dove vengono previste più classi. Nelle reti neurali, le unità neurali sono organizzate in strati. Nel primo livello, l'input viene elaborato e viene prodotto un output. Questo output viene quindi inviato attraverso i livelli rimanenti per produrre l'output finale. Lo stesso input viene elaborato attraverso il livello per produrre output diversi. Questo può essere rappresentato con un perceptron multistrato. Il tipo di rete neurale utilizzata per la classificazione dipende dal set di dati, ma le reti neurali sono state utilizzate per problemi di classificazione.

Perché le reti neurali artificiali sono utili per la classificazione?

Per rispondere a questa domanda, dobbiamo comprendere il principio di base delle reti neurali e il problema che le reti neurali sono progettate per risolvere. Come suggerisce il nome, le reti neurali sono un modello biologicamente ispirato del cervello umano. L'idea di base è che vogliamo modellare un neurone come una funzione matematica. Ogni neurone riceve input da altri neuroni e calcola un output. Quindi colleghiamo questi neuroni in un modo che imita la rete neurale nel cervello. L'obiettivo è quello di apprendere una rete in grado di raccogliere alcuni dati e produrre un output appropriato.

Quando dovremmo usare le reti neurali artificiali?

Le reti neurali artificiali vengono utilizzate in situazioni in cui si tenta di duplicare le prestazioni degli organismi viventi o di rilevare schemi nei dati. Le diagnosi mediche, il riconoscimento del parlato, la visualizzazione dei dati e la previsione delle cifre scritte a mano sono tutti buoni casi d'uso per una RNA. Le reti neurali artificiali vengono utilizzate quando è necessario comprendere relazioni complesse tra input e output. Ad esempio, potrebbe esserci molto rumore nelle variabili e potrebbe essere difficile capire le relazioni tra queste variabili. Pertanto, l'utilizzo di reti neurali artificiali è una pratica comune per conservare le conoscenze e i dati.