Mulai sekarangMulai gratis

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

Lihat Kursus

Instruksi latihan

  • Tambahkan layer dropout (Dropout()) setelah Dense pertama pada model, dan gunakan laju dropout 20% (0,2).
  • Gunakan optimizer adam dan fungsi loss mse saat mengompilasi model di .compile().
  • Latih model pada scaled_train_features dan train_targets selama 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()
Edit dan Jalankan Kode