ยินดีต้อนรับสู่โลกแห่ง Boosting!

ในการเดินทางของเราผ่านหัวข้อ Tree-Based Models เราได้เห็นกันแล้วว่าการสร้างต้นไม้หลายๆ ต้นสามารถช่วยให้เราพยากรณ์ได้แม่นยำขึ้นอย่างไร แต่ในขณะที่ Bagging และ Random Forests จะสร้างต้นไม้หลายต้นพร้อมกัน (แบบขนาน) Boosting จะใช้วิธีที่ต่างออกไปครับ คือมันจะสร้างต้นไม้ ทีละต้นต่อกันไปเรื่อยๆ

ลองนึกภาพ Boosting เหมือนนักเรียนที่เรียนรู้จากข้อผิดพลาดของตัวเองดูครับ แทนที่จะพยายามเรียนรู้ทุกอย่างในคราวเดียว นักเรียนคนนี้จะทำข้อสอบจำลองก่อน พอเห็นว่าทำผิดตรงไหน ก็จะทุ่มเทแรงทั้งหมดไปกับการแก้ไขข้อผิดพลาดเหล่านั้น แล้วทำซ้ำไปเรื่อยๆ จนกระทั่งเชี่ยวชาญเนื้อหา ในบันทึกนี้ เราจะมาแยกย่อยกันว่าแนวทางที่ "ช้าแต่ชัวร์" แบบนี้ สร้างโมเดลพยากรณ์ที่ทรงพลังที่สุดในโลกคณิตศาสตร์ประกันภัยได้อย่างไร!

Boosting คืออะไร?

Boosting คือวิธีแบบ ensemble ที่ต้นไม้แต่ละต้นจะถูกสร้างขึ้น ตามลำดับ (sequentially) โดยต้นไม้ต้นใหม่จะถูกสร้างโดยใช้ข้อมูลจากต้นไม้ก่อนหน้า เป้าหมายคือการปรับปรุงโมเดลในจุดที่โมเดลรุ่นก่อนหน้ายังทำผลงานได้ไม่ดีนัก

รู้หรือไม่? ใน Random Forests เราต้องการให้ต้นไม้แต่ละต้นเป็นอิสระต่อกันมากที่สุด แต่ใน Boosting ต้นไม้แต่ละต้นจะ ขึ้นอยู่กับ ต้นที่สร้างมาก่อนหน้า มันเป็นการทำงานเป็นทีมที่สมาชิกแต่ละคนจะมาช่วยแก้ไขข้อผิดพลาดของคนก่อนหน้าครับ!

ปรัชญาสำคัญ: การเรียนรู้แบบช้าๆ (Slow Learning)

ในหลายเรื่องของชีวิต "ความเร็ว" อาจเป็นเรื่องดี แต่ใน Boosting ความ ช้า มักจะดีกว่าครับ การเรียนรู้แบบช้าๆ ช่วยให้โมเดลไม่ "พุ่งเกิน (overshoot)" คำตอบที่ถูกต้อง และมีโอกาสน้อยที่จะด่วนสรุปจากสัญญาณรบกวน (noise) ในข้อมูล เราเรียกสิ่งนี้ว่า Slow Learning

ทบทวนสั้นๆ: Bagging vs. Boosting
- Bagging: สร้างต้นไม้อิสระหลายๆ ต้นแล้วนำมาหาค่าเฉลี่ย เหมาะสำหรับการลด variance
- Boosting: สร้างต้นไม้ทีละต้นต่อเนื่องกัน แต่ละต้นเรียนรู้จากต้นก่อนหน้า เหมาะสำหรับการลดทั้ง bias และ variance

Boosting ทำงานอย่างไร: ทีละขั้นตอน

ถ้ารู้สึกว่าคณิตศาสตร์ดูยากในตอนแรก ไม่ต้องกังวลนะ! มาลองดูขั้นตอนแบบภาษาคนง่ายๆ ก่อนที่จะไปดูตรรกะเบื้องหลังกัน

