EmpezarEmpieza gratis

Combatir el sobreajuste con dropout

Un problema común de las redes neuronales es que tienden a sobreajustarse a los datos de entrenamiento. Esto significa que la métrica de evaluación, como R\(^2\) o la accuracy, es alta para el conjunto de entrenamiento, pero baja para los conjuntos de prueba y validación, y el modelo está ajustando al ruido presente en los datos de entrenamiento.

Podemos intentar prevenir el sobreajuste usando dropout. Durante la fase de entrenamiento, esta técnica desactiva aleatoriamente algunas neuronas, lo que ayuda a evitar que la red se ajuste al ruido de los datos de entrenamiento. keras incluye una capa Dropout que podemos usar para esto. Debemos establecer la tasa de dropout, es decir, la fracción de conexiones que se desactivan durante el entrenamiento. Se indica como un decimal entre 0 y 1 en la capa Dropout().

Para este modelo, vamos a volver a la función de pérdida de error cuadrático medio.

Este ejercicio forma parte del curso

Machine Learning para finanzas con Python

Ver curso

Instrucciones del ejercicio

  • Añade una capa de dropout (Dropout()) después de la primera capa Dense del modelo y usa un 20% (0.2) como tasa de dropout.
  • Usa el optimizador adam y la función de pérdida mse al compilar el modelo con .compile().
  • Ajusta el modelo a scaled_train_features y train_targets usando 25 épocas.

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

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()
Editar y ejecutar código