Comments: 7
PCA
Hello, ไม่ได้เข้ามาเขียนซะนาน
วันนี้จะมาดูเรื่อง PCA หรือ Principal Component Analysis กัน คือว่ามีนักเรียน 2 คนแล้วที่เขียน paper ส่งมาให้ผมดูแล้วบอกมาว่า PCA มีปัญหาเพราะตั้งอยู่บนสมมติฐาน Gaussian พอถามกลับไปว่าอะไรคือปัญหาก็บอกไม่ได้ บอกว่าไป quote ตามเขามา ลองมาทบทวนกันซิว่า PCA มันคืออะไร
สมมติว่าเรามีเซตของ vector X={x1,...,xn} อยู่ PCA นั้นใช้สำหรับหาทิศทางที่ข้อมูลมีการกระจายมากที่สุด
- ทิศทางนั้นคืออะไร? มันก็คือเวคเตอร์อีกอัน สมมติว่าให้เป็น w
- การกระจายของข้อมูลตาม w คำนวนยังไง? ก็คำนวณจาก projection ของ เวคเตอร์ x1,...,xn บน w ถ้า w เป็น unit vector (||w||=1=w'w) แล้ว projection ก็คำนวณได้จาก dot product นั้นเอง
- นั่นคือ x1'w, ..., xn'w เป็น projection เหล่านี้ (ให้ x' เป็น transpose ของ x)
- เรารู้ทิศทางและข้อมูลตามทิศทางนี้แล้ว การกระจายจะคำนวณยังไง? ก็คำนวณจากค่า variance ถ้าสมมติว่า x1,...,xn นั้น center ที่ 0 แล้วค่า variance ตามทิศทาง w ก็คำนวนได้จาก
Var(w,X) = (1/n) Sum_{i=1,...,n} (xi'w)^2
= (1/n) Sum_{i=1,...,n} (w'xi) (xi'w)
= w' [(1/n) Sum_{i=1,...,n} xi xi'] w
= w' C w
เมื่อ C คือ covariance matrix
- จากทั้งหมดนี้เราสรุปได้ว่าปัญหาของ PCA นั้นเขียนได้ว่า
max_w w' C w เมื่อ w'w = 1
- Lagrangian ของปัญหาข้างบนคือ L = w'Cw - l(w'w - 1) โดยที่ l เป็น Lagrange coeff ของปัญหานี้
- เพื่อหา optimum, เราก็ set partial derivative เมื่อเทียบกับ w = 0 แล้วแก้สมการหาค่า w ซึ่งจะได้ว่า
C w = l w
ซึ่งหมายความว่า w เป็น eigenvector ของ C และ l เป็น eigenvalue ที่คู่กับมัน
- ค่า variance คือ w'Cw = w' lw = l w'w = l นั่นคือ eigenvalue l ก็คือค่า variance ตามทิศทาง w นั่นเอง
- ดังนั้น principal component หาได้จาก eigenvector ที่มีค่า eigenvalue สูงสุด
คำถาม Gaussian มันมาเกี่ยวอะไรด้วย?
คำตอบ 1 บางคนอาจจะบอกว่าเรามอง PCA เป็นแบบ probabilistic model ก็ได้นี่แล้วก็ทำ maximum likelihood เพื่อหา w โดยตั้งสมมติฐานว่า noise เป็น Gaussian ไง
ผมก็เถียงได้ว่าแล้ววิธีที่ผมมองตามข้างต้นหละ มันไม่เห็นมี Gaussian มาเกี่ยวเลยนี้ เพราะฉะนั้นความไม่เหมาะน่าจะมาจากวิธีมองปัญหาของคุณมากกว่านี่
คำตอบ 2 การที่การกระจายแบบ Gaussian หลายมิติสามารถเขียนให้อยู่ในรูปของ eigenvector นี่ไม่ได้แปลว่า PCA นั้นอิงการกระจายแบบ Gaussian เหรอ?
คำตอบก็คือไม่ ถึงข้อมูลจะกระจายแบบอื่นเช่นมีหลาย cluster ยังไงแกน principal component ก็ยังหาได้จาก eigenvector ตราบใดที่เรายังวัดการกระจายของข้อมูลด้วยค่า variance
ผมคิดว่าที่คนบอกว่าสมมติฐาน Gaussian ที่ implicite ใน PCA นั้นทำให้มันไม่เหมาะกับบางงาน นั้นดูจะไม่ถูก เพราะผมถือว่าถ้าคุณเลือก PCA มาใช้ก็แปลว่าคุณคิดว่าแกนที่มีการกระจายของข้อมูลสูงเป็นทิศทางที่น่าสนใจ ถ้า PCA มีปัญหาก็แปลว่าจริงๆแล้วทิศทางที่มีการกระจายข้อมูลมากนั้นไม่ใช่ทิศทางที่น่าสนใจ ผมยังไม่เคยเห็นปัญหาที่เราต้องการหาทิศทางที่มีการกระจายข้อมูลมากและไม่เหมาะกับ PCA
จริงๆแล้วทิศทางที่น่าสนใจนั้นขึ้นกับงาน
- ถ้าเราสนการกระจายข้อมูล ก็ใช้ PCA
- ถ้าเราสนใจการแบ่ง class ก็ใช้ LDA
- ถ้าเราสนใจ structure แปลกๆ ก็ใช้ ICA
ดังนั้นความเหมาะหรือไม่เหมาะนั้นขึ้นกับการเลือก technique มาใช้งานมากกว่า คุณคิดว่าไง?
Comments
ยอดเลย อ.ปืน มีสาระมากๆ
ชอบๆ
ปล. LDA ในฟิลด์ของ NLP จะนึกว่าเป็น Latent Dirichlet Allocation นะครับ
ถูกต้องครัย LDA เป็นตัวย่อที่ใช้กันบ่อยสำหรับ 2 techniques คือ Linear Discriminant Analysis และ Latent Dirichlet Allocation วันหลังจะมา review เท่าที่เข้าใจ
ได้อ่านสาระที่อาจารย์เขียนแล้วสนใจมากๆค่ะ
ตอนนี้กำลังศึกษาเรื่องเกี่ยวกับ Pattern Recognition
image retrieval ฟังก์ชั่นการตัดสินใจ
แต่ยังไม่ค่อยได้เรื่องเท่าไหร่เพราะติดขัดเรื่องภาษา
เอกสารมีเยอะแต่เป็นอังกฤษ อยากได้ภาษาไทยจังเลยค่ะ
อยากทราบรายละเอียดเกี่ยวกับPCA ค่ะ คือตอนนี้สามารถคำนวณหาค่าแกน PC ได้แล้ว แต่็ยังไม่เข้าใจหลักการจริงๆของPCA สักที คืออยากทราบว่าPCA สามารถจัดกลุ่มของข้อมูลได้อย่างไงค่ะ
ถ้ามีตัวอยากประกอบด้วยก็ดีนะค่ะ
ช่วยหน่อยนะค่ะ
PCA จัดกลุ่มไม่ได้ด้วยตัวมันเองนะครับที่สำคัญมันเป็น unsupervised ด้วย
แต่เป็นเหมือนประตูมิติของโดเรมอนที่เปิดจากโลกหนึ่งไปหาโลกของ Feature ที่แยกกันอยู่มากกว่าเดิม (maximize variance)
เพื่อทำหน้าที่อำนวยความสะดวกให้ Classifier สามารถแยกแยะได้ง่ายขึ้น
Other Posts By This Blogger
- Older « เมื่อมีตัวอย่างเป็นล้านๆๆๆๆๆ
- Newer » เขียน blog ไปทำไม?