ขั้นตอนที่ 1: เริ่มต้นด้วยค่าพื้นฐาน (Baseline)
โดยปกติเราจะเริ่มจากโมเดลที่พยากรณ์ค่า 0 หรือค่าเฉลี่ยของตัวแปรเป้าหมายสำหรับทุกข้อมูล

ขั้นตอนที่ 2: คำนวณค่าเศษเหลือ (Residuals)
Residual ก็คือค่าความผิดพลาดนั่นเอง: \( \text{Residual} = \text{Actual Value} - \text{Predicted Value} \) เราจะมาดูกันว่าตอนนี้โมเดลของเรายังพลาดตรงไหนบ้าง

ขั้นตอนที่ 3: สร้างต้นไม้ขนาดเล็กเพื่อเรียนรู้ค่าเศษเหลือ
แทนที่จะพยายามพยากรณ์ผลลัพธ์จริงๆ (เช่น "จำนวนค่าสินไหม") เราจะสร้างต้นไม้เพื่อพยากรณ์ ความผิดพลาด (residuals) แทน ต้นไม้นี้พยายามมองหารูปแบบที่ซ่อนอยู่ในความผิดพลาดของเรา

ขั้นตอนที่ 4: อัปเดตโมเดล
เราจะนำต้นไม้ที่สร้างใหม่นี้มาปรับลดขนาดลงแล้วนำไปบวกเพิ่มในโมเดลที่มีอยู่เดิม เราไม่ได้ใส่ต้นไม้เข้าไปทั้งต้น แต่ใส่เพียงแค่เสี้ยวเล็กๆ (ควบคุมโดย learning rate)

ขั้นตอนที่ 5: ทำซ้ำ
ย้อนกลับไปทำขั้นตอนที่ 2 ใหม่ ทำแบบนี้ไปเรื่อยๆ เป็นร้อยเป็นพันครั้ง!

หัวใจสำคัญ: Boosting ไม่ได้พยายามยิงธนูให้เข้าเป้าด้วยดอกเดียวที่พุ่งแรง แต่เป็นการก้าวเดินเล็กๆ นับพันก้าวไปยังใจกลางของเป้าหมาย

เสาหลักทั้งสามของ Boosting (Tuning Parameters)

เมื่อคุณทำงานใน R (มักจะใช้แพ็กเกจ gbm) สำหรับสอบ Exam PA คุณจำเป็นต้องรู้จัก "ปุ่มปรับ" 3 ปุ่มหลักที่จะเปลี่ยนประสิทธิภาพของโมเดล:

1. จำนวนต้นไม้ (\(B\))

คือจำนวนต้นไม้ทั้งหมดที่เราสร้างแบบต่อเนื่อง ไม่เหมือนกับ Random Forest ที่ยิ่งมีต้นไม้มากยิ่งดี แต่ Boosting สามารถเกิดการ overfit ได้ถ้า \(B\) มากเกินไป หากคุณสร้างต้นไม้เยอะเกินไป โมเดลจะเริ่ม "ท่องจำ" สัญญาณรบกวน (noise) ในชุดข้อมูลของคุณแทนที่จะเรียนรู้รูปแบบจริงๆ

2. ค่า Shrinkage (\(\lambda\))

หรือที่รู้จักกันในชื่อ Learning Rate เป็นตัวเลขบวกค่าน้อยๆ (เช่น 0.01 หรือ 0.001) ที่ควบคุมความเร็วในการเรียนรู้ ยิ่ง \(\lambda\) น้อย โมเดลก็จะเรียนรู้ช้าลง ซึ่งมักจะต้องใช้ \(B\) มากขึ้นเพื่อให้ได้ผลลัพธ์ที่ดี แต่มักจะนำไปสู่ประสิทธิภาพที่สูงกว่าครับ

3. ความลึกของการปฏิสัมพันธ์ (Interaction Depth หรือ \(d\))

คือจำนวนการแยกกิ่งในแต่ละต้นไม้ ทำหน้าที่ควบคุม ความซับซ้อน ของโมเดลแบบ ensemble:
- ถ้า \(d = 1\) ต้นไม้แต่ละต้นจะมีแค่การแยกเดียว (เรียกว่า stump) หมายความว่าโมเดลพิจารณาตัวแปรทีละตัวเท่านั้น (additive model)
- ถ้า \(d > 1\) โมเดลจะสามารถจับความสัมพันธ์ (interactions) ระหว่างตัวแปรต่างๆ ได้

