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

สวัสดีครับ! วันนี้เราจะมาเจาะลึกเนื้อหาส่วนสำคัญในหลักสูตร CS2 Machine Learning นั่นก็คือ Regularisation นั่นเองครับ หากคุณเคยรู้สึกว่าโมเดลของคุณทำงานได้ดีเยี่ยมบนข้อมูลที่ใช้ฝึก (Training data) แต่กลับล้มเหลวไม่เป็นท่าเมื่อเจอกับข้อมูลชุดใหม่ แสดงว่าคุณกำลังเจอกับปัญหา Overfitting ครับ และ Regularisation นี่แหละที่เป็นอาวุธลับของเราในการจัดการกับปัญหานี้

ลองจินตนาการว่า Regularisation เหมือนกับ "จำกัดความเร็ว" ให้กับโมเดลของคุณครับ มันจะช่วยป้องกันไม่ให้โมเดลซับซ้อนเกินไปจนไป "ท่องจำ" สัญญาณรบกวน (Noise) ในข้อมูลของคุณ และช่วยให้โมเดลยังคงทำนายผลในโลกความเป็นจริงได้อย่างแม่นยำครับ

Overfitting คืออะไรและทำไมถึงเกิดขึ้น?

ใน โมเดลที่มีพารามิเตอร์สูง (Highly parameterised models) หรือโมเดลที่มีตัวแปรหรือฟีเจอร์เยอะๆ ตัวโมเดลจะมีความยืดหยุ่นสูงมาก มันมักจะพยายามลากเส้นผ่านทุกๆ จุดข้อมูลในชุดฝึก แม้ฟังดูเหมือนจะดี แต่จริงๆ แล้วมันเป็นปัญหาครับ

ลองเปรียบเทียบดูนะ: ลองจินตนาการว่าคุณกำลังอ่านหนังสือสอบด้วยการท่องจำคำตอบจากข้อสอบเก่าแบบเป๊ะๆ ถ้าข้อสอบจริงถามคำถามเดิมแต่เปลี่ยนตัวเลขไปนิดหน่อย คุณก็จะไปต่อไม่ถูกเพราะคุณไม่ได้เรียนรู้ ตรรกะ แต่คุณแค่ท่องจำ Noise ของข้อสอบเก่ามา นั่นแหละครับคืออาการของ Overfitting

ทบทวนสั้นๆ: ความสัมพันธ์แบบ Bias-Variance (Bias-Variance Trade-off)
- High Variance: โมเดลไวต่อการเปลี่ยนแปลงเล็กๆ น้อยๆ ในข้อมูลชุดฝึกมากเกินไป (Overfitting)
- High Bias: โมเดลเรียบง่ายเกินไปจนมองข้ามแนวโน้มที่สำคัญของข้อมูล (Underfitting)
- Regularisation ช่วยให้เราหาจุดที่เหมาะสมที่สุด (Sweet Spot) โดยการยอมเพิ่ม Bias ขึ้นเล็กน้อย เพื่อลด Variance ลงอย่างมหาศาลครับ

แนวคิดหลัก: การบวกค่าปรับ (Penalty)

ในการทำ Regression ทั่วไป (เช่น OLS) เราพยายามลดค่า Residual Sum of Squares (RSS):
\( RSS = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 \)

แต่ในการทำ Regularisation เราไม่ได้สนใจแค่ความผิดพลาดของโมเดลเท่านั้น แต่เรายังสนใจด้วยว่าสัมประสิทธิ์ (\(\beta\)) ของเรามีค่าใหญ่แค่ไหน เราจึงเพิ่ม พจน์ค่าปรับ (Penalty term) เข้าไปในฟังก์ชันต้นทุน (Cost function) ของเรา โดยเป้าหมายใหม่คือการทำให้ค่าต่อไปนี้ต่ำที่สุด:
\( \text{Cost} = RSS + \text{Penalty} \)

การปรับค่าสัมประสิทธิ์ที่ใหญ่เกินไปให้ลดลง จะช่วยป้องกันไม่ให้โมเดลพึ่งพาตัวแปรใดตัวแปรหนึ่งมากเกินไป หรือกลายเป็นโมเดลที่ซับซ้อนจนเกินความจำเป็นครับ

1. Ridge Regression (L2 Regularisation)

ใน Ridge Regression ค่าปรับจะแปรผันตาม กำลังสอง ของขนาดสัมประสิทธิ์

สูตร:
\( \text{Minimise } \sum_{i=1}^{n} (y_i - \beta_0 - \sum_{j=1}^{p} \beta_j x_{ij})^2 + \lambda \sum_{j=1}^{p} \beta_j^2 \)

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

ไม่ต้องกังวลถ้าเห็นสูตรแล้วรู้สึกกลัว! แค่จำไว้ว่า Ridge เก็บตัวแปรไว้ครบทุกตัว แต่ช่วยหรี่ "ระดับเสียง" ของตัวแปรเหล่านั้นลงครับ

2. Lasso Regression (L1 Regularisation)

LASSO ย่อมาจาก Least Absolute Shrinkage and Selection Operator ในที่นี้ ค่าปรับจะแปรผันตาม ค่าสัมบูรณ์ (Absolute value) ของสัมประสิทธิ์

