วันนี้เราจะมาลองดูกันว่าสำหรับการสร้างและทดสอบ machine leaning model โดยวิธี k-fold Cross-validation (k-fold CV) และ leave-one-out cross-validation (LOOCV) มีความเหมือนและต่างกันยังบ้าง
leave-one-out cross-validation
สมมุติว่าเรามีข้อมูลอยู่ 3 ตัว (3 แถว) โดยจะใช้ 2 ตัวในการสร้างและ 1 ตัวในการทดสอบ และทำแบบนี้ไปเรื่อยๆ สลับกัน train และ test จนครบทุกๆตัว
ถ้าสมมุติเรามีข้อมูลอยู่ 1,000,000 ตัว แสดงว่าในแต่ละรอบเราจะต้องใช้ข้อมูล 999,999 ตัวในการ train ละ 1 ตัวในการ test
ถึงตอนนี้แล้วเราจะเห็นข้อเสียว่า BigO มันเยอะมากๆๆ
สรุปแล้วก็คือว่าตามชื่อของมันเลย “leave-one-out เอาตัวนึงออกไป test”นั่นเอง
k-fold Cross-validation
k-fold CV ก็จะเหมือนๆกับ LOOCV เลย แต่แทนที่เราจะมองข้อมูลเป็นรายๆตัว เราก็มองมันเป็นกลุ่ม เป็นก้อน เป็นส่วนๆ…เป็น fold
แล้วทีนี้ก็จะมองว่ามันเป็นกี่ fold (k-fold) เราก็แบ่งข้อมูลออกมาเป็นจำนวนเท่าๆกัน
สมมุติว่าเรามีข้อมูลทั้งหมด 6 ตัว (6 row) ใช้ 3-fold CV จะแบ่งข้อมูลได้เป็น 6/3 = 2 ก็คือว่าได้ fold ละ 2 ตัว
โดยจะใช้ข้อมูล 2 ส่วนในการสร้างและ 1 ส่วนในการทดสอบ และทำแบบนี้ไปเรื่อยๆ สลับกัน train และ test จนครบทุกๆตัว (เหมือนๆ LOOCV เล๊ยยยย)
สรุป
- ไอเดียของ k-fold CV และ LOOCV ก็จะเหมือนๆกันเลย
- k-fold CV จะถูกนำมาใช้งานจริงมากกว่า