ไปเที่ยวสันเขื่อนกัน ม๋ายยยย !!!! 🙈
วันนี้พามารู้จักกับคำว่า Data Leakage
ใน Machine Learning กัน มันคืออะไรกันน้าา
ทำไมถึงสำคัญกับ Machine Learning
🌊 ก่อนจะไปรู้จักกับคำว่า Data Leakage
ก่อนอื่นเลยขอพาเพื่อนๆไปรู้จักกับการวัด
ประสิทธิภาพของ Model ก่อน
โดยปกติเวลาวัดประสิทธิภาพของ Model
เราจะทำการทดสอบว่า Model เราเก่งหรือไม่
คล้ายๆกับที่ อจ. สอนหนังสือนักเรียน
ถ้าอจ. สอนนักเรียน
แล้วออกสอบตรงกับที่สอน 100%
แล้วปรากฎว่ามีนักเรียนสอบได้คะแนนเต็ม
เราจะพิสูจน์ได้อย่างไร ว่านักเรียนคนนั้นเก่งจริงๆ
ไม่ได้เก่งเพราะจำคำตอบที่เรียนมาตอบ !? 🤔
เราจึงมีแนวคิดว่า เราจะสอน Model เท่าที่จำเป็นพอ
และเก็บข้อมูลบางส่วนไว้
โดยส่วนนี้จะปิดไม่ให้ Model เห็น
หลังจากที่ Model ทำการเรียนข้อมูล
จากสิ่งที่เราส่งให้เห็นแล้ว
เราถึงนำ Model ดังกล่าวมาทดสอบ
กับข้อมูลที่ไม่เห็น
ดังนั้นถ้า Model เราเก่งจริง
ต้องตอบคำถามที่ไม่เคยเรียนได้ด้วย
นั่นจึงเป็นแนวคิดของการทดสอบ Model
และในปัจจุบันวิธีที่นิยมทั่วไปก็คือ
X-Validation หรือ Cross-Validation
(ยังไม่ขอลงรายละเอียดนะ)
ทีนี้ลองคิดดูนะ โดยทั่วไป
คะแนนที่ทดสอบ Model หรือประสิทธิภาพ Model
จากการตอบคำถามจาก Data ที่เคยเรียน เคยเห็นมา
กับคะแนนของ Model ที่มาจากการตอบคำถาม
จาก Data ที่ไม่เคยเห็น
เพื่อนๆคิดว่า !?
คะแนนของ Model ชุดไหนจะมากกว่ากัน
โดยทฤษฎีแล้ว มันก็ต้อง
เป็นคะแนนจาก Data ที่เคยเห็นมาก่อน
ซึ่งอาจจจะแตกต่างกันมากน้อย
ทั้งนี้ก็ขึ้นกับการสอน Model
โดยทั่วไปเราจะเรียก Data ที่สอน Model ว่า
Training Data
และ Data ที่ใช้ Validate ว่า
Validation Data
คราวนี้ถ้าเกิดทดสอบ Model กับ Validation Data
แล้วผลการทดสอบดันเกิดดีโคตรๆขึ้นมา
ดีแบบใกล้เคียงสูสีกับ Training Data เลย
อยากให้ลองนึกไว้ก่อนเลยว่า !!!
“มีคนแอบลอกข้อสอบครับครู !” 🙈
ใช่แล้ว เจ้า Model ของเราดันแอบเห็น
Validation Data 🤫
หรือมีบางส่วนของ Data
ที่เราพยายามเก็บไว้ทดสอบ
ดันหลุดไปยัง Training Data
ทำให้ Model ของเราเลยดันจำข้อสอบได้
แล้วพอที่จะจำมาตอบตอนทดสอบ Validation
และสิ่งนี้เอง ที่เราเรียกว่า Data Leakage !!
😓 Data Leakage !! ส่งผลกระทบอะไรบ้าง
- จินตนาการว่าคุณกำลังแข่งขันทำ Model
ในงานแข่งสุดเจ๋ง
แล้วคุณดันได้อันดับ 1 มาตลอดงาน
ก่อนการประกาศรางวัล
ซึ่งอันดับมาจากการวัดประสิทธิภาพ Model
จากการ Data ที่ไม่เคยเห็นแค่ส่วนเดียว
แต่พอประกาศผลจริงๆ
ดันเจอ Data อีกชุดมาทดสอบ
แล้วคุณก็ฉวดที่ 1 ไป แบบ งงๆ อิหยังวะ - ปัญหาด้าน Security ที่ใช้ Data ที่หลุดมาย้อนศร
นำมาทำ Reverse Engineer ทำให้ผู้ไม่ประสงค์ดีได้ข้อมูลไป - ปัญหาตอนสร้าง Predictive Model
ปรากฎว่าผลลัพธ์ดีโคตรๆๆเลย
แล้วคุณก็ดีใจเตรียมนำไปใช้งาน
แต่ปรากฎว่าเห้ย ยยย เกิด Data Leakage
👻 ตัวอย่าง Dataset ที่มักเกิดปัญหา Data Leakage !!
- กลุ่มของ Timeseries ถ้าไม่แบ่งดีดีนี่
กลายเป็นเอา Test มาเรียนเลยนะ - Graph data ซึ่งการ Sampling Data นั้น
เป็นเรื่องยากมากให้ได้โครงสร้างดังกล่าว
ทั้ง Train, Validation, Test โดยที่ไม่เห็นกัน - Bioinformatics เช่นสายของโปรตีน
หรือสายของ DNA, RNA ที่มีลำดับซ้ำกัน
🐣 แล้วเรามีวิธีป้องกันไหมน้าในการช่วยบรรเทาปัญหา Data Leakage !!
- ใช้วิธีวัดประสิทธิภาพ Model ด้วย X-Validation
- แยก Preprocess กันระหว่าง Training, Validation, Testing Data
- Holdout dataset หรือเก็บ dataset ที่จะทดสอบไว้เลย ไม่ต้องไปใช้ ในที่นี้เรียกว่า Testing Data
หลังจากทดลองเสร็จแล้ว ถึงนำออกมาทดสอบกับ Model อีกที - ลองเพิ่ม noise เพิ่มให้กับ Data
- ยังมีอีกหลายวิธีเลยนะเอออ
ถ้าเพื่อนๆสนใจในเรื่องของ Data Leakage แล้วละก็
แอดทิ้ง References ให้ไปอ่านเพิ่มเติมกันต่อนะครัช
References อ่าน Data Leakage เพิ่มเติม
- https://stats.stackexchange.com/questions/20010/how-can-i-help-ensure-testing-data-does-not-leak-into-training-data
- https://machinelearningmastery.com/data-leakage-machine-learning/
- https://towardsdatascience.com/data-leakage-in-machine-learning-10bdd3eec742
- http://ilpubs.stanford.edu:8090/839/1/2008-23.pdf