การรวมโมเดล (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:])