Principal Components Analysis

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

Date Country Buy Sell Differentials in Inflation Differentials in Interest Rates Current-Account Deficits Public Debt Terms of Trade Political Stability Economic Performance
230517USA3534455412.2962429
230517AUD3029524415.878.93047
230517X?????????
250517Y?????????
250517Z?????????
250517..........
250517..........


*ตารางที่ยกมานี้เป็นเพียงข้อมูลสมมุติที่ใส่ไว้เพื่อให้พอเห็นภาพ

จากตาราง สมมุติว่าเราพยายามวิเคราะห์ความสัมพันธ์ของข้อมูล ก็จะเห็นความเกี่ยวโยงกันอยู่เช่น ความแข็งอ่อนของค่าเงินมีผลโดยตรงกับเศรษฐกิจ การเมือง การนำเข้าส่งออก แต่บางทีการนำเข้าส่งออกกับการเมืองก็สวนทางกัน ทำให้เรตในแต่ละวันก็ออกมาแตกต่างกัน ฯลฯ

คิดไปคิดมาสักพักก็จะเริ่มงงๆ เริ่มเรียงลำดับความสัมคัญไม่ค่อยถูก นี่ยังแค่ตัวแปร 7 ตัว ถ้าเราต้องการความแม่นยำที่สูงขึ้น ตัวแปรที่เก็บมาก็ควรจะมีมากขึ้นไปด้วย แล้วสมมุติว่าตัวแปรในที่นี้มีประมาณ 50 กว่าตัว แล้วเราจะเรียงลำดับความสำคัญอย่างไรดี? อันไหนมีผลกระทบมาก อันไหนแทบไม่มีความเกี่ยวข้องกันเลย อันไหนไม่จำเป็นต้องเอามาคิด ฯลฯ ปัญหาเหล่านี้ดูเหมือนจะสลับซับซ้อน แต่จริงๆแก้ได้ไม่ยากเลย นักคณิตศาสตร์มีวิธีการแก้ปัญหาทำนองนี้ด้วยเทคนิคที่เรียกว่า Principal Component Analysis ( PCA )

Principal : สิ่งที่สำคัญ
Component : องค์ประกอบ
Analysis : การวิเคราะห์

PCA โดยใจความสำคัญแล้วก็คือการวิเคราะห์โดยเฉพาะส่วนประกอบที่สำคัญๆเท่านัั้น ซึ่งเป็นเทคนิคหนึ่งที่ใช้กระบวนการทางสถิติและเมทริกซ์ (Matrix) เข้ามาอธิบายข้อมูลให้เป็นที่เข้าใจได้ง่ายยิ่งขึ้น. รูปแบบของข้อมูลที่ว่านี้จะอยู่ในรูปของตารางอย่างเช่นข้างบน เพื่อลดความซับซ้อนลง เราก็จะสร้างโมเดลขึ้นมาใหม่ ให้เป็นที่เข้าใจได้ง่ายขึ้น เหมือนการมองชุดข้อมูลด้วยมุมมองใหม่ แต่ไม่ได้ทำการเปลี่ยนแปลงข้อมูลดิบเลยแม้แต่ตัวเดียว

ตัวอย่างที่นำ PCA ไปใช้เช่น การตรวจจับใบหน้า การบีบอัดรูปภาพ และการหารูปแบบโครงสร้างของข้อมูลหลายมิติ

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

  • Standard Deviation
  • Variance
  • Covariance
  • Covariance Matrix
  • EigenVectors
  • EigenValues
ในที่นี้เราจะมาดูความหมายของแต่ละตัวโดยสังเขป

Standard Deviation
คือการบอกว่าข้อมูลมีความกระจัดกระจายมากน้อยขนาดไหน พิจารณาจากกราฟข้างล่าง



จากกราฟ ค่าเฉลี่ย (\bar{X})ของแต่ละ Series มีค่าเท่ากันคือ 10

