ยินดีต้อนรับสู่โลกของ Principal Components Analysis (PCA)!

สวัสดีครับ! วันนี้เราจะมาเจาะลึกหนึ่งใน "พลังวิเศษ" ที่ทรงพลังที่สุดในคลังเครื่องมือของนักสร้างแบบจำลองคาดการณ์ นั่นคือ Principal Components Analysis (PCA) ซึ่งบทนี้เป็นส่วนหนึ่งของการเดินทางในหัวข้อ Data Transformations and Unsupervised Learning ครับ

ถ้ารู้สึกว่าชื่อมันฟังดูน่ากลัว ไม่ต้องกังวลนะ! จริงๆ แล้ว PCA ก็แค่เทคนิคอัจฉริยะในการทำให้ข้อมูลที่ซับซ้อนกลายเป็นเรื่องง่าย ลองจินตนาการว่าคุณมีห้องที่รกมากๆ ซึ่งมีของกระจัดกระจายอยู่ 50 ชิ้น PCA จะช่วยคุณหา "กล่องใบใหญ่" สัก 3-4 ใบที่ของเหล่านั้นสามารถจัดลงไปได้พอดี ทำให้คุณอธิบายสิ่งที่อยู่ในห้องได้ง่ายขึ้นเยอะเลย เรามาเริ่มกันเลยดีกว่า!

PCA คืออะไรกันแน่?

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

Principal Components Analysis (PCA) คือเทคนิคที่ใช้ในการเปลี่ยนชุดข้อมูลที่มีตัวแปรจำนวนมาก ให้กลายเป็นชุดตัวแปรใหม่ที่มีจำนวนน้อยลง ซึ่งเราเรียกว่า Principal Components (PCs) ตัวแปรใหม่เหล่านี้จะเก็บ "ข้อมูล" (ความแปรปรวน หรือ Variance) ส่วนใหญ่จากข้อมูลชุดเดิมไว้ แต่กลับบริหารจัดการได้ง่ายกว่ามาก

เป้าหมาย: เพื่อลดจำนวนตัวแปร (Dimension reduction) ในขณะที่ยังคง "เนื้อหาสำคัญ" ของข้อมูลดั้งเดิมไว้ให้ได้มากที่สุด

ทำไมเราถึงต้องใช้ในข้อสอบ Exam PA?

1. การลดมิติ (Dimension Reduction): ช่วยให้แบบจำลองเรียบง่ายขึ้นโดยใช้ตัวแปรทำนาย (Predictors) น้อยลง
2. การกำจัดปัญหา Multicollinearity: ตัวแปรต้นฉบับอาจมีความสัมพันธ์กันสูงมาก แต่ Principal Components ใหม่ที่ได้จะ ไม่มีความสัมพันธ์กันเลย (Uncorrelated) หรือตั้งฉากต่อกัน
3. การทำ Visualization: การพล็อตกราฟ 10 มิตินั้นยากมาก แต่การพล็อตกราฟด้วย 2 Principal Components แรกนั้นง่ายนิดเดียว!

ทบทวนสั้นๆ: PCA เป็นเทคนิคแบบ Unsupervised หมายความว่ามันมองแค่ "คุณลักษณะ" (ตัวแปร \(X\)) เท่านั้น โดยมันไม่ได้รับรู้และไม่สนใจ "ผลลัพธ์" (ตัวแปร \(Y\)) ในขณะที่มันทำงานครับ

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

อย่าให้คณิตศาสตร์ทำให้คุณกลัวเลย! ให้มองว่า PCA คือการ หมุน (Rotation) ข้อมูลของคุณ มันจะมองหาทิศทางที่ข้อมูลมีการ "กระจายตัว" มากที่สุด และเรียกสิ่งนั้นว่า Principal Component 1 (PC1) จากนั้นมันจะมองหาทิศทางถัดไปที่ดีที่สุดที่ตั้งฉากกับทิศทางแรก และเรียกสิ่งนั้นว่า PC2

