Overfitting และ Ensembling

Machine Learning สำหรับการเงินด้วย Python

Nathan George

Data Science Professor

overfitting

Machine Learning สำหรับการเงินด้วย Python

ทำให้โมเดลเรียบง่ายขึ้น

โครงข่ายที่จำกัด

Machine Learning สำหรับการเงินด้วย Python

ตัวเลือกสำหรับโครงข่ายประสาทเทียม

วิธีแก้ปัญหา Overfitting:

  • ลดจำนวน node
  • ใช้ L1/L2 regularization
  • Dropout
  • สถาปัตยกรรม Autoencoder
  • Early stopping
  • เพิ่ม noise ให้ข้อมูล
  • Max norm constraints
  • Ensembling
Machine Learning สำหรับการเงินด้วย Python

Dropout

dropout

Machine Learning สำหรับการเงินด้วย Python

Dropout ใน Keras

from keras.layers import Dense, Dropout

model = Sequential() model.add(Dense(500, input_dim=scaled_train_features.shape[1], activation='relu')) model.add(Dropout(0.5)) model.add(Dense(100, activation='relu')) model.add(Dense(1, activation='linear'))
Machine Learning สำหรับการเงินด้วย Python

เปรียบเทียบบน Test Set

ค่า R$^2$ บน AMD โดยไม่ใช้ Dropout:

  • train: 0.91
  • test: -0.72

เมื่อใช้ Dropout:

  • train: 0.46
  • test: -0.22
Machine Learning สำหรับการเงินด้วย Python

Ensembling

random forest

Machine Learning สำหรับการเงินด้วย Python

การนำ Ensembling ไปใช้

# make predictions from 2 neural net models
test_pred1 = model_1.predict(scaled_test_features)
test_pred2 = model_2.predict(scaled_test_features)

# horizontally stack predictions and take the average across rows test_preds = np.mean(np.hstack((test_pred1, test_pred2)), axis=1)
Machine Learning สำหรับการเงินด้วย Python

เปรียบเทียบ Ensemble

คะแนน R$^2$ ของ model 1 บน test set:

  • -0.179

model 2:

  • -0.148

ensemble (ค่าเฉลี่ยของการพยากรณ์):

  • -0.146
Machine Learning สำหรับการเงินด้วย Python

มาฝึกกันเถอะ!

Machine Learning สำหรับการเงินด้วย Python

Preparing Video For Download...