\bar{X} = \dfrac{\displaystyle\sum_{i=1}^n x_i}{n}
แต่ 10 ไม่ได้บอกอะไรมากมายถึงความแตกต่าง อย่างที่เห็นคือ กราฟสีน้ำเงินมีการกระจายตัวมากกว่า ซึ่งกราฟสีส้มมีข้อมูลที่ใกล้เคียงกัน การจะบอกถึงความแตกต่างนี้ ทางสถิติมีตัววัดตัวหนึ่งคือ Standard Deviation วิธีการคำนวณก็ไม่ยาก คือการหาค่าเฉลี่ยของระยะทางระหว่างจุดแต่ละจุด กับจุดกึ่งกลาง (จุดค่าเฉลี่ย) เขียนเป็นสมการได้ว่า

s = \sqrt{\dfrac{\displaystyle\sum_{i=1}^n (x_i - \bar{X})^2}{n-1}}

ประเด็นคือ แล้วทำไมต้องหารด้วย n-1 ทำไมไม่ใช่ n เรื่องนี้มันก็จะยาวไป แต่คำตอบสั้นๆคือเราจะได้ค่าที่ใกล้เคียงกับความเป็นจริงมากกว่า ส่วนรายละเอียดที่ลึกกว่านั้นก็ตามนี้ Harley Weston

จากข้อมูลข้างต้น จะได้ว่า
series1 มี Standard Deviation = 8.3266639978645
series2 มี Standard Deviation = 1.8257418583506
ค่า SD จึงบอกความกระจายของข้อมูล และทำให้เห็นภาพได้ชัดเจนขึ้น

Variance
ก็คล้ายๆกับ Standard Deviation ที่ใช้สำหรับการหาความกระจายตัวของชุดข้อมูล สูตรก็เกือบจะเหมือนกันเลยคือ
s^2 = \dfrac{\displaystyle\sum_{i=1}^n (x_i - \bar{X})^2}{n-1}


Covariance
Standard Deviation กับ Variance ที่กล่าวมาข้างต้นคือการวิเคราะห์ที่ใช้กับข้อมูล 1 มิติ เช่นความสูงของนักเรียนกในห้อง เกรดวิชาเรียน ถ้าหากว่ามีข้อมูลที่มีมากกว่า 1 มิติขึ้นไป เช่นถ้าเราต้องการหาความสัมพันธ์ระหว่างความสูงที่มีผลต่อเกรดวิชา เราก็จะต้องมีการวัดความแตกต่าง การกระจาย ระหว่างข้อมูลสองมิตินี้ว่าเป็นอย่างไร นั่นก็คือการหาค่า Covariance นั่นเอง

Covariance จะทำการวัดความแตกต่างของข้อมูลใน 2 มิติเสมอ ถ้าคุณหา Covariance ในแกนขอมันเอง นั่นก็คือคุณจะได้ Variance กลับมา. ถ้าคุณมีข้อมูล 3 มิติ (x,y,z) ดังนั้นแล้ว คุณก็จะต้องหา Covariance ระหว่า x, y กับ x, z และ y, z. ถ้าคำนวณหา Covariance ระหว่าง x, x หรือ y, y หรือ z, z เราก็จะได้ Variance ของ x, y และ z ตามลำดับ สำหรับสูตรของ Covariance ระหว่างสองแกนใดๆ สามารถเขียนได้ดังนี้
cov(X,Y) = \dfrac{\displaystyle\sum_{i=1}^n (X_i - \bar{X})(Y_i - \bar{Y})}{(n-1)}

การคำนวณไม่ใช่เรื่องยาก ว่าแต่ Covariance บ่งบอกถึงอะไร?
ลองพิจารณาจากกราฟง่ายๆดังนี้


