Mengatasi overfitting dengan dropout
Masalah umum pada neural network adalah kecenderungan untuk overfit terhadap data pelatihan. Artinya, metrik penilaian seperti R\(^2\) atau akurasi tinggi pada himpunan pelatihan, tetapi rendah pada himpunan pengujian dan validasi, dan model justru menyesuaikan diri dengan derau pada data pelatihan.
Kita dapat mencegah overfitting dengan menggunakan dropout. Teknik ini secara acak menonaktifkan sebagian neuron selama fase pelatihan, yang membantu mencegah jaringan menyesuaikan derau pada data pelatihan. keras memiliki layer Dropout yang dapat kita gunakan untuk ini. Kita perlu menetapkan laju dropout, atau fraksi koneksi yang dinonaktifkan selama pelatihan. Nilai ini ditetapkan sebagai desimal antara 0 dan 1 pada layer Dropout().
Untuk model ini, kita akan kembali menggunakan fungsi loss mean squared error.
Latihan ini merupakan bagian dari kursus
Machine Learning untuk Keuangan dengan Python
Instruksi latihan
- Tambahkan layer dropout (
Dropout()) setelah Dense pertama pada model, dan gunakan laju dropout 20% (0,2). - Gunakan optimizer
adamdan fungsi lossmsesaat mengompilasi model di.compile(). - Latih model pada
scaled_train_featuresdantrain_targetsselama 25 epoch.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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()