1. ความสำคัญของการทำ Scaling

เดี๋ยว! ก่อนที่คุณจะรัน PCA คุณเกือบจะต้องทำ Scaling ข้อมูล (ปรับให้มีค่าเฉลี่ยเป็น 0 และส่วนเบี่ยงเบนมาตรฐานเป็น 1) เสมอ

ทำไมนะเหรอ? เพราะ PCA ไวต่อหน่วยวัดมาก หากตัวแปรหนึ่งคือ "รายได้" (หน่วยเป็นพันดอลลาร์) และอีกตัวแปรหนึ่งคือ "อายุ" (หน่วยเป็นปี) ตัวแปร "รายได้" จะมีความแปรปรวนสูงกว่ามากเพียงเพราะตัวเลขมันมีค่ามากกว่า PCA จะเข้าใจผิดว่ารายได้สำคัญกว่าแค่เพราะสเกลของมันใหญ่กว่า การทำ Scaling จึงเป็นการทำให้ทุกตัวแปรอยู่ในสนามแข่งขันที่เท่าเทียมกันครับ

2. Loadings (หรือ "สูตรอาหาร")

แต่ละ Principal Component คือ ผลรวมเชิงเส้น (Linear combination) ของตัวแปรต้นฉบับ เราเรียกน้ำหนักในผลรวมนี้ว่า loadings

ตัวอย่างเช่น: \(PC_1 = \phi_{11}X_1 + \phi_{21}X_2 + ... + \phi_{p1}X_p\)

Loading vector จะบอกคุณว่าตัวแปรต้นฉบับแต่ละตัว "มีส่วนร่วม" มากน้อยแค่ไหนใน Component นั้นๆ ถ้าตัวแปรใดมีค่า loading สูง (ไม่ว่าจะบวกหรือลบ) แสดงว่ามันเป็นส่วนประกอบสำคัญของ "รสชาติ" ใน Component นั้นๆ

3. Scores (พิกัดใหม่)

เมื่อเราได้ "สูตร" (loadings) แล้ว เราก็นำข้อมูลของแต่ละคนเข้าไปแทนค่าเพื่อให้ได้ score ของคนนั้นสำหรับ Component นั้นๆ ซึ่งคะแนนเหล่านี้จะกลายเป็นจุดข้อมูลใหม่ที่เราสามารถนำไปใช้ในแบบจำลอง Regression หรือ GBM ต่อได้เลย

รู้ไหมว่า? Principal Component แรก (PC1) จะเก็บค่าความแปรปรวนที่ มากที่สุด เท่าที่จะเป็นไปได้ของข้อมูลไว้เสมอ! และ PC2 ก็จะเก็บค่าความแปรปรวนที่มากที่สุดถัดไป ตามลำดับครับ!

เราควรเก็บกี่ Components ดี?

เราเริ่มจากตัวแปร \(p\) ตัว และจบลงที่ Principal Components \(p\) ตัว หากเราเก็บไว้ครบทุกตัว เราก็ไม่ได้ทำอะไรให้ง่ายขึ้นเลย! ดังนั้นเราจึงต้องตัดสินใจว่าจะหยุดที่ตรงไหน

Scree Plot และ "จุดศอก (The Elbow)"

Scree Plot คือกราฟเส้นธรรมดาที่แสดง Proportion of Variance Explained (PVE) หรือสัดส่วนความแปรปรวนที่อธิบายได้ในแต่ละ Component

ในการเลือกจำนวน Components เราจะมองหา "จุดศอก" (Elbow) ซึ่งเป็นจุดที่เส้นกราฟเริ่มราบลง เหมือนกับการบอกว่า "หลังจากจุดนี้ไป การเพิ่ม Component เข้าไปอีกไม่ได้ให้ข้อมูลที่เป็นประโยชน์เพิ่มขึ้นเท่าไหร่เลย"

