เนื้อหาใน "Principal Component Analysis" กล่าวถึงความหมายและการคำนวณหา Principal Component จากชุดข้อมูลที่มีอยู่ ในตอนนี้จะกล่าวถึงการนำ principal component มาช่วยลดจำนวน dimension ข้อมูลลง
Curse of dimesionality
มิติข้อมูล (data dimensions) คือกลุ่ม(set)ของคุณสมบัติ(attributes)หรือคุณลักษณะ (features) ที่เกี่ยวข้องกับสิ่ง (object) ที่กำลังสนใจ เช่น ถ้าสนใจคนเป็นโรคเบาหวาน (diabetes) คุณลักษณะของคนที่เป็นเบาหวานอาจมีได้ตามรูปที่ 1 จำนวนของมิติข้อมูลจะมากหรือน้อยขึ้นกับปัจจัยหลายอย่าง สิ่งเดียวกันจำนวนมิติข้อมูลอาจเปลี่ยนได้ในบริบทที่ต่างกัน จำนวนมิติข้อมูลที่สิ่งหนึ่งมีได้ในเวลาใดเรียก dimesionality
โดยทั่วไป การมี dimensionality ที่มากขึ้นน่าจะส่งผลดีต่อการทำความเข้าใจในสิ่งสนใจมากขึ้น แต่อาจก็ต้องแลกด้วยปัญหาบางอย่าง Richard Bellman ได้นำเสนอปรากฏการณ์ที่เรียกว่า "curse of dimensionality" [3,4] เมื่อจำนวน dimension เพิ่มขึ้น จะต้องใช้จำนวน instance ของข้อมูลเพิ่มมากขึ้นในแบบ exponential รูปแบบปัญหาเทียบได้กับปริมาตรที่เพิ่มขึ้นเมื่อมิติเพิ่มขึ้น (ดูรูปที่ 2) ถ้าเส้นด้ายเล็กยาว 4 หน่วย ถ้าเป็นกรอบสี่เหลี่ยมที่มีความยาวด้านละ 4 หน่วยก็จะมีพื้นที่เป็น 16 \(\text{หน่วย}^2 \) ถ้าเป็นกล่องที่มีความยาวด้านละ 4 หน่วยจะมีปริมาตรเป็น 64 \(\text{หน่วย}^3 \)
ถ้าเทียบกับปริมาตรแล้วยังไม่เห็นว่าเป็นประเด็น ลองนึกภาพว่าถ้าเราต้องจับเอาวัตถุที่เคลื่อนที่ในทิศทางเดียวจะง่ายกว่าการจับวัตถุที่เคลื่อนที่ได้สองทิศทางและยากขึ้นไปอีกหากวัตถุนั้นบินได้
Explained Variance Ratio
variation หรือความหลากหลายกับสาระ (information) เป็นของคู่กัน เช่น ราคาหลักทรัพย์ในตลาดที่มีการเปลี่ยนไปเปลี่ยนมาเร็ว (มี variation มาก) ผู้ที่มีไว้ก็มักจะต้องคอยดูแลให้ความสนใจมากกว่าหลักทรัพย์ที่ราคาคงที่ (มี variation น้อย ) หรือกล่าวได้ว่า เมื่อ variation มาก information ก็จะมาก หาก variation น้อย information ก็จะน้อย ในทางคณิตศาสตร์วัด variation จากระยะทางเฉลี่ยจากจุดศูนย์กลางไปยังค่าของข้อมูลเรียกค่านั้นว่า variance โดยที่ variance จะอยู่ในรูปของกำลังสอง ทำให้ variance \( \geq 0 \)
หมายเหตุ ในการคำนวณ PCA จะได้ค่าของ eigen values (\( \lambda \)) โดย \( \lambda^2 = \text{Variance} \)
จากเรื่อง Principal Component Analysis เรารู้ว่าแต่ละ dimension อาจให้ค่า variance ต่างกัน นั่นคือ information ที่บรรจุอยู่ในแต่ละ dimesion ก็อาจต่างกันด้วย PCA ช่วยรวมเอา dimension ที่มีความสัมพันธ์ต่อกันเข้าไว้ได้ด้วยกัน ซึ่งหมายถึงปริมาณ information ก็ถูกรวบเข้าไว้ด้วยกันด้วยเช่นกัน ค่า information ถูกวัดด้วยค่า Explained Variance Ratio(EVR) หาได้จากสมการ (1)
\[ \text{EVR} = \frac{\text{Var}_x}{\sum_{i=1}^n\text{Var}_i} \tag{1} \]
ยกตัวอย่างเช่น ถ้าข้อมูลมี 4 dimensions โดยมีค่าของ variance เป็น 3.21, 2.37, 1.55 และ 1.05 คำนวณค่า EVR ของแต่ละ dimension ได้ดังนี้ \[ \begin{align*} \sum_{i=1}^n\text{Var}_i &= 3.21+2.37+1.55+1.05 = 8.18 \\ \text{EVR}_1 &= \frac{3.21}{8.18} \approx 0.39\\ \text{EVR}_2 &= \frac{2.37}{8.18} \approx 0.29\\ \text{EVR}_3 &= \frac{1.55}{8.18} \approx 0.19\\ \text{EVR}_4 &= \frac{1.05}{8.18} \approx 0.13\\ \end{align*} \]
ความหมายคือ ถ้าเรานำเอาแต่ dimension ที่ 1 ไป เราจะได้ information ประมาณ 0.39(39%) ถ้าใช้ dimension ที่สองก็จะมีค่า information ประมาณ 0.29 (29%) หากนำเอา dimension ที่หนึ่งและสองก็จะได้ information เป็น 0.68 (68%) ถ้าหากต้องการ information ประมาณ 80% เมื่อเทียบกับต้นฉบับ ก็นำเอา dimension ที่หนึ่ง สอง และสามไปใช้งาน เป็นต้น
\[ \text{EVR} = \frac{\text{Var}_x}{\sum_{i=1}^n\text{Var}_i} \tag{1} \]
ยกตัวอย่างเช่น ถ้าข้อมูลมี 4 dimensions โดยมีค่าของ variance เป็น 3.21, 2.37, 1.55 และ 1.05 คำนวณค่า EVR ของแต่ละ dimension ได้ดังนี้ \[ \begin{align*} \sum_{i=1}^n\text{Var}_i &= 3.21+2.37+1.55+1.05 = 8.18 \\ \text{EVR}_1 &= \frac{3.21}{8.18} \approx 0.39\\ \text{EVR}_2 &= \frac{2.37}{8.18} \approx 0.29\\ \text{EVR}_3 &= \frac{1.55}{8.18} \approx 0.19\\ \text{EVR}_4 &= \frac{1.05}{8.18} \approx 0.13\\ \end{align*} \]
ความหมายคือ ถ้าเรานำเอาแต่ dimension ที่ 1 ไป เราจะได้ information ประมาณ 0.39(39%) ถ้าใช้ dimension ที่สองก็จะมีค่า information ประมาณ 0.29 (29%) หากนำเอา dimension ที่หนึ่งและสองก็จะได้ information เป็น 0.68 (68%) ถ้าหากต้องการ information ประมาณ 80% เมื่อเทียบกับต้นฉบับ ก็นำเอา dimension ที่หนึ่ง สอง และสามไปใช้งาน เป็นต้น
Dimension selection vs Dimension reduction
ทั้งสองมีความหมายใกล้เคียงกัน แต่ขั้นตอนการทำงานและผลที่ได้รับต่างกัน ขอยกตัวอย่างข้อมูลจาก Iris dataset มาใช้อีกครั้ง scatter plot ได้ดังรูปที่ 3
รูปที่ 3 |
จากรูปที่ 3 เราได้ใช้ X axis แทน dimension ที่เรียกว่า petal length และ Y-axis แทน dimension ที่เรียกว่า petal width ในกรณีของการทำ dimension selection จะใช้การเลือกเอา axis ที่มีอยู่ แล้วทำการ project ข้อมูลลงบน axis ที่เลือก หากเลือกที่จะ project ลงบน X-axis จะได้ผลดังรูปที่ 4
ในรูปที่ 4 จะเห็นว่าจำนวน dimension เหลือเพียง 1 dimension เพราะ data points ทุกจุดถูก projected ลงบน X-axis หมด (จุดสีแดงบน X-axis) มีข้อสังเกตุคือจำนวน data point ลดลงหลังการทำ projection เนื่องจากการซ้ำซ้อนของตำแหน่งข้อมูลบน X-axis มาคำนวณค่าของ explained variance ratio กันดู
\[
\begin{align*}
\text{Total Variance} &= 550.64 \\
\text{Projected Variance} &= 463.86 \\
\therefore EVR & = \frac{463.86}{550.64} \approx 0.84
\end{align*}
\]
ในกรณีของการทำ dimension reduction ต้องคำนวณหา principal component ก่อน เลือก principal component ที่มีค่า eigen value สูงสุดก่อน ไล่เรียงลงไป จำนวน principal component ที่เลือกจะขึ้นกับว่าพอใจที่ได้ค่าของ explained variance ratio ที่เท่าไหร่ แล้วทำการ project ข้อมูลลงไปบน principal component ที่เลือก
รูปที่ 5 แสดงการ project ข้อมูลลงบน principal component (ลูกศรสีน้ำเงิน) เทียบกับการทำ dimension selection แล้ว จะมีสูญเสียข้อมูลน้อยกว่า เนื่องจากค่า eigen values สัมพันธ์กับ data variance ดังนั้นการคำนวณหา explained variance ratio จึงใช้ค่าของ eigen values คำนวณแทนได้ ซึ่งเราทราบจากตอนก่อนหน้านี้คือ [3.63, 0.036] ดั้งนั้นค่า EVR คือ
\[
\begin{align*}
\therefore EVR & = \frac{3.63}{3.63 + 0.036} \approx 0.99
\end{align*}
\]
สรุปความต่างคือ dimension selection ทำการ project ข้อมูลต้นฉบับลงบน axis ที่มีอยู่แล้ว ในขณะที่ dimension reduction จะทำ project data ไปบน principal component ซึ่งเป็นการย้ายข้อมูลไปยัง vector space ใหม่ นอกจากนี้ แม้ทั้งสองจะช่วยจำนวน dimension ลงแต่ในตัวอย่างก็แสดงให้เห็นว่า dimension reduction สามารถคงค่าของ information ไว้ได้มากกว่า dimension selection
Loading และ Score
การ project ข้อมูลเดิมไปยัง vector space ใหม่คือการทำ linear combination ระหว่างข้อมูลใน matrix เดิมกับ basis ใน vector space ใหม่
\[
\begin{align*}
X_{\text{new}} &= X_{\text{old}} \cdot V_b \tag{2}
\end{align*}
\]
ตัวอย่างจากตอน Principal Component Analysis เราได้คำนวณหา eigen vectors คือ \( \begin{bmatrix}0.9215\\0.3883\end{bmatrix},\begin{bmatrix}-0.3883\\0.9215\end{bmatrix} \) และข้อมูลต้นฉบับมี 2 data dimension คือ Petal Length และ Petal Width คำนวณ linear combination ระหว่าง first component กับแต่ละ observation ได้จาก
\[
\begin{align*}
X_{\text{new}} &=
\begin{bmatrix}
| & | \\
\text{Petal Length} & \text{Petal Width} \\
| & |
\end{bmatrix} \cdot
\begin{bmatrix}0.9215\\0.3883\end{bmatrix} \\\\
&=
\begin{bmatrix}
| & | \\
0.9215 \times \text{Petal Length} & 0.3883 \times\text{Petal Width} \\
| & |
\end{bmatrix} \\\\
\end{align*}
\]
ถ้า \( x_i^1\) คือสมาชิกของ \( X_{\text{new}} \) ใน column vector นี้ จะได้
\[
x_{i} = 0.9215 \times \text{Petal Length}_i + 0.3883 \times \text{Petal Width}_i \tag{3}
\]
จากความสัมพันธ์นี้ จะเห็นว่า element ของ eigen vector ทำหน้าที่เป็นค่าของน้ำหนัก หรือ loading factor (อาจเรียก coefficient) ที่บอกว่า \( x_i \) มีส่วนของ dimension เดิมอยู่เท่าใด จึงเรียกค่าของ element ใน eigen vector ว่า "loading"
score คือค่า magnitude (length) ของ \( x_i \) บอกถึงอิทธิพลของ component โดยที่ score ใน principal component ลำดับต้นจะมีอิทธิพลมากกว่าลำดับถัดไป จำนวน score มีได้เท่ากับจำนวน observation ในแต่ละ principal component ร
เนื้อหาในตอนนี้ได้กล่าวแนะนำถึง curse of dimensionality ซึ่งเป็นเหตุหนึ่งที่ทำให้ต้องการทำ dimension reduction ได้รู้จักกับ explained variace ratio เครื่องมือที่ใช้บอกปริมาณ information ที่มีในแต่ละ coponent และการย้ายข้อมูลเดิมไปสู่ vector space ใหม่ที่มีจำนวน dimension น้อยกว่าเดิม และได้กล่าวถึง loading และ score ซึ่งเป็น terms ที่อาจจะได้พบในเอกสารอื่น ในตอนต่อไปจะได้นำความรู้ในขั้นตอนการทำ data dimension reduction ไปเขียนด้วยภาษา Python กัน
ความคิดเห็น
แสดงความคิดเห็น