ในที่นี่เรามี 4 จุด (2,2) (2,4) (4,2) และ (4,4) . ค่าเฉลี่ยของทั้งแกน X และ Y คือ 3 คำนวณในใจง่ายๆก็จะได้ว่า
จุดแรก (2,2) ก็จะได้ ( 2 - 3)( 2 - 3) = (-1)(-1) = 1
จุดสอง (2,4) ก้จะได้ ( 2 - 3)( 4 - 3) = (-1)(1) = -1
จุดสาม (4,2) ก็จะได้ ( 4 - 3)( 2 - 3) = (1)(-1) = -1
จุดสี่ (4,4) ก้จะได้ ( 4 - 3)( 4 - 3) = (1)(1) = 1
เอาทั้งหมดมารวมกันก็จะได้
cov(X,Y) = \dfrac{1 -1 -1 + 1}{(n-1)} = 0

ถ้าอธิบายกราฟเป็นภาษาพูดก็จะได้ว่า ถ้าค่า x มากกว่าค่าเฉลี่ย และค่า y มากกว่าค่าเฉลี่ย เราก็จะได้ + คูณ + ก็จะได้ +. ในทางตรงข้าม ถ้าทั้ง x และ y ต่ำกว่าค่าเฉลี่ยทั้งคู่ เราก็จะได้ - คูณ - ก็ยังได้ + อยู่ดี หรือพูดอีกอย่างก็คือ ถ้า x เพ่ิ่มขึ้น y ก็จะเพิ่มตาม. กลับกัน ถ้า x ต่ำกว่าค่าเฉลี่ย แต่ y กลับสูงกว่าค่าเฉลี่ย (2,4) ผลลัพธ์เป็น - นี่แสดงว่าเริ่มไม่ไปด้วยกันละ และเคสสุดท้าย (4,4) ก็จะเห็นว่ายิ่ง x เพิ่ม แต่ y กลับลด. หรืออาจคิดได้ง่ายๆว่า ถ้ารูปแบบข้อมูลมี slope เป็น + ก็จะได้ Covariance แบบบวก ถ้ามีslope เป็นลบ ก็จะได้ Covariance เป็นลบ ถ้า Covariance เป็น 0 แสดงว่าข้อมูลข้อมูลในแต่ละมิติไม่มีความเกี่ยวข้องกัน เป็นอิสระจากกัน

Covariance = 0.85869573 Covariance = -0.23093475


จากกราฟข้างบน เราจะเห็นความแตกต่างอย่างชัดเจนระหว่างค่า Covariance ที่เป็นบวกกับลบ.
อีกอย่างหนึ่งที่น่าสังเกตคือ cov(X,Y) = cov(Y,X) สังเกตได้จากสูตร เพราะว่าการคูณมีคุณสมบัติการสลับที่ ดังนั้น สมการนี้จึงเท่ากัน

Covariance Matrix
คือ Matrix ของ Covariance ทุกคู่ระหว่างมิติต่างๆ ยกตัวอย่างเช่น ถ้าข้อมูล 3 มิติ x,y และ z;
ดังนั้นแล้ว Covariance Matrix ก็จะเขียนได้ว่า

\begin{pmatrix} cov(x,x)&cov(x,y)&cov(x,z) \\ cov(y,x)&cov(y,y)&cov(y,z) \\ cov(z,x)&cov(z,y)&cov(z,z) \end{pmatrix}

จุดที่น่าสังเกตคือ แกนหลัก (main diagonal) ก็คือ Variance นั่นเอง. นอกจากนี้แล้ว con(a,b) = con(b,a) ดังนั้น เมทริกซ์นี้สมมาตรกันในแกนหลัก. สูตรของ Covariance คือ

C^{n \times n}=(c_{i,j}, c_{i,j}=cov(Dim_i,Dim_j))

ซึ่ง C^{n \times n} เป็นเมทริกซ์ n แถวและ n คอลัมน์. และ Dim_x คือมิติที่ x ของข้อมูลนั้นๆ


