Cross Validation with K-fold

ปรกติชุดข้อมูลจะถูกแบ่งเป็นสองส่วน คือส่วนที่ใช้สำหรับเทรนโมเดล และส่วนที่เทสโมเดล เช่นแบ่งข้อมูลเป็นส่วนเทรนโมเดลสัก 60% และสำหรับเทสโมเดลอีก 40% เมื่อเราสร้างโมเดลขึ้นมาเราก็จะปรับแต่งพารามิเตอร์ของโมเดล เพื่อให้ได้คะแนนความแม่นยำและประสิทธิภาพของโมเดลให้ได้มากที่สุด โดยใช้ข้อมูลในส่วนที่เป็นเทสในการปรับแต่งพารามิเตอร์ตรงนี้ ดังนั้นโมเดลที่เราเทรนขึ้นมาค่อนข้างจะมีความแม่นยำและประสิทธิภาพสูงเฉพาะชุดข้อมูลที่นำมาเทส เราเรียกกรณีนี้ว่า Overfitting แต่เมื่อเจอชุดข้อมูลที่ไม่เคยเห็นมาก่อนอาจจะทำงานด้อยประสิทธิภาพและความแม่นยำต่ำได้ การแก้ปัญหา Overfitting ที่มักเห็นได้บ่อยๆคือการทำ K-fold Cross Validation โดยเราจะนำส่วนข้อมูลที่เป็นเทสคงไว้ และจะสนใจเฉพาะส่วนข้อมูลที่ใช้เทรนมาแบ่งเป็นสองส่วน คือส่วนที่ใช้เทรน(Training Folds) และอีกส่วนคือส่วนที่ใช้ในการทำ Validate (Test folds) โดยทำแบบนี้เรื่อยๆจำนวน K รอบโดยมีการผลัดเปลี่ยนกันระหว่างส่วนที่ใช้เทรนนิ่ง(K-1 ชุด)และส่วนที่ใช้ในการ Validation(1 ชุด) ในแต่ละรอบให้วัดค่าความแม่นยำและประสิทธิภาพออกมา(หรือใช้ค่า error ก็ได้) เมื่อทำครบ K รอบให้หาค่าเฉลี่ยความแม่นยำและประสิทธิภาพ(หรือใช้ค่า error ก็ได้)ของทุกรอบเป็นคะแนนแทนการวัดแบบเดิม จะสังเกตได้ว่ากรณีนี้ ทุกๆส่วนของชุดข้อมูลจะถูกทำการเทส ทำให้การปรับจูนพารามิเตอร์ของโมเดลไม่โอนเอนไปที่ชุดข้อมูลเทสใดเทสหนึ่ง ปัญหา Overfitting ก็จะหมดไป โค้ดด้านล่างจะเป็นการทำ K-fold Cross Validation ด้วย python โดยใช้…

K Means Clustering with Python

K Means เป็นอัลกอริทึม Machine Learning แบบ Unsupervised คือไม่ต้องมีการเทรนจากมนุษย์ก่อน ปรกติ Supervised Machine Learning จะต้องกำหนด Input และ Output เพื่อใช้เทรนโมเดล แต่ K Means นั้นกำหนดเพียง Input อย่างเดียวก็พอ ความสามารถของ K Means นั้นคือการแบ่งกลุ่มข้อมูลหรือที่เรียกว่า Clustering เพื่อแบ่งข้อมูลออกเป็น K กลุ่มตามชื่อของมัน โดนแต่ละกลุ่มจะมีจุดศูนย์กลางข้อมูลเรียก Centroid โดย Centroid นี้เกิดจากค่าเฉลี่ย(Means) ตำแหน่งของข้อมูลทุกตัวในกลุ่มข้อมูล โพสนี้จะเป็นการรีวิวแลปโน้ตและใช้โค้ด python ตัวเดียวกับในเว็บ pythonprogramming.net ในการอธิบาย สาเหตุที่เลือกเว็บนี้เพราะมีการสอนเขียนโปรแกรม python ที่เป็นขั้นเป็นตอนเข้าใจง่ายและไม่ใช้ library ในการเทรนโมเดล เหมือนที่เว็บอื่นทำ ซึ่งจะทำให้เข้าใจในตัว K Means ได้มากกว่า โดยอัลกอริทึม K Means มีขั้นตอนดังนี้ กำหนดก่อนว่าจะแบ่งกี่กลุ่มข้อมูล…