Inizia subitoInizia gratis

Contrastare l'overfitting con il dropout

Un problema comune delle reti neurali è la tendenza a fare overfitting sui dati di training. Questo significa che la metrica di valutazione, come R\(^2\) o l'accuracy, è alta sul set di training ma bassa sui set di test e validazione, e il modello finisce per adattarsi al rumore nei dati di training.

Possiamo prevenire l'overfitting usando il dropout. Questo disattiva casualmente alcuni neuroni durante la fase di training, aiutando a evitare che la rete si adatti al rumore nei dati. keras offre un livello Dropout per farlo. Dobbiamo impostare il tasso di dropout, ovvero la frazione di connessioni disattivate durante il training. Questo valore va impostato come decimale tra 0 e 1 nel livello Dropout().

Per questo modello torneremo a usare la funzione di loss mean squared error.

Questo esercizio fa parte del corso

Machine Learning per la finanza in Python

Visualizza corso

Istruzioni dell'esercizio

  • Aggiungi un livello di dropout (Dropout()) dopo il primo livello Dense del modello e usa il 20% (0,2) come tasso di dropout.
  • Usa l'ottimizzatore adam e la funzione di loss mse quando compili il modello con .compile().
  • Allena il modello su scaled_train_features e train_targets per 25 epoche.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

from keras.layers import Dropout

# Create model with dropout
model_3 = Sequential()
model_3.add(Dense(100, input_dim=scaled_train_features.shape[1], activation='relu'))
model_3.add(____)
model_3.add(Dense(20, activation='relu'))
model_3.add(Dense(1, activation='linear'))

# Fit model with mean squared error loss function
model_3.compile(optimizer=____, loss=____)
history = model_3.fit(____, ____, epochs=____)
plt.plot(history.history['loss'])
plt.title('loss:' + str(round(history.history['loss'][-1], 6)))
plt.show()
Modifica ed esegui il codice