k-fold cross validation

การทำ k-fold cross validation สามารถป้องกันการเกิด overfitting ของโมเดลได้เพราะจะมีการสลับกันของข้อมูลในการทำหน้าที่เป็นทั้งตัว train และ ตัวTest เพราะฉะนั้นจะลดระดับการ bias ได้ในระดับหนึ่ง ยกตัวอย่างเช่น หากเราแบ่งข้อมูล 100 ข้อมูลแรกเป็น Train set และอีก 100 ข้อมูลหลังเป็น Test set แล้วทำการรันโปรแกรมหาโมเดลที่เหมาะสมกับข้อมูลทั้งสองชุดนี้ เราก็จะได้โมเดลที่ให้เปอร์เซ็นต์ถูกต้องอยู่ในระดับที่เราพอ สมมุติว่า 80% แต่หากเราทำการเลือกตัว Train และ ตัว Test ใหม่ โดยกำหนดว่า ข้อมูลที่อยู่ลำดับเลขคี่เป็น Train และลำดับเป็นเลขคู่เป็น Test แล้วลองใช้โมเดลอันเดิมที่มี Accuracy 80% รันดูอีกรอบ เราอาจจะเห็นว่า error เพิ่มขึ้นอย่างน่าตกใจ นั่นเป็นเพราะข้อมูลที่เปลี่ยนไปนั่นเองทำให้เกิดปัญหานี้หรือที่หลายๆเปเปอร์เขียนว่าปัญหา overfitting ลองดูรูปภาพข้างล่างประกอบอีกครั้ง

เมื่อเราดูภาพ (a) และ ( c) จะเห็นว่า hyperplane ของทั้งสองภาพจะแตกต่างกัน รูป (a) ถึงแม้จะไม่มีข้อมูลที่เกิดการจำแนกผิดอยู่แต่มีจำนวนของ support vector อยู่บนเส้น hyperplane อยู่ 4 ตัว และเมื่อนำ hyperplane ที่ได้จากรูป (a) ไปใช้กับ Test data กลับได้ผลลัพธ์ที่ไม่ดีนัก และเมื่อพิจารณา hyperplane ที่ได้ในรูป (c ) ที่เกิดการจำแนก(classify)ที่ผิดพลาดอยู่ 1 ข้อมูล แต่เมื่อนำไปใช้กับ Test data กลับทำงานได้อย่างมีประสิทธิภาพ

k-fold cross validation คือการทำเราแบ่งข้อมูลเป็น k ส่วน สมมุติว่า เราใช้ k=5 นั่นหมายความว่าเราต้องแบ่งข้อมูลออกเป็น 5 ส่วน และจะมีการทดสอบอยู่ 5 ครั้ง(Iteration) โดยในแต่ละครั้งจะมีหนึ่งส่วนของข้อมูลเป็น Test set และส่วนที่เหลือเป็น Train set ตามรูปข้างล่าง

โดยในแต่ละครั้ง(Iteration)จะมีขั้นตอนดังนี้

  1. Training โมเดลโดยใช้ Train set และ Initial parameter ของแต่ละอัลกอรึทึม
  2. คำนวณ accuracy แล้วเก็บไว้

เมื่อกระทำไปจนครบจำนวน k ครั้งแล้วก็เอาค่า accuracy ที่ได้ในแต่ละครั้งมาคำนวนหาค่าเฉลี่ย accuracy สุดท้าย

จะเห็นว่าทุกข้อมูลมีการสลับกันเป็นทั้งตัวTrain และ Test นี่ก็คือข้อดีของ k-fold cross validation นั่นเอง รอติดตามกันในบทความหน้า จะอธิบายวิธีการนำ k-fold cross validation และ grid-search algorithm มาใช้ด้วยกันนะคะ

อ้างอิง

HSU C.-W., CHANG C.-C., LIN C.-J. 2008. A practical guide to support vector classification.

https://my.oschina.net/Bettyty/blog/751627