MNIST caso di studio

Alessandro Aere

22 maggio 2020

Caso di studio: classificazione di immagini

Descrizione del problema

Verrà effettuato un confronto di modelli utilizzando il dataset MNIST, una raccolta di immagini rappresentanti cifre scritte a mano.

Esempio di immagini del dataset

Esempio di immagini del dataset

Per maggiori dettagli riguardo i dati, consultare questo link.

In questo report verrà riportato solamente il codice riguardante le reti neurali, e non quello di tutti gli altri modelli statistici, in quanto non sono argomento di interesse. Nelle conclusioni potrete trovare, tuttavia, il confronto dei risultati.

Caricamento della libreria Keras

Eseguite il codice qui in seguito, se desiderate impostare in seed ed ottenere risultati riproducibili.

Caricamento dei dati

I dati verranno scaricati automaticamente con i seguenti comandi, disponibili grazie alla libreria keras.

Preparazione dei dati

Normalizzare i dati di input, riscalandoli tra 0 e 1.

Trasformare la variabile risposta in variabile categoriale (usando il one-hot encoding).

Deep Neural Network

Specificare l’architettura della rete neurale:

## Model
## Model: "sequential"
## ________________________________________________________________________________
## Layer (type)                        Output Shape                    Param #     
## ================================================================================
## dense (Dense)                       (None, 256)                     200960      
## ________________________________________________________________________________
## dense_1 (Dense)                     (None, 128)                     32896       
## ________________________________________________________________________________
## dense_2 (Dense)                     (None, 64)                      8256        
## ________________________________________________________________________________
## dense_3 (Dense)                     (None, 10)                      650         
## ================================================================================
## Total params: 242,762
## Trainable params: 242,762
## Non-trainable params: 0
## ________________________________________________________________________________

Compilare il modello:

Training della rete neurale.

In seguito viene rappresentato il grafico della funzione di perdita e dell’accuratezza in funzione del numero di epoche.

Valutazione del modello sui dati di test.

## [1] "Loss on test data: 0.0877719819545746"
## [1] "Accuracy on test data: 0.979099988937378"

Convolutional neural network

Specificare l’architettura della rete neurale:

## Model
## Model: "sequential_1"
## ________________________________________________________________________________
## Layer (type)                        Output Shape                    Param #     
## ================================================================================
## conv2d (Conv2D)                     (None, 26, 26, 32)              320         
## ________________________________________________________________________________
## max_pooling2d (MaxPooling2D)        (None, 13, 13, 32)              0           
## ________________________________________________________________________________
## conv2d_1 (Conv2D)                   (None, 11, 11, 64)              18496       
## ________________________________________________________________________________
## max_pooling2d_1 (MaxPooling2D)      (None, 5, 5, 64)                0           
## ________________________________________________________________________________
## conv2d_2 (Conv2D)                   (None, 3, 3, 64)                36928       
## ________________________________________________________________________________
## flatten (Flatten)                   (None, 576)                     0           
## ________________________________________________________________________________
## dense_4 (Dense)                     (None, 64)                      36928       
## ________________________________________________________________________________
## dense_5 (Dense)                     (None, 10)                      650         
## ================================================================================
## Total params: 93,322
## Trainable params: 93,322
## Non-trainable params: 0
## ________________________________________________________________________________

Compilare il modello:

Training della rete neurale.

In seguito viene rappresentato il grafico della funzione di perdita e dell’accuratezza in funzione del numero di epoche.

Valutazione del modello sui dati di test.

## [1] "Loss on test data: 0.0345294252038002"
## [1] "Accuracy on test data: 0.991999983787537"

Risultati

Modello Accuratezza
Convolutional neural network 99.2%
Deep neural network 97.9%
Support vector machine 97.6%
Gradient boosting 97.1%
K-nearest neighbours 96.3%
Random forest 96.1%
Albero di classificazione 87.6%