ตัวช่วยจำ: เปรียบเทียบกับ "หม้อตุ๋นช้า" (Slow Cooker)
ลองนึกว่า Boosting เหมือนการตุ๋นอาหาร:
- \(B\) (จำนวนต้นไม้) คือ เวลาในการตุ๋น ถ้านานเกินไป อาหารจะไหม้ (overfitting)
- \(\lambda\) (Learning Rate) คือ ระดับความร้อน ไฟอ่อนใช้เวลานานขึ้นแต่อาหารจะนุ่มและเข้าเนื้อกว่า
- \(d\) (Depth) คือ จำนวนวัตถุดิบ ที่คุณใส่ลงไปปรุงพร้อมกันในครั้งเดียว

ข้อผิดพลาดที่ควรหลีกเลี่ยง

ข้อผิดพลาดที่ 1: คิดว่า Boosting และ Bagging เหมือนกัน
จำไว้นะครับ: Bagging ใช้ bootstrap sampling เพื่อสร้างต้นไม้ที่เป็นอิสระต่อกัน แต่ Boosting ใช้ ข้อมูลชุดเดิม แต่ปรับเปลี่ยนเป้าหมาย (ค่า residuals) ในทุกๆ ขั้นตอน

ข้อผิดพลาดที่ 2: ลืมทำ Cross-validation สำหรับ \(B\)
ในการสอบ Exam PA หากมีคำถามว่าควรเลือกจำนวนต้นไม้เท่าไหร่ คำตอบมักจะเป็น Cross-Validation เสมอ เพราะ Boosting มีโอกาสเกิด overfit เราจึงต้องหา "จุดที่เหมาะสมที่สุด" สำหรับ \(B\)

ข้อผิดพลาดที่ 3: ตั้ง Learning rate สูงเกินไป
ถ้า \(\lambda\) สูงเกินไป โมเดลจะเรียนรู้แบบรุนแรงเกินไป ซึ่งมักจะทำให้พลาดคำตอบที่เหมาะสมที่สุด และนำไปสู่การพยากรณ์ที่แย่เมื่อเจอข้อมูลใหม่

สรุปและประเด็นสำคัญ

1. การเรียนรู้แบบลำดับ: Boosting สร้างต้นไม้ทีละต้น โดยต้นไม้แต่ละต้นมีจุดมุ่งหมายเพื่อแก้ไขความผิดพลาดของต้นก่อนหน้า

2. ช้าแต่ชัวร์: ด้วยการใช้ Learning rate (\(\lambda\)) ที่น้อยและใช้ต้นไม้จำนวนมาก (\(B\)) ทำให้ Boosting ช่วยลด bias ของโมเดลได้อย่างช้าๆ โดยไม่ทำให้ variance เพิ่มขึ้นจนเกินไป

3. ความเสี่ยงต่อการ Overfitting: ต่างจาก Random Forest ตรงที่ Boosting สามารถ overfit ได้ถ้าจำนวนต้นไม้มากเกินไป การทำ Cross-validation จึงจำเป็นมาก!

4. ประสิทธิภาพ: ในทางปฏิบัติ โมเดล Boosting ที่ปรับจูนมาอย่างดี มักจะมีประสิทธิภาพเหนือกว่า Random Forests จนกลายเป็น "มาตรฐานทองคำ" สำหรับงานด้านการสร้างโมเดลพยากรณ์ในธุรกิจประกันภัยหลายๆ งาน

ไม่ต้องกังวลถ้ารู้สึกว่ามันซับซ้อนในตอนแรก Boosting เป็นแนวคิดที่ค่อนข้างลึกซึ้งครับ แค่จำหัวใจหลักไว้ว่า "ดูข้อผิดพลาด แก้ไขทีละนิด แล้วทำซ้ำไปเรื่อยๆ" คุณทำได้แน่นอน!