เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การรวมโมเดล (Ensembling)

วิธีหนึ่งในการปรับปรุงผลการพยากรณ์จากโมเดล machine learning คือการใช้ ensembling แนวทางพื้นฐานคือการเฉลี่ยผลการพยากรณ์จากหลายโมเดลเข้าด้วยกัน ส่วนแนวทางที่ซับซ้อนกว่าคือการนำผลการพยากรณ์ของโมเดลเหล่านั้นไปป้อนให้กับโมเดลอีกตัว เพื่อทำการพยากรณ์ขั้นสุดท้าย ทั้งสองแนวทางมักช่วยยกระดับประสิทธิภาพโดยรวม (ตราบใดที่โมเดลแต่ละตัวมีคุณภาพดีพอ) และอย่าลืมว่า random forest ก็ใช้หลักการ ensembling ของ decision tree จำนวนมากเช่นกัน

สำหรับการ ensemble ผลการพยากรณ์จาก neural network เราจะสร้างผลการพยากรณ์จากโมเดลทั้ง 3 ที่สร้างไว้ ได้แก่ โมเดลพื้นฐาน โมเดลที่ใช้ custom loss function และโมเดลที่ใช้ dropout จากนั้นจะรวมผลการพยากรณ์ด้วยฟังก์ชัน .hstack() ของ numpy แล้วคำนวณค่าเฉลี่ยในแต่ละแถวด้วย np.mean(predictions, axis=1)

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

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

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้างผลการพยากรณ์บน scaled_train_features และ scaled_test_features สำหรับโมเดลทั้ง 3 ที่ฝึกไว้ (model_1, model_2, model_3) โดยใช้เมธอด .predict()
  • นำผลการพยากรณ์มาเรียงต่อกันในแนวนอนด้วย np.hstack() เพื่อสร้างเมทริกซ์ จากนั้นคำนวณค่าเฉลี่ยในแต่ละแถวเพื่อให้ได้ผลการพยากรณ์เฉลี่ยสำหรับชุดข้อมูล train และ test

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Make predictions from the 3 neural net models
train_pred1 = model_1.predict(____)
test_pred1 = model_1.predict(____)

train_pred2 = ____
test_pred2 = ____

train_pred3 = model_3.predict(scaled_train_features)
test_pred3 = model_3.predict(scaled_test_features)

# Horizontally stack predictions and take the average across rows
train_preds = np.mean(np.hstack((train_pred1, train_pred2, train_pred3)), axis=1)
test_preds = np.mean(____, ____)
print(test_preds[-5:])
แก้ไขและรันโค้ด