EigenVectors
คือการคูณกันระหว่าง matrix กับ vector. แต่ที่พิเศษมากไปกว่าการคูณเมทริกซ์ธรรมดาก็คือ ผลคูณระหว่าง matrix กับ vector นี้ ก็คือ vector ที่เอาไปคูณนั่นเอง เพียงแต่อาจมีขนาดสั้นยาวของเวกเตอร์ผลลัพธ์ที่อาจแตกต่างไปจาก vector ตัวตั้งที่เอาไปคูณ 

Av = \lambda v

เพื่อให้เห็นภาพและเข้าใจ Eigen vector ให้มากขึ้น พิจารณาพฤติกรรมการคูณเมตริกดังต่อไปนี้

A=\begin{bmatrix}1 & 0 \\ 0 & 1\end{bmatrix}, v=\begin{bmatrix}1 \\ 1 \end{bmatrix}, \therefore Av=\begin{bmatrix}1 \\ 1 \end{bmatrix}


จากกราฟ ถ้าเราเอาเวอกเตอร์เขียว กับน้ำเงินเข้ามาเขียนไว้ด้วยกันก็จะได้ A. Column ที่ 1 ของ A คือ เวกเตอร์เขียว (1,0) ส่วน Column ที่ 2 ก็คือเวกเตอร์สีน้ำเงิน (0,1). พอมีเวกเตอร์ v (1,1) เข้ามาคูณกับ A สุดท้ายก็ได้ตัวมันเอง เพราะ A ไม่มีการแปลงตัวใดๆทั้งนั้น
เราสามารถมองว่า v คือเวกเตอร์ใดๆก็ตามเวกเตอร์หนึ่ง พอมีเมทริกซ์อันใดอันหนึ่งเข้ามาคูณ ( A ) อันที่สามารถคูณกันได้ คือมีมิติที่สามารถคูณกันได้ ผลลัพธ์นั้นก็คือการแปลงรูปของ v นั้นๆให้กลายไปเป็น v ใหม่ ที่อยู่ในโลกของ A นั้นๆ
คราวนี้ถ้าเกิด A มีการ transform ไป ลองนึกดูว่าเราหมุนกราฟนี้ทวนเข็มนาฬิกาไป 90 องศา รูปที่ได้ก็จะเป็นแบบนี้


ถ้าจะอธิบายกราฟข้างบนนี้ด้วยเมทริกซ์ A กราฟสีเขียวจากที่เคยเป็น (1,0) ก็กลายมาเป็น (0,1). ส่วนสีน้ำเงินก็เปลี่ยนจาก ( 0 , 1) ไปเป็น (-1,0). ดังนั้น A จึงสามารถเขียนใหม่ได้ว่า

A=\begin{bmatrix}0 & -1 \\ 1 & 0\end{bmatrix}, v=\begin{bmatrix}1 \\ 1 \end{bmatrix}, \therefore Av=\begin{bmatrix}-1 \\ -1 \end{bmatrix}

ตัวอย่างข้างต้น v ก่อนคูณ และ v หลังจาการคูณมีทิศทางที่ต่างกัน ตามนิยามของ Eigen vector แล้ว ถ้า v ก่อนคูณ และ v หลังคูณมีทิศทางเดียวกัน ก็จะเป็นดังตัวอย่างต่อไปนี้
ให้

(Graph 1) : A=\begin{bmatrix}1 & 0 \\ 0 & 1\end{bmatrix}, v=\begin{bmatrix}3\\ 2\end{bmatrix}, \therefore Av=\begin{bmatrix}3\\ 2 \end{bmatrix}

(Graph 2) : A=\begin{bmatrix}2 & 3 \\ 2 & 1\end{bmatrix}, v=\begin{bmatrix}3\\ 2\end{bmatrix}, \therefore Av=\begin{bmatrix}12\\ 8 \end{bmatrix}

Graph 1 Graph 2

