IID (Independent and Identically Distributed) คือ อะไร
IID คือ เป็นสมมติฐานที่ว่าข้อมูลทุกตัวในชุดข้อมูลนั้น ถูกสร้างขึ้นมาอย่างอิสระและมีการแจกแจงแบบเดียวกัน สมมติฐานนี้มีความสำคัญเพราะส่งผลต่อการเรียนรู้โดยตรงของอัลกอริทึมหรือโมเดล ที่นำไปสู่ประสิทธิภาพของการใช้งานโมเดล หากข้อมูลที่เรานำมาใช้ฝึกหรือเทรนโมเดลไม่ได้มีคุณสมบัติสอดคล้องกับสมมติฐานนี้ ความแม่นยำของโมเดลก็อาจลดลงได้
ถ้าเรามาลองเปรียบเทียบการเก็บข้อมูลลูกค้าเพื่อนำไปใช้ในการเทรนโมเดลพยากรณ์ว่าลูกค้ามีแนวโน้มผิดนัดชำระหนี้หรือไม่

จากข้อมูลทั้ง 2 ชุดข้างต้นส่งผลต่อประสิทธิภาพของโมเดลที่แตกต่างกัน ข้อมูลชุดที่ 1 ได้เรียนรู้พฤติกรรมของลูกค้าหลากหลายรูปแบบ โดยที่การกระจายตัวของกลุ่มข้อมูลที่ถูกแบ่งไปใช้สำหรับการฝึกฝนและการทดสอบโมเดลมีลักษณะพฤติกรรมที่เหมือนกัน ทำให้ได้โมเดลมีความน่าเชื่อถือและสามารถใช้งานได้จริง ผลการทดสอบที่ได้เป็นตัวแทนที่ดีของประสิทธิภาพจริงของโมเดล
ในทางตรงกันข้ามข้อมูลชุดที่ 2 อาจแสดงให้เห็นถึงความแม่นยำของโมเดลแบบชุดข้อมูลฝึกฝนดี (Training Set) แต่ให้ผลความแม่นยำที่แย่เมื่อนำไปใช้กับข้อมูลชุดทดสอบ (Test Set) นั่นเพราะโมเดลถูกฝึกฝนมากับพฤติกรรมหรือสถานการณ์แวดล้อมแบบหนึ่ง แต่เมื่อนำใช้ทดสอบหรือใช้งานจริงกลับถูกนำไปใช้กับสถานการณ์อีกแบบหนึ่ง เมื่อผลลัพธ์เป็นแบบนี้เราจะรู้สึกว่าสาเหตุเป็นเพราะเราพัฒนาโมเดลมาได้ไม่ดี และสิ่งที่เรามักจะทำกันคือการย้อนกลับไปแก้ไขที่ขั้นตอนการสร้างโมเดลโดยพยายามเพิ่ม Features ต่างๆเข้าไปมากขึ้น เพราะคิดว่าคุณลักษณะที่นำไปใช้ฝึกฝนโมเดลตอนแรกไม่ดีพอหรือน้อยเกินไป หรือพยายามปรับโมเดลให้ซับซ้อนขึ้นด้วยอัลกอริทึมอย่าง Deep Learning แต่ผลที่ได้มักจะแย่กว่าเดิมนั่นคือการที่โมเดล overfit
ถ้าหากเรามีความเข้าใจพฤติกรรมข้อมูลอย่างแท้จริงจะรู้ว่าสาเหตุไม่ได้มาจากการที่เราพัฒนาโมเดลได้ไม่ดี แต่เป็นเพราะโมเดลที่สร้างมาถูกนำไปใช้กับข้อมูลที่มีพฤติกรรมหรือรูปแบบการแจกแจงที่ไม่เหมือนกัน
หากสรุปให้เห็นภาพของการที่นำชุดข้อมูลที่มีคุณสมบัติไม่สอดคล้องกับ IID มาใช้จะเห็นได้ตามรูปด้านล่าง คือ ข้อมูลที่มีพฤติกรรมหรือการกระจายตัวแบบหนึ่ง หรือ แบบที่สองก็จะมีโมเดลที่เหมาะสมสำหรับพฤติกรรมนั้นๆเป็นของตัวเอง (จากในรูปคือมีเส้น decision boundary line สีม่วง ที่เหมาะสมกับพฤติกรรมหรือการกระจายตัวของข้อมูลแตละแบบ)
แต่ถ้าหากเรานำข้อมูลที่มีรูปแบบพฤติกรรมหรือลักษณะการกระจายตัวแบบที่ 1 มารวมกับแบบที่ 2 ซึ่งมีรูปแบบการกระจายตัวที่ไม่เหมือนกัน โมเดลก็จะพยายามจับพฤติกรรมของทั้งแบบที่1และ2 รวมกัน ที่เมื่อนำไปใช้งานจริงจะเห็นผลลัพธ์ที่แย่ (จากในรูปคือการรวมข้อมูลแบบที่ 1 และ 2 มาฝึกฝนจนได้โมเดลเส้นสีฟ้า เมื่อเรานำเส้นแบ่งสีฟ้าไปใช้กับพฤติกรรมแบบที่1 หรือ 2 ก็จะให้ข้อผิดพลาดที่สูงกว่าปกติ เมื่อเทียบกับเส้นสีม่วงที่เหมาะสมกับพฤติกรรมของข้อมูลนั้นจริงๆ) เพราะเหตุการณ์จริงที่เราจะเจอจะเป็นข้อมูลที่มีลักษณะพฤติกรรมการกระจายตัวแบบที่ 1 หรือ 2 เท่านั้นไม่ใช่ 1 และ 2 รวมกัน ดังนั้นเมื่อเกิดเหตุการณ์จริง โมเดลสีฟ้านี้ไม่สามารถใช้งานได้ดีในสถานการณ์ใดๆเลย


ขั้นตอนถัดไปคือหากเรามั่นใจว่าเราเลือกข้อมูลมาอย่างดีแล้ว และเราได้เทรนหรือสร้างโมเดลตาม 6 ขั้นตอนข้างต้นที่กล่าวไปก่อนหน้า โดยได้ผลลัพธ์ที่มีความแม่นยำประมาณนึงแต่เราอยากพัฒนาให้ประสิทธิภาพของโมเดลตัวนี้ดีขึ้นอีก เราจะทำได้อย่างไร

