Dropout से overfitting पर काबू
न्यूरल नेटवर्क्स की एक आम समस्या यह है कि वे training डेटा पर overfit कर लेते हैं। इसका मतलब है कि R\(^2\) या accuracy जैसे स्कोरिंग मेट्रिक्स training सेट पर उच्च होते हैं, लेकिन testing और validation सेट्स पर कम, और मॉडल training डेटा के शोर पर फिट हो जाता है।
हम dropout का उपयोग करके overfitting को रोकने की दिशा में काम कर सकते हैं। यह training के दौरान कुछ neurons को रैंडम तरीके से हटा देता है, जिससे नेटवर्क training डेटा के शोर पर फिट होने से बचता है। keras में एक Dropout लेयर है जिसका हम इसके लिए उपयोग कर सकते हैं। हमें dropout rate सेट करना होता है, यानी training समय के दौरान हटाए जाने वाले connections का fraction। इसे Dropout() लेयर में 0 और 1 के बीच के decimal के रूप में सेट किया जाता है।
हम इस मॉडल के लिए mean squared error loss function पर वापस जा रहे हैं।
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Finance के लिए Machine Learning
अभ्यास निर्देश
- मॉडल में पहली Dense लेयर के बाद एक dropout लेयर (
Dropout()) जोड़ें, और dropout rate के रूप में 20% (0.2) का उपयोग करें. - मॉडल को
.compile()करते समयadamoptimizer औरmseloss function का उपयोग करें. - मॉडल को
scaled_train_featuresऔरtrain_targetsपर 25 epochs के साथ fit करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
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()