สำหรับกราฟ2 แล้ว ก็จะได้ว่า
(Graph 2) : A=\begin{bmatrix}2 & 3 \\ 2 & 1\end{bmatrix}, v=\begin{bmatrix}3\\ 2\end{bmatrix}, \therefore Av=4\begin{bmatrix}3\\ 2\end{bmatrix}, \lambda=4

อีกข้อหนึ่งที่น่าสนใจคือ ข้อมูลมีมิติเท่าใด ก็จะมีจำนวน Eigen vector เท่านั้น อย่าง A ในที่นี้มี 2 มิติ ก็จะมี Eigen vector 2 ตัว ซึ่งตัวเราเราได้เห็นแล้ว่วามันคือ ( 3,2) ส่วนอีกตัวก็คือ (1 , -1) วิธีการคำนวณหา Eigen vector สามามารถดูเพิ่มเติมได้ที่ Eigenvalues and eigenvectors Matrix_examples
สำหรับ (1,-1) สามารถทำเป็นกราฟได้ดังนี้

(Graph 3) : A=\begin{bmatrix}1 & 0 \\ 0 & 1\end{bmatrix}, v=\begin{bmatrix}1\\ -1\end{bmatrix}, \therefore Av=\begin{bmatrix}1\\ -1 \end{bmatrix}

(Graph 4) : A=\begin{bmatrix}2 & 3 \\ 2 & 1\end{bmatrix}, v=\begin{bmatrix}1\\ -1\end{bmatrix}, \therefore Av=\begin{bmatrix}-1\\ 1 \end{bmatrix}

Graph 3 Graph 4

(Graph 4) : A=\begin{bmatrix}2 & 3 \\ 2 & 1\end{bmatrix}, v=\begin{bmatrix}1\\ -1\end{bmatrix}, \therefore Av=-1\begin{bmatrix}1\\ -1\end{bmatrix}, \lambda=-1

จุดที่น่าสังเกตอีกอย่างคือ Eigen vector ทุกตัว (กราฟ 2 และ 4 ) จะตั้งฉากกัน (orthogonal) และไม่ว่าจะมีกี่ Eigen vector ก็ตาม ทั้งหมดนั้นก็จะตั้งฉากซึ่งกันและกันหมด
คราวนี้ลองมาคิดย้อนกลับ ถ้าสมมุติว่าเราไม่รู้ ว่า A=\begin{bmatrix}2 & 3 \\ 2 & 1\end{bmatrix} แต่เรามี Eigen vectors กับ \lambda ของแต่ละ Eigen vector เราก็จะสามารถคำนวณหา A ได้ทันที เช่น

\begin{pmatrix}\begin{bmatrix}a & b \\ c & d\end{bmatrix}\begin{bmatrix}3 \\ 2\end{bmatrix}=\begin{bmatrix}12 \\ 8\end{bmatrix}\\\\ \begin{bmatrix}a & b \\ c & d\end{bmatrix}\begin{bmatrix}1 \\ -1\end{bmatrix}=\begin{bmatrix}-1 \\ 1\end{bmatrix}\end{pmatrix}=\begin{pmatrix}\begin{aligned}3a + 2b &=12 \\ 3c + 2d &=8 \\a - b &=-1 \\c - d &=1\end{aligned}\end{pmatrix}

ข้อนี้สำคัญ เพราะมันหมายความว่า เราสามารถพรีเซนต์ชุดข้อมูลนี้ในรูปแบบของ Eiegent Vectors ได้ แทนที่จะแสดงในมิติเดิมคือ x,y และเราจะใช้วิธีนี้ใน PCA

EigenValue
คือค่าที่มากับ Evient Vector หรือก็คือ \lambda นั่นเอง คือค่าที่บอกว่าหากมีการ transform Eigent Vector นั้นๆแล้ว แล้วมันจะสเกลเป็นกี่เท่า. และ \lambda ก็จะมาคู่กับ v เสมอ

Principal Components Analysis