สูตร:
\( \text{Minimise } \sum_{i=1}^{n} (y_i - \beta_0 - \sum_{j=1}^{p} \beta_j x_{ij})^2 + \lambda \sum_{j=1}^{p} |\beta_j| \)

จุดเด่นของ Lasso:
- ใช้ L1 norm (ค่าสัมบูรณ์)
- การคัดเลือกตัวแปร (Variable Selection): ต่างจาก Ridge ตรงที่ Lasso สามารถบีบให้สัมประสิทธิ์บางตัวกลายเป็น ศูนย์จริงๆ ได้
- นี่เป็นการ "ตัด" ตัวแปรที่ไม่จำเป็นออกจากโมเดล ทำให้คุณเหลือโมเดลที่เรียบง่ายและอธิบายเหตุผลได้ง่ายขึ้น

เทคนิคการจำ:
Lasso = Less variables (ตัดตัวแปรที่ไม่ได้ใช้ทิ้งไป!)
Ridge = Retains all variables (เก็บไว้ครบทุกตัว แค่ลดขนาดลงเท่านั้นเอง)

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

ใช้ Lasso ถ้าคุณสงสัยว่าจริงๆ แล้วมีตัวแปรแค่ไม่กี่ตัวที่สำคัญ และใช้ Ridge ถ้าคุณคิดว่าทุกตัวแปรมีผลต่อผลลัพธ์เล็กน้อยเท่าๆ กันครับ

ตัวแปรปรับจูน: Lambda (\(\lambda\))

ทั้งใน Ridge และ Lasso เราจะมีสัญลักษณ์ \(\lambda\) ซึ่งเรียกว่า Tuning parameter (หรือ Complexity parameter) มันมีหน้าที่ควบคุมว่าเราต้องการลงโทษโมเดลมากน้อยแค่ไหน

การทำงานของ \(\lambda\):
- ถ้า \(\lambda = 0\): พจน์ค่าปรับจะหายไป และเราจะกลับไปสู่ OLS Regression ปกติ (มีความเสี่ยงสูงที่จะเกิด Overfitting)
- ถ้า \(\lambda \to \infty\): ค่าปรับจะมหาศาลมาก ทำให้สัมประสิทธิ์ทุกตัว (ยกเว้น Intercept) ถูกดึงเข้าใกล้ศูนย์หมด (มีความเสี่ยงสูงที่จะเกิด Underfitting)
- เป้าหมายของเรา: เราใช้วิธีอย่าง Cross-Validation เพื่อหาค่า \(\lambda\) ที่ดีที่สุดที่จะช่วยลดความผิดพลาดในการทำนายให้ต่ำที่สุดครับ

รู้หรือไม่?
การทำ Standardisation (ปรับมาตรฐานข้อมูล) เป็นสิ่งที่จำเป็นมากก่อนทำ Regularisation! เนื่องจากเรากำลังลงโทษขนาดของ \(\beta\) ดังนั้นตัวแปรที่มีสเกลต่างกัน (เช่น อายุเป็นปี เทียบกับ เงินเดือนเป็นหลักพัน) จะถูกลงโทษอย่างไม่เป็นธรรมถ้าหากไม่ถูกปรับให้อยู่ในสเกลเดียวกันครับ

ข้อควรระวังที่พบบ่อย

1. ลืมทำ Scale ข้อมูล: อย่างที่กล่าวไปข้างต้น อย่าลืมปรับข้อมูลให้มีค่าเฉลี่ยเป็น 0 และส่วนเบี่ยงเบนมาตรฐานเป็น 1 เสมอ
2. การลงโทษ Intercept: โดยทั่วไปเราจะไม่ใส่ค่าปรับให้กับ Intercept (\(\beta_0\)) เพราะเราต้องการให้โมเดลสามารถเลื่อนขึ้นหรือลงได้อย่างอิสระ
3. คิดว่า Lasso ดีกว่าเสมอ: แม้ว่า Lasso จะได้โมเดลที่เรียบง่ายกว่า แต่ Ridge มักจะให้ผลลัพธ์การทำนายที่แม่นยำกว่าถ้าตัวแปรส่วนใหญ่ในข้อมูลมีผลต่อผลลัพธ์เพียงเล็กน้อยครับ

ตารางสรุปทบทวน

สรุป Regularisation:
1. เป้าหมาย: ลดปัญหา Overfitting ในโมเดลที่มีพารามิเตอร์เยอะ
2. วิธีการ: เพิ่มพจน์ค่าปรับ (\(\lambda\)) เข้าไปในฟังก์ชันต้นทุน RSS
3. Ridge (L2): ดึง \(\beta\) เข้าใกล้ศูนย์ เก็บตัวแปรไว้ครบ เหมาะสำหรับงานที่มีผลเล็กๆ น้อยๆ จากหลายตัวแปร
4. Lasso (L1): บีบ \(\beta\) ให้เป็นศูนย์ได้จริง ช่วยคัดเลือกตัวแปร เหมาะสำหรับกรณีที่ตัวแปรสำคัญมีน้อย
5. การเลือกค่า: ใช้ Cross-Validation ในการเลือกค่า \(\lambda\) ที่ดีที่สุด

ให้กำลังใจส่งท้าย

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