Page Visits: 3657
Comments: 11

PCA

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 มาใช้งานมากกว่า คุณคิดว่าไง?

 

Created: 02 May 2008 16:31 Modified: 02 May 2008 16:31 [ translation missing: en-US, report_abuse ]

Other Posts By This Blogger

Comments

1.
KonG [IP: 131.112.182.67]
on 02 June 2008 13:07
#1074 [ translation missing: en-US, report_abuse ]

ยอดเลย อ.ปืน มีสาระมากๆ

ชอบๆ

ปล. LDA ในฟิลด์ของ NLP จะนึกว่าเป็น Latent Dirichlet Allocation นะครับ

2.
ปืน [IP: 203.185.129.242]
on 02 June 2008 15:48
#1075 [ translation missing: en-US, report_abuse ]

ถูกต้องครัย LDA เป็นตัวย่อที่ใช้กันบ่อยสำหรับ 2 techniques คือ Linear Discriminant Analysis และ Latent Dirichlet Allocation วันหลังจะมา review เท่าที่เข้าใจ

3.
suleeporn [IP: 58.147.85.2]
on 24 December 2008 16:49
#1723 [ translation missing: en-US, report_abuse ]

ได้อ่านสาระที่อาจารย์เขียนแล้วสนใจมากๆค่ะ

ตอนนี้กำลังศึกษาเรื่องเกี่ยวกับ Pattern Recognition

image retrieval ฟังก์ชั่นการตัดสินใจ

แต่ยังไม่ค่อยได้เรื่องเท่าไหร่เพราะติดขัดเรื่องภาษา

เอกสารมีเยอะแต่เป็นอังกฤษ อยากได้ภาษาไทยจังเลยค่ะ

4.
sakurajung [IP: 119.42.101.180]
on 26 January 2010 23:10
#3626 [ translation missing: en-US, report_abuse ]

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

ถ้ามีตัวอยากประกอบด้วยก็ดีนะค่ะ

ช่วยหน่อยนะค่ะ

5.

PCA จัดกลุ่มไม่ได้ด้วยตัวมันเองนะครับที่สำคัญมันเป็น unsupervised ด้วย

แต่เป็นเหมือนประตูมิติของโดเรมอนที่เปิดจากโลกหนึ่งไปหาโลกของ Feature ที่แยกกันอยู่มากกว่าเดิม (maximize variance)

เพื่อทำหน้าที่อำนวยความสะดวกให้ Classifier สามารถแยกแยะได้ง่ายขึ้น

6.
ปืน [IP: 203.185.129.242]
on 27 January 2010 18:07
#3631 [ translation missing: en-US, report_abuse ]

ตามต้น (ดร. ปริญญา) ว่าเลยครับ

7.

ได้รับความรู้มากเลยครับ กำลังเรียนด้าน data mining อยู่พอดี

8.
prop [IP: 202.12.97.124]
on 01 April 2010 11:46
#3841 [ translation missing: en-US, report_abuse ]

factor ที่นำมาใช้ลดมิติโดย PCA จำเป็นหรือไม่คะว่า factor ดังกล่าวจะต้องเป็น factor ที่มีผลการ classified ดีอยู่แล้ว จากนั้นจึงสามารถนำมาทดลองลดมิติด้วย PCA แล้วค่อยดูว่ายังสามารถจำแนกได้ดีอยู่หรือไม่

เช่น ข้อมูลรูปภาพใบหน้า 1 ภาพ หากใช้ข้อมูลทั้งหมดในการจำแนก ก็จะสามารถบอกได้ 100% ว่าคือหน้าของใคร

เมื่อเอา PCA มาช่วยลดมิติ แล้วก็ยังสามารถบอกได้ว่าคือหน้าใคร เป็นต้น

9.
ปืน [IP: 203.185.129.242]
on 01 April 2010 13:51
#3842 [ translation missing: en-US, report_abuse ]

1. จริงอยู่ที่ผลของการทำ PCA สามารถส่งต่อไป classify ข้อมูลได้ แต่การลดมิติด้วย PCA มันคนละเรื่องกับการ classify ข้อมูลนะครับ PCA สามารถใช้กับข้อมูลอื่นในงานที่ไม่ใช่ classification ได้ด้วยครับ

2. ถ้า classify ได้ผลดีอยู่แล้วก็อาจจะไม่มีความจำเป็นที่ต้องทำ PCA ครับ ยกเว้นในบางกรณีเช่นต้องการลดเวลาในการประมวลผล

3. ถ้าอยากลดมิติเพื่อ classify ของคุณควรใช้ LDA (linear discriminant analysis) มากกว่าครับ เพราะมันถูก design มาเพื่องาน classification โดยเฉพาะ

4. สำหรับงาน face recognition, ถ้า "ข้อมูลทั้งหมด" ที่คุณพูดถึงหมายถึงค่าสีของ pixel ทุกจุดในภาพแล้ว ก็ขอเตือนหน่อยนะครับว่าการใช้ข้อมูลทั้งหมดก็ไม่สามารถบอกได้ 100% ว่าคือหน้าของใครหรอกครับ การทำ PCA ก็ไม่ได้ทำให้บอกได้ 100% เช่นกัน ประเด็นหลักคือค่าที่ได้จาก PCA มัน "มีความหมาย" มากกว่าค่าสีของ pixel ซึ่งทำให้เราสามารถอธิบายภาพใบหน้าได้ด้วยลักษณะเด่น "จำนวน" น้อยกว่า คือการทำ PCA เป็นการเปลี่ยนวิธีการ represent ข้อมูลซึ่ง "อาจจะ" และ "น่าจะ" ทำให้ recognize ได้ดีกว่า ครับ

10.
prop [IP: 202.12.97.124]
on 02 April 2010 14:48
#3847 [ translation missing: en-US, report_abuse ]

ขอบคุณสำหรับคำแนะนำค่ะ ^^

11.
dogday [IP: 203.131.212.39]
on 19 July 2010 01:44
#4218 [ translation missing: en-US, report_abuse ]

ผมไม่ได้เป็นนักสถิติโดยตรงนะครับ เป็นนักสิ่งแวดล้อม

ที่ทำงานวิจัยด้านนิเวศวิทยา ผมอ่านงานวิจัยหลายฉบับของต่างประเทศ

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

มักจะใช้ สถิติหลายตัวแปร พวก PCA และ CA เสมอๆ ผมลองศึกษาอ่านเอง และลองทำก็ทำได้นะครับ

แต่ไม่เข้าใจว่าทำไปทำไม และมันแปลความหรือตีความอย่างไรไม่เข้าใจน่ะครับ

อยากให้ช่วย แนะนำหน่อยครับ ถ้ามีตัวอย่าง หรือตำรา ภาษาไทย ดี ก็บอกด้วยนะครับ

ขอบคุณมากครับ

Comment on this Post

Name:
Email:
IP Address: 38.107.191.81
Message:  
Load Editor
Security Code:
   
  Cancel or Preview or