Comece agoraComece grátis

Combatendo overfitting com dropout

Um problema comum em redes neurais é que elas tendem a fazer overfitting nos dados de treino. Isso significa que a métrica de avaliação, como R\(^2\) ou acurácia, é alta no conjunto de treino, mas baixa nos conjuntos de teste e validação, e o modelo acaba ajustando o ruído presente nos dados de treino.

Podemos trabalhar para evitar overfitting usando dropout. Essa técnica desativa aleatoriamente alguns neurônios durante o treinamento, o que ajuda a impedir que a rede se ajuste ao ruído nos dados de treino. O keras tem uma camada Dropout que podemos usar para isso. Precisamos definir a taxa de dropout, ou seja, a fração de conexões desativadas durante o treinamento. Ela é definida como um decimal entre 0 e 1 na camada Dropout().

Vamos voltar a usar a função de perda mean squared error para este modelo.

Este exercicio faz parte do curso

Machine Learning para Finanças em Python

Ver curso

Instruções do exercicio

  • Adicione uma camada de dropout (Dropout()) após a primeira camada Dense no modelo e use 20% (0.2) como taxa de dropout.
  • Use o otimizador adam e a função de perda mse ao compilar o modelo com .compile().
  • Treine o modelo com scaled_train_features e train_targets usando 25 épocas.

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

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 e Executar Código