จากเทคนิคที่กล่าวมาข้างต้น เราสามารถนำมาจัดการกับข้อมูล เพื่อค้นหารูแปบบของข้อมูลนั้นๆ เป็นการมองข้อมูลในมุมใหม่ ในมุมที่แสดงถึงความสัมพันธ์กันภายในข้อมูลชุดนั้นๆ. สมมุติว่าเรามีข้อมูลหลายมิติ ยากที่จะทำความเข้าใจ หรือยากที่จะพรีเซนต์ออกมาในมุมที่มีความหมาย  PCA จึงเข้ามาลดความซับซ้อนตรงนี้ลงไป

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

ว่าด้วยเรื่องของการบีบอัดข้อมูล  ยกตัวอย่าง A ที่ประกอบด้วย ( a, b , c ,d ) ในหัวข้อ Eigen Vector ถ้าเราไม่สนใจค่า \lambda = -1 เราก็จะยังได้

\begin{pmatrix}\begin{aligned}\begin{bmatrix}a & b \\ c & d\end{bmatrix}\begin{bmatrix}3 \\ 2\end{bmatrix}=\begin{bmatrix}12 \\ 8\end{bmatrix}\\\\ \begin{bmatrix}a & b \\ c & d\end{bmatrix}\begin{bmatrix}0 \\ 0\end{bmatrix}=\begin{bmatrix}0 \\ 0\end{bmatrix}\end{aligned}\end{pmatrix}=\begin{pmatrix}\begin{aligned}3a + 2b &=12 \\ 3c + 2d &=8 \\a - b &=0 \\c - d &=0\end{aligned}\end{pmatrix}\therefore \begin{bmatrix}a & b \\ c & d\end{bmatrix}=\begin{bmatrix}2.4 & 2.4 \\ 1.6 & 1.6\end{bmatrix}

ซึ่งก็ใกล้เคียงกับค่าเดิมของ A. ต่อไปเราจะมาดูวิธีการทำ PCA ในแต่ละขั้น. โดยสรุปแล้วจะมีดังนี้
  1. เก็บข้อมูล
  2. ลบกับค่าเฉลี่ย
  3. คำนวณ Covariance Matrice
  4. คำนวณ  EigenVectors และ EigenenValues
  5. เลือกฟีเจอร์
  6. สร้างข้อมูลชุดใหม่ในมิติของ EigenVectors
  7. แสดงข้อมูลชุดใหม่ในมิติที่น้อยลง
1.) เก็บข้อมูล
ในตัวอย่างต่อไปนี้ เราจะมาใช้ข้อมูล 2 มิติกัน เพื่อง่ายต่อการพร็อตกราฟ และทำให้เห็นภาพเปรียบเทียบได้ชัดเจน

x 5.52.73.22.94.13.33.02.02.52.1
y 3.41.93.93.24.03.72.62.521.9



2.) ลบกับค่าเฉลี่ย
\begin{matrix}\bar{x}=3.13\\ \bar{y}=2.91\end{matrix}

x y x - \bar{x} y - \bar{y}
5.53.42.370.49
2.71.9-0.43-1.01
3.23.90.070.99
2.93.2-0.230.29
4.14.00.971.09
3.33.70.170.79
3.02.6-0.13-0.31
2.02.5-1.13-0.41
2.52-0.63-0.91
2.11.9-1.03-1.01


3.) คำนวณ Covariance Matrice

cov=\begin{pmatrix}1.06455556 & 0.54522222 \\ 0.54522222 & 0.69433333\end{pmatrix}
4.) คำนวณ  EigenVectors และ EigenenValues

eigenvalues=\begin{pmatrix}1.45523381 \\ 0.30365508\end{pmatrix}

eigenvectors=\begin{pmatrix}0.81286254 & -0.58245557 \\ 0.58245557 & 0.81286254\end{pmatrix}

