ยินดีต้อนรับสู่โลกของฐานข้อมูลเชิงสัมพันธ์ (Relational Databases)!
ในการเดินทางสู่การเป็นนักคณิตศาสตร์ประกันภัย คุณอาจคุ้นเคยกับการจัดการข้อมูลในสเปรดชีตเดี่ยวๆ ที่สะอาดและเป็นระเบียบ แต่ในโลกของการวิเคราะห์เชิงทำนาย (Predictive Analytics) ข้อมูลจริงมักไม่ได้เป็นระเบียบขนาดนั้น! ข้อมูลส่วนใหญ่มักจะกระจัดกระจายอยู่ในตารางต่างๆ ในสิ่งที่เรียกว่า ฐานข้อมูลเชิงสัมพันธ์ (Relational Databases) ให้มองว่าบทนี้เหมือนกับการต่อจิ๊กซอว์: คุณมีชิ้นส่วนมากมาย (ตาราง) และงานของคุณคือการเชื่อมต่อพวกมันเข้าด้วยกันอย่างถูกต้องเพื่อให้เห็นภาพรวมทั้งหมด
เมื่อจบเนื้อหาชุดนี้ คุณจะเข้าใจโครงสร้างของฐานข้อมูล และที่สำคัญกว่านั้นคือรู้วิธีการนำข้อมูลจากแหล่งต่างๆ มารวมกันโดยไม่พลาดข้อผิดพลาดพื้นฐาน ถ้าหัวข้อนี้ดู "เทคนิคจ๋า" ในตอนแรก ไม่ต้องกังวลนะ เราจะค่อยๆ ย่อยมันด้วยการเปรียบเทียบที่เข้าใจง่ายกัน!
1. ฐานข้อมูลเชิงสัมพันธ์ คืออะไร?
ฐานข้อมูลเชิงสัมพันธ์ (Relational Database) คือการรวบรวมรายการข้อมูลที่มีความสัมพันธ์ที่กำหนดไว้ล่วงหน้าระหว่างกัน โดยข้อมูลเหล่านี้จะถูกจัดอยู่ในรูปแบบของตารางที่มีแถวและคอลัมน์
การเปรียบเทียบกับสเปรดชีต: ลองนึกถึงไฟล์ Excel หนึ่งไฟล์ "แท็บ" แต่ละแท็บในไฟล์นั้นเปรียบเสมือนตารางในฐานข้อมูล แท็บหนึ่งอาจเป็นรายการชื่อลูกค้า ส่วนอีกแท็บหนึ่งเป็นรายการเคลมประกัน ทั้งสองแท็บแยกจากกันแต่ "สัมพันธ์" กันเพราะทั้งคู่พูดถึงลูกค้าคนเดียวกัน
องค์ประกอบหลักของตาราง
1. แถว (Records): แต่ละแถวแสดงถึงข้อมูลชุดหนึ่งที่เฉพาะเจาะจง (เช่น ผู้ถือกรมธรรม์หนึ่งคน)
2. คอลัมน์ (Fields/Attributes): แต่ละคอลัมน์แสดงถึงข้อมูลเฉพาะด้าน (เช่น วันเดือนปีเกิด หรือจำนวนเบี้ยประกัน)
ทบทวนสั้นๆ: ในฐานข้อมูล เราเรียกโครงสร้างของตารางเหล่านี้ว่า สคีมา (Schema) ซึ่งเปรียบเสมือนพิมพ์เขียวที่บอกเราว่าข้อมูลถูกจัดระเบียบไว้อย่างไร
2. "กาว" ที่ยึดตารางเข้าด้วยกัน: คีย์ (Keys)
เราจะรู้ได้อย่างไรว่าข้อมูลเคลมไหนเป็นของลูกค้าคนไหน? เราใช้สิ่งที่เรียกว่า คีย์ (Keys) ซึ่งเป็นแนวคิดที่สำคัญที่สุดในการรวมข้อมูล
คีย์หลัก (Primary Keys)
คีย์หลัก (Primary Key) คือตัวระบุที่ไม่ซ้ำกันสำหรับทุกบันทึกในตาราง โดยจะต้องไม่เป็นค่าว่าง (null) และไม่มีสองแถวใดที่มีค่าคีย์หลักซ้ำกัน
ตัวอย่าง: เลขบัตรประชาชน หรือรหัสกรมธรรม์ที่ไม่ซ้ำกัน
คีย์นอก (Foreign Keys)
คีย์นอก (Foreign Key) คือคอลัมน์ในตารางหนึ่งที่ชี้ไปยังคีย์หลักในอีกตารางหนึ่ง สิ่งนี้เองที่สร้างความเชื่อมโยงระหว่างตารางทั้งสอง
ตัวอย่างในโลกความเป็นจริง:
- ตาราง A (ลูกค้า) มี รหัสลูกค้า (CustomerID) เป็น คีย์หลัก
- ตาราง B (กรมธรรม์) ก็มีคอลัมน์ รหัสลูกค้า (CustomerID) เช่นกัน ในตาราง B คอลัมน์นี้จะเป็น คีย์นอก เพราะมันอ้างอิงกลับไปที่ตาราง A
รู้หรือไม่? การใช้คีย์ช่วยรักษา ความถูกต้องเชิงอ้างอิง (Referential Integrity) ซึ่งเป็นภาษาทางการที่หมายถึง "การตรวจสอบให้แน่ใจว่าการเชื่อมโยงระหว่างตารางยังคงถูกต้องอยู่เสมอ"
3. การรวมข้อมูล: ศิลปะของการทำ "Join"
เมื่อเราต้องการรวมข้อมูลจากสองตารางเพื่อใช้ในโมเดลการทำนาย เราจะทำการ Join ซึ่งสำหรับการสอบ Exam ATPA คุณต้องรู้จักหลักๆ 4 ประเภท:
Inner Join
Inner Join จะเก็บเฉพาะแถวที่มีข้อมูลตรงกันใน ทั้งสอง ตารางเท่านั้น ถ้าลูกค้าไม่มีกรมธรรม์ หรือกรมธรรม์ไม่มีชื่อลูกค้า ข้อมูลนั้นก็จะถูกตัดออกไป
Left Join (เพื่อนสนิทของนักคณิตศาสตร์ประกันภัย)
Left Join จะเก็บข้อมูล ทั้งหมด จากตารางฝั่งซ้าย และเพิ่มข้อมูลที่ตรงกันจากตารางฝั่งขวาเข้ามา ถ้าฝั่งขวาไม่มีข้อมูลที่ตรงกัน คุณจะเห็นค่าเป็น NA หรือ Null
ทำไมถึงใช้บ่อย: หากคุณมีรายการผู้ถือกรมธรรม์ทั้งหมดและต้องการดูว่าใครเคยแจ้งเคลมบ้าง คุณควรใช้ Left Join เพราะคุณต้องการเก็บรายชื่อผู้ถือกรมธรรม์ทุกคนไว้ในงานวิจัย แม้ว่าพวกเขาจะไม่ได้แจ้งเคลมก็ตาม!
Right Join
เป็นตรงกันข้ามกับ Left Join คือการเก็บทุกแถวจากตารางฝั่งขวาแล้วนำข้อมูลฝั่งซ้ายมาจับคู่ (หมายเหตุ: ผู้ใช้งานส่วนใหญ่มักจะสลับตำแหน่งตารางแล้วใช้ Left Join แทนเพื่อให้ง่ายกว่า)
Full Outer Join
Full Outer Join จะเก็บ ทุกอย่าง จากทั้งสองตาราง หากไม่ตรงกัน ก็จะปล่อยช่องว่างไว้นั่นเอง เป็นแนวทาง "เน้นความปลอดภัยไว้ก่อน" เพื่อไม่ให้ข้อมูลสูญหาย แต่อาจทำให้ชุดข้อมูลดูรกและยุ่งเหยิงได้
เทคนิคช่วยจำ: "Left คือ List"
ใช้ Left Join เมื่อคุณมี List (รายการ) หลักของกลุ่มตัวอย่าง (เช่น รายชื่อกรมธรรม์) ที่คุณไม่ต้องการให้ข้อมูลส่วนใดหายไป แม้ว่าอีกตารางจะไม่มีข้อมูลสำหรับพวกเขาก็ตาม
4. กับดักในการรวมข้อมูลที่ควรระวัง
การรวมข้อมูลเป็นจุดที่โมเดลการทำนายมักเกิดความผิดพลาด ระวัง "กับดัก" เหล่านี้ให้ดี:
1. ข้อมูลซ้ำซ้อนและความสัมพันธ์แบบ "One-to-Many"
หากคุณ Join ตาราง "ลูกค้า" เข้ากับตาราง "การชำระเงินรายเดือน" ลูกค้าหนึ่งคนจะไปตรงกับรายการชำระเงินหลายรายการ ส่งผลให้ชุดข้อมูลของคุณ "บวม" ขึ้นและสร้างหลายแถวสำหรับลูกค้าคนเดิม ซึ่งอาจทำให้โมเดลของคุณมีความเอนเอียง (Bias) หากคุณไม่ได้ตั้งใจให้เป็นแบบนั้น!
2. ความละเอียดของข้อมูลไม่ตรงกัน (Grain Mismatch)
Grain หมายถึงสิ่งที่หนึ่งแถวเป็นตัวแทนข้อมูล หากตาราง A อยู่ในระดับ "กรมธรรม์" (หนึ่งแถวต่อหนึ่งกรมธรรม์) แต่ตาราง B อยู่ในระดับ "รัฐ" (หนึ่งแถวต่อหนึ่งรัฐ) คุณต้องระวังให้มาก เพราะคุณกำลังรวมข้อมูล ระดับบุคคล เข้ากับข้อมูล ระดับภาพรวม
3. ผลคูณคาร์ทีเซียน (Cartesian Products - หายนะของการ Join)
ถ้าคุณพยายาม Join สองตารางแต่ลืมระบุว่าจะใช้ คีย์ ไหน คอมพิวเตอร์จะพยายามจับคู่ ทุกแถว ในตาราง A กับ ทุกแถว ในตาราง B หากทั้งสองตารางมีอย่างละ 1,000 แถว คุณจะได้ข้อมูลขยะออกมาถึง 1,000,000 แถว!
หัวใจสำคัญ: ตรวจสอบจำนวนแถวก่อนและหลังการรวมข้อมูลเสมอ หากจำนวนแถวเพิ่มขึ้นอย่างผิดปกติ แสดงว่าคุณอาจกำลังเจอปัญหาความสัมพันธ์แบบ "หนึ่งต่อหลาย" (One-to-Many) หรือมีคีย์ซ้ำ
5. การทำความสะอาดข้อมูลระหว่างการรวม
ข้อมูลมักไม่พร้อมใช้งานทันทีหลังจากการรวม บ่อยครั้งที่คุณต้องทำขั้นตอนเหล่านี้:
1. จัดการค่าที่หายไป (Missing Values): หลังทำ Left Join มักจะมีค่าที่ขาดหายไป (NAs) คุณต้องตัดสินใจว่าจะเติมด้วยศูนย์ ค่าเฉลี่ย หรือตัดข้อมูลส่วนนั้นทิ้งไป
2. เปลี่ยนชื่อคอลัมน์: ถ้าทั้งสองตารางมีคอลัมน์ชื่อ "Date" เหมือนกัน ซอฟต์แวร์อาจเปลี่ยนชื่อเป็น "Date.x" และ "Date.y" ให้รีบเปลี่ยนชื่อกลับเพื่อป้องกันความสับสน!
3. ตรวจสอบประเภทข้อมูล: คุณไม่สามารถ Join "รหัสกรมธรรม์" ที่เก็บเป็นข้อความ (String) เข้ากับ "รหัสกรมธรรม์" ที่เก็บเป็นตัวเลข (Integer) ได้ ตรวจสอบให้มั่นใจว่าประเภทข้อมูลตรงกันก่อนเสมอ
เช็คลิสต์สรุปเพื่อเตรียมสอบ
ก่อนไปต่อ ลองเช็คดูว่าคุณตอบคำถามเหล่านี้ได้หรือไม่:
- คีย์หลัก (Primary Key) และคีย์นอก (Foreign Key) แตกต่างกันอย่างไร?
- เมื่อไหร่ควรใช้ Inner Join เทียบกับ Left Join?
- จะเกิดอะไรขึ้นกับข้อมูลหากฉันมีคีย์ซ้ำในระหว่างการรวม?
- "ระดับความละเอียดของข้อมูล (Grain)" ส่งผลต่อวิธีรวมข้อมูลจากแหล่งต่างๆ อย่างไร?
ไม่ต้องกังวลถ้าดูเหมือนว่ามีสิ่งที่ต้องจัดการเยอะแยะไปหมด เมื่อคุณได้ฝึกฝนกับโปรเจกต์ตัวอย่างใน ATPA การใช้ Join เหล่านี้จะกลายเป็นเรื่องธรรมชาติสำหรับคุณเอง คุณกำลังสร้างรากฐานที่ยอดเยี่ยมสำหรับงานด้านวิทยาศาสตร์ข้อมูลนะ!