k-fold Cross-validation vs leave-one-out cross-validation

DogterBox
2 min readJan 8, 2019

--

Photo by Fredy Jacob on Unsplash

วันนี้เราจะมาลองดูกันว่าสำหรับการสร้างและทดสอบ 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 จะถูกนำมาใช้งานจริงมากกว่า

--

--

No responses yet