Cross-validation ด้วย sklearn
ดังที่ได้อธิบายไว้ในบทที่ 2 การ overfit ชุดข้อมูลเป็นปัญหาที่พบบ่อยในการวิเคราะห์ข้อมูล ปัญหานี้เกิดขึ้นเมื่อโมเดลเรียนรู้ข้อมูลใกล้ชิดเกินไป จนให้ผลลัพธ์ที่ดีมากบนชุดข้อมูลที่ใช้ฝึก แต่ไม่สามารถนำไปใช้กับข้อมูลใหม่ได้
แม้ว่าเทคนิคการแบ่งข้อมูลเป็น train/test ที่เรียนรู้ในบทที่ 2 จะช่วยป้องกันไม่ให้โมเดล overfit ชุดข้อมูลฝึก แต่การปรับ hyperparameter อาจทำให้เกิดการ overfit บนชุดข้อมูลทดสอบได้ เนื่องจากเป็นการปรับโมเดลให้ได้ผลการทำนายที่ดีที่สุดบนชุดข้อมูลทดสอบชุดนั้นโดยเฉพาะ จึงแนะนำให้ตรวจสอบโมเดลบนชุดข้อมูลทดสอบที่หลากหลาย ซึ่ง K-fold cross-validation ช่วยให้ทำได้:
- แบ่งชุดข้อมูลออกเป็นชุดฝึกและชุดทดสอบ
- ฝึกโมเดล ทำการทำนาย และคำนวณคะแนน (สามารถเลือกได้ว่าจะใช้ accuracy, precision, recall หรือเมตริกอื่น)
- ทำซ้ำกระบวนการนี้ทั้งหมด k ครั้ง
- แสดงผลค่าเฉลี่ยของคะแนนทั้ง 10 รอบ
ในแบบฝึกหัดนี้ จะได้ใช้ Cross Validation กับชุดข้อมูลของเรา และประเมินผลด้วยฟังก์ชัน cross_val_score
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
HR Analytics: การพยากรณ์การลาออกของพนักงานด้วย Python
คำแนะนำการฝึกหัด
- Import ฟังก์ชัน
cross_val_score()สำหรับ cross-validation จากโมดูลsklearn.model_selection - แสดงคะแนน cross-validation ของโมเดล โดยกำหนด 10 fold ผ่าน hyperparameter
cv
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the function for implementing cross validation
from sklearn.model_selection import ____
# Use that function to print the cross validation score for 10 folds
print(____(model,features,target,____=10))