Cumulative Variance

อีกวิธีหนึ่งคือการดู Cumulative PVE คุณอาจตัดสินใจว่า "ฉันต้องการเก็บ Components ให้พอที่จะอธิบายความแปรปรวนรวมของข้อมูลได้ 80%" จากนั้นคุณก็แค่รวมค่า PVE ของ PC1, PC2 ไปเรื่อยๆ จนกว่าจะแตะระดับ 80% ที่คุณตั้งไว้

ประเด็นสำคัญ: เราต้องการจำนวน Components ที่น้อยที่สุดที่ยังคงเก็บ "แก่นแท้" ของข้อมูลเอาไว้ได้

ข้อผิดพลาดที่พบบ่อย

1. ลืมทำ Scaling: อย่างที่บอกไป ถ้าไม่ทำสเกล ผลลัพธ์ของ PCA จะถูกครอบงำโดยตัวแปรที่มีช่วงตัวเลขกว้างที่สุด
2. ตีความเกินจริง: บางครั้ง PC1 อาจแสดงถึง "ขนาด" หรือ "ความเสี่ยง" ได้ชัดเจน แต่บางครั้ง Component ก็ยากที่จะอธิบายเป็นภาษาคนทั่วไป นั่นไม่เป็นไรครับ! PCA มีไว้เพื่อแปลงข้อมูล ไม่ใช่เพื่อการเล่าเรื่องเสมอไป
3. ใช้กับทุกอย่าง: PCA เหมาะมากสำหรับตัวแปรเชิงตัวเลข (Numeric) จำนวนมาก แต่จะยุ่งยากกับข้อมูลเชิงกลุ่ม (Categorical/Factor) โดยปกติแล้วเราจึงใช้มันกับตัวแปรต่อเนื่อง (Continuous) มากกว่า

ตารางสรุปเพื่อการทบทวนอย่างรวดเร็ว

Concept: Scaling
ทำไมถึงสำคัญ: เพื่อให้มั่นใจว่าตัวแปรที่มีหน่วยใหญ่ๆ จะไม่ครอบงำการทำงานของ PCA

Concept: Loadings
ทำไมถึงสำคัญ: คือน้ำหนักที่แสดงว่าตัวแปรต้นฉบับมีผลต่อ PC นั้นๆ มากแค่ไหน

Concept: PVE
ทำไมถึงสำคัญ: บอกเราว่า PC ตัวนั้นๆ มี "เนื้อหาข้อมูล" อยู่เท่าไหร่

Concept: Orthogonality
ทำไมถึงสำคัญ: หมายความว่า PCs ไม่มีความสัมพันธ์กัน ช่วยแก้ปัญหา Multicollinearity

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

PCA อาจรู้สึกว่า "นามธรรม" ไปหน่อยเพราะเรากำลังสร้างตัวแปรสมมติขึ้นมาจากข้อมูลจริง แค่จำ การเปรียบเทียบกับเงา (Shadow Analogy) ไว้ครับ: ถ้าคุณถือวัตถุ 3 มิติไว้หน้าไฟ เงา 2 มิติที่ปรากฏบนผนังก็คือเวอร์ชัน "มิติต่ำ" ของวัตถุนั้น ถ้าคุณหมุนวัตถุในมุมที่ใช่ เงาก็จะเก็บส่วนที่สำคัญที่สุดของรูปทรงนั้นไว้ PCA ก็แค่การหาองศาที่ดีที่สุดสำหรับเงานั้นนั่นเอง!

คุณทำได้แน่นอน! ฝึกฝนการใช้โค้ด R สำหรับ PCA ต่อไป (โดยทั่วไปคือฟังก์ชัน prcomp) แล้วคุณจะเห็นว่าแนวคิดเหล่านี้มันนำไปใช้จริงได้อย่างน่าทึ่งครับ!