จุดที่สำคัญตรงนี้คือ Eigen vectors ต้องเป็น unit eigenvectors หรือก็คือมีความยาวเท่ากับ 1 เช่น
\sqrt{0.81286254^2 + 0.58245557^2}=1

5.) เลือกฟีเจอร์
จากหัวข้อ Eigen Vector เราจะเห็นว่า \lambda ที่มีค่ามากที่สุดคือองค์ประกอบที่สำคัญของข้อมูล (Principal component) ดังนั้น เราจะทำการเรียงลำดับ Eigen Vector จากมากไปหาน้อย ตามค่าของ Eiven values ที่มากับแต่ละตัว เราก็จะได้
eigenvalues=\begin{pmatrix}1.45523381 \\ 0.30365508\end{pmatrix}


eigenvectors=\begin{pmatrix}0.81286254 & -0.58245557 \\ 0.58245557 & 0.81286254\end{pmatrix}

จากนั้น เราก็เลือก Feature Vector ที่ต้องการ อย่างในที่นี้เรามีข้อมูลเพียงแค่ 2 มิติ และจะทำการลดให้เหลือแค่มิติเดียว เราก็จะได้
FeatureVector=\begin{pmatrix}0.81286254 \\ 0.58245557 \end{pmatrix}


ถ้าหากมีหลายมิติ เราก็จะจัดเรียก FeatureVector ดังต่อไปนี้

FeatureVector= (eig_{1} eig_{2} eig_{3} ... eig_{n})

แล้วก็ทำการเลือก Features ตามจำนวนที่ต้องการ
สมมุติว่าถ้าเราเลือก FeatureVector จาก EigenVector ทุกตัว เราจะได้แบบนี้


แต่ตามตัวอย่าง เราจะทำการเลือกเพียงแค่ 1 มิติเท่านั้น หากลองเอามาพร็อตเป็นกราฟ ก็จะได้ ตามกราฟข้างล่าง

ข้อสังเกตคือ เราปรับมิติที่ 2 ให้เป็น 0 หมดทุกตัว

6.) สร้างข้อมูลชุดใหม่ในมิติของ EigenVectors
คือขั้นตอนสุดท้ายของกระบวนการ PCA เราจะทำการแมบค่าข้อมูลเดิม กับฟีเจอร์ที่เราเลือกไว้ แล้วเราก็จะได้ข้อมูลใหม่ สังเกตว่าตอนแรกเป็น 10x2 มิติ แต่พอเปลี่ยนด้วยกระบวนการนี้ ก็จะเหลือแค่ 10x1 มิติ เท่านั้น

FinalData=DataAdjust \cdotp FeatureVectors

7.) แสดงข้อมูลชุดใหม่ในมิติที่น้อยลง
reconstructedData=finalData \cdot featureVector^T
reconstructedDataAdjust = reconstructedData + means


และถ้าเราลองพร็อตทั้งข้อมูลเดิม ข้อมูลที่ทำการลดมิติ และ Eigent Vector ทั้งหมดก็จะได้


สำหรับ Python ไฟล์ในโพสต์นี้ตามนี้ครับ

ตัวอย่างการวิเคราะห์กราฟแบบสามิติโดยใช้เทคนิค PCA

ตัวอย่างข้อมูล 3 มิติที่พร็อตโดยใช้ matplotlib.pyplot

3D Graph3D Graph
3D Graph3D Graph
3D GraphPCA


References:
https://www.investopedia.com/articles/basics/04/050704.asp
https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab
http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf
https://georgemdallas.wordpress.com/2013/10/30/principal-component-analysis-4-dummies-eigenvectors-eigenvalues-and-dimension-reduction/
https://www.youtube.com/watch?v=ZqXnPcyIAL8
https://www.youtube.com/watch?v=kw9R0nD69OU
https://www.youtube.com/watch?v=rng04VJxUt4

Comments

Popular posts from this blog

Probability (Part 1)

ประวัติ Deep Learning