ยินดีต้อนรับสู่โลกของ Ensemble Learning!
ในการศึกษาที่ผ่านมา เราได้เรียนรู้เกี่ยวกับ Decision Tree กันไปแล้ว แม้ว่าพวกมันจะเข้าใจได้ง่าย แต่ก็มีจุดอ่อนสำคัญนั่นคือความเป็น "เปราะบาง" (fragile) หากคุณเปลี่ยนข้อมูลเพียงเล็กน้อย คุณอาจได้โครงสร้างต้นไม้ที่เปลี่ยนไปโดยสิ้นเชิง ในทางเทคนิคเราเรียกปัญหานี้ว่าการมี ความแปรปรวนสูง (high variance)
ในบทนี้ เราจะมาเรียนรู้วิธีแก้ไขจุดอ่อนนี้ด้วยเทคนิค "Ensemble Methods" แทนที่จะพึ่งพาต้นไม้เพียงต้นเดียว เราจะสร้าง "ป่า" ขึ้นมาทั้งผืน! เราจะเน้นไปที่เทคนิคหลัก 2 อย่างคือ Bagging และ Random Forests ซึ่งถือเป็นเครื่องมือที่ทรงพลังที่สุดชุดหนึ่งในคลังอาวุธด้านการสร้างแบบจำลองคาดการณ์ของนักคณิตศาสตร์ประกันภัย
1. รากฐานสำคัญ: Bagging (Bootstrap Aggregation)
ไม่ต้องกังวลถ้าชื่อเรียกมันดูแปลกหู! Bagging เป็นคำย่อมาจาก Bootstrap Aggregating ตรรกะของมันเรียบง่ายมาก นั่นคือ "ภูมิปัญญาจากคนหมู่มาก ย่อมดีกว่าความคิดเห็นของผู้เชี่ยวชาญเพียงคนเดียว"
Bootstrap คืออะไร?
ลองจินตนาการว่าคุณมีถุงใส่ลูกแก้ว 100 ลูก คุณต้องการสร้างถุงใบใหม่ที่มีลูกแก้ว 100 ลูกเท่าเดิม วิธีการคือคุณหยิบลูกแก้วออกมาหนึ่งลูก จดบันทึกสี แล้ว ใส่กลับเข้าไปในถุง ทำซ้ำแบบนี้ 100 ครั้ง เนื่องจากการที่คุณใส่ลูกแก้วกลับคืน ทำให้ลูกแก้วบางลูกอาจถูกหยิบออกมาได้สองหรือสามครั้ง ในขณะที่บางลูกอาจไม่ถูกหยิบออกมาเลย วิธีการนี้เรียกว่า การสุ่มตัวอย่างแบบใส่คืน (sampling with replacement)
ขั้นตอนการทำงานของ Bagging:
1. Bootstrap: เรานำชุดข้อมูลหลักมาสร้างเป็นกลุ่มตัวอย่าง Bootstrap หลายๆ ชุด (โดยทั่วไปคือหลักร้อย)
2. Train: เราสร้าง Decision Tree ที่สมบูรณ์และซับซ้อนบนกลุ่มตัวอย่าง แต่ละชุด เนื่องจากกลุ่มตัวอย่างแต่ละชุดมีความแตกต่างกันเล็กน้อย ต้นไม้แต่ละต้นจึงมีลักษณะที่ต่างกันออกไปด้วย
3. Aggregate: ในการทำนายขั้นสุดท้าย เราจะนำผลลัพธ์จากต้นไม้ทั้งหมดมารวมกัน:
• สำหรับ Regression (การทำนายค่าตัวเลข): ให้หาค่าเฉลี่ยจากการทำนายของต้นไม้ทุกต้น
• สำหรับ Classification (การทำนายกลุ่ม/หมวดหมู่): ให้ใช้ "การลงคะแนนเสียงข้างมาก" (majority vote) หมวดหมู่ไหนที่ต้นไม้ส่วนใหญ่เลือก นั่นคือคำตอบสุดท้ายของเรา
ทำไมเราต้องทำแบบนี้?
เป้าหมายหลักของ Bagging คือการ ลดความแปรปรวน (reduce variance) การนำต้นไม้หลายๆ ต้นมาหาค่าเฉลี่ยจะช่วยหักล้าง "สัญญาณรบกวน" (noise) และข้อผิดพลาดของต้นไม้แต่ละต้นออกไป ส่งผลให้การคาดการณ์มีความเสถียรและแม่นยำขึ้นมาก เปรียบเสมือนการขอให้คน 100 คนช่วยกันเดาน้ำหนักของช้าง แม้การเดาของแต่ละคนอาจจะผิดเพี้ยนไปบ้าง แต่ค่าเฉลี่ยที่ได้มักจะใกล้เคียงความจริงมาก!
ทบทวนสั้นๆ: Bagging = Bootstrap (สุ่มตัวอย่างแบบใส่คืน) + Aggregating (การรวมผลลัพธ์โดยหาค่าเฉลี่ย) วิธีนี้ช่วยลดความแปรปรวนโดยไม่ทำให้เกิดความเอนเอียง (bias) เพิ่มขึ้น
2. การประมาณค่าความคลาดเคลื่อนด้วย Out-of-Bag (OOB)
รู้หรือไม่? เมื่อเราใช้ Bagging เราไม่จำเป็นต้องแบ่ง "Validation Set" แยกออกมาเพื่อทดสอบประสิทธิภาพของโมเดลเสมอไป เราสามารถใช้ข้อมูลที่เรียกว่า Out-of-Bag (OOB) ได้
ในขณะที่เราสร้างกลุ่มตัวอย่างแบบ Bootstrap โดยเฉลี่ยแล้วจะมีข้อมูลประมาณ หนึ่งในสาม (1/3) ที่ถูกทิ้งไว้ข้างนอก ข้อมูลส่วนที่เหลือนี้แหละเรียกว่าข้อมูล OOB เนื่องจากต้นไม้ในระหว่างการฝึกไม่ได้เห็นข้อมูลส่วนนี้เลย เราจึงสามารถใช้มันเป็น "ชุดทดสอบขนาดจิ๋ว" ได้
เราจะทำนายค่าของข้อมูลแต่ละแถวโดยใช้เฉพาะต้นไม้ที่ ไม่ได้ ใช้แถวนั้นในการฝึก วิธีนี้ทำให้เราได้ค่า OOB Error ซึ่งเป็นการประมาณการที่น่าเชื่อถือมากว่าโมเดลจะมีประสิทธิภาพอย่างไรเมื่อเจอข้อมูลชุดใหม่จริงๆ
3. ก้าวไปอีกขั้น: Random Forests
Random Forests คือการพัฒนาต่อยอดที่ชาญฉลาดจาก Bagging เพื่อให้เข้าใจว่าทำไมเราถึงต้องมีมัน เราต้องมองไปที่ปัญหาแฝงใน Bagging ที่เรียกว่า Tree Correlation
ปัญหา: กับดักของ "ตัวแปรทำนายที่โดดเด่น"
ใน Bagging ปกติ หากมีตัวแปรทำนายที่ทรงพลังมากตัวหนึ่ง (เช่น "อายุ" ในแบบจำลองประกันชีวิต) ต้นไม้เกือบทุกต้นจะเลือกใช้ตัวแปรนี้ในการแบ่งกิ่งก้าน (split) ครั้งแรกเสมอ หมายความว่าต้นไม้ทุกต้นจะมีลักษณะคล้ายกันมาก และถ้าต้นไม้มีความคล้ายกัน การหาค่าเฉลี่ยก็จะไม่ได้ช่วยอะไรมากนัก เหมือนกับการถามความเห็นคน 100 คน แต่ทุกคนอ่านข่าวจากหนังสือพิมพ์ฉบับเดียวกันก่อนตอบ
ทางแก้: การสร้างความสุ่มในตัวแปรทำนาย (Feature Randomness)
Random Forests บังคับให้ต้นไม้แต่ละต้นมีความแตกต่างกัน (เพื่อ "ยกเลิกความสัมพันธ์" หรือ de-correlate) โดยในขณะที่สร้างต้นไม้ใน Random Forest:
1. ในแต่ละจุดของการแบ่งกิ่ง โมเดลจะ ได้รับอนุญาต ให้เลือกจาก กลุ่มย่อยของตัวแปรทำนายที่สุ่มมาเท่านั้น
2. หากเรามีตัวแปรทำนายทั้งหมด \( p \) ตัว ปกติแล้วเราจะอนุญาตให้โมเดลมองเห็นตัวแปรเพียง \( m \) ตัวในแต่ละจุดของการแบ่ง โดยที่ \( m < p \)
กฎทั่วไปสำหรับการเลือก \( m \):
• สำหรับ Classification: \( m \approx \sqrt{p} \)
• สำหรับ Regression: \( m \approx p/3 \)
การบังคับให้โมเดลละเลยตัวแปรที่โดดเด่นที่สุดเป็นบางครั้ง ทำให้โมเดลถูกบังคับให้ไปหาแพทเทิร์นในตัวแปรที่ "อ่อนกว่า" ซึ่งในตอนแรกอาจถูกมองข้ามไป สิ่งนี้ทำให้ "ป่า" ของเรามีความหลากหลายและทรงพลังขึ้นมาก
คำอุปมา: ลองนึกภาพการประกวดความสามารถ ใน Bagging กรรมการทุกคนดูการแสดงเดียวกัน แต่ใน Random Forest กรรมการคนหนึ่งถูกสั่งว่า "คุณห้ามดูเสียงร้อง ให้ดูแค่การเต้น" และอีกคนถูกสั่งว่า "คุณห้ามดูการเต้น ให้ดูแค่เครื่องแต่งกาย" การบังคับให้พวกเขาโฟกัสในสิ่งที่ต่างกัน ทำให้คะแนนรวมสุดท้ายมีความรอบด้านและสมดุลมากขึ้น
4. การวัดความสำคัญของตัวแปร (Variable Importance Measures)
ข้อเสียประการหนึ่งของ Bagging และ Random Forests คือความเป็น "กล่องดำ" (Black Box) มันยากที่จะนำต้นไม้ 500 ต้นมาดูแล้วอธิบายว่าโมเดลทำงานอย่างไรแน่ แต่เรายังสามารถระบุได้ว่าตัวแปรใดมีความสำคัญที่สุด
1. Mean Decrease in Gini Index (สำหรับ Classification): วัดว่าค่าความ "บริสุทธิ์" ของโหนดเพิ่มขึ้นเท่าใดเมื่อใช้ตัวแปรหนึ่งในการแบ่งข้อมูล ค่าที่สูงหมายความว่าตัวแปรนั้นมีประโยชน์มากในการจำแนกข้อมูลลงกลุ่ม
2. Mean Decrease in RSS (สำหรับ Regression): วัดว่าผลรวมกำลังสองของความคลาดเคลื่อน (RSS) ลดลงเท่าใดเมื่อใช้ตัวแปรหนึ่งในการแบ่ง ยิ่งลดมาก แสดงว่าตัวแปรนั้นสำคัญมากในการคาดการณ์ผลลัพธ์ที่เป็นตัวเลข
สรุปใจความสำคัญ: แม้เราจะมองหา "ตรรกะ" ของ Random Forest ได้ยากกว่าต้นไม้ต้นเดียว แต่แผนภูมิความสำคัญของตัวแปร (Variable Importance plots) จะบอกเราได้ว่าฟีเจอร์ไหนคือพระเอกที่ทำงานหนักที่สุด
5. สรุปและข้อควรระวัง
ข้อผิดพลาดที่พบบ่อย: นักเรียนมักกังวลว่าการใส่จำนวนต้นไม้เข้าไปใน Random Forest มากเกินไปจะทำให้เกิด Overfitting แต่ในความเป็นจริงแล้ว Random Forests มักจะ ไม่เกิด Overfitting เพียงเพราะคุณเพิ่มจำนวนต้นไม้ การเพิ่มต้นไม้จะช่วยแค่ให้ความแปรปรวนนิ่งขึ้นเท่านั้น ข้อเสียหลักของการใส่ "ต้นไม้มากเกินไป" คือคอมพิวเตอร์จะใช้เวลาประมวลผลนานขึ้นเท่านั้นเอง!
รายการสรุปสั้นๆ (Checklist):
• Bagging ช่วยลดความแปรปรวนโดยการหาค่าเฉลี่ยจากต้นไม้หลายๆ ต้นที่สร้างจาก Bootstrap
• Random Forests พัฒนาจาก Bagging โดยอนุญาตให้เลือกใช้เพียงกลุ่มย่อยของตัวแปรทำนายในแต่ละจุดแบ่ง (นี่คือพารามิเตอร์ mtry ใน R)
• mtry คือไฮเปอร์พารามิเตอร์ที่สำคัญที่สุดในการปรับจูน ถ้า \( m = p \) ตัว Random Forest ก็จะเป็นเพียงแค่ Bagging ปกตินั่นเอง
• OOB Error ช่วยให้เราตรวจสอบความถูกต้องของโมเดลได้โดยไม่ต้องแบ่ง Test Set แยกออกมา
• Variable Importance ช่วยให้เราอธิบายได้ว่าฟีเจอร์ใดมีความสำคัญที่สุดในโมเดลที่ซับซ้อนเหล่านี้
พยายามต่อไปนะ! คุณทำได้ดีมากแล้ว โมเดลที่อิงจากต้นไม้ (Tree-based models) ถือเป็นหัวใจสำคัญของ Exam PA และการเชี่ยวชาญ Random Forests คือก้าวที่ยิ่งใหญ่สู่การสอบผ่าน!