PCA กับ UMAP แตกต่างกันอย่างไร

เปรียบเทียบเทคนิคการลดมิติ 2 แบบหลัก ได้แก่ PCA (Principal Component Analysis) และ UMAP (Uniform Manifold Approximation and Projection) เพื่อช่วยวิเคราะห์ข้อดีข้อเสียและการใช้งานที่เหมาะสมกับงานต่าง ๆ ในด้านวิทยาการข้อมูล. PCA เป็นวิธีเชิงเส้นที่หาทิศทางที่มีความแปรปรวนของข้อมูลสูงสุด (principal axes) โดยผ่านการคำนวณค่า Eigenvectors และ Eigenvalues ของเมทริกซ์สัมประสิทธิ์ความแปรปรวน (covariance). UMAP เป็นวิธีที่อาศัยสมมติฐานข้อมูลกระจายบน manifold (พื้นผิวโค้งในมิติสูง) และสร้างกราฟเชื่อมโยงข้อมูลด้วยกฎใกล้เคียง (k-nearest neighbors) จากนั้นหาจุดลดมิติที่รักษาโครงสร้างข้อมูลท้องถิ่นให้ใกล้เคียงต้นฉบับ. ทั้งสองเทคนิคนี้มุ่งลดจำนวนคุณลักษณะของข้อมูลเพื่อให้ง่ายต่อการ visualization และเพิ่มประสิทธิภาพของโมเดล แต่มีจุดเด่นต่างกัน: PCA เน้นโครงสร้างแบบกว้าง (global) และง่ายต่อการตีความ แต่ผูกติดกับสมมติฐานเชิงเส้นและอ่อนไหวต่อสเกลของคุณลักษณะ ในขณะที่ UMAP สามารถจับโครงสร้างไม่เชิงเส้นในข้อมูลได้ดีกว่า (รักษาโครงสร้างทั้งท้องถิ่นและภาพรวม) แต่มีพารามิเตอร์มากและต้องปรับแต่ง.

ความเป็นมา: การลดมิติและเหตุผลในการใช้

การลดมิติ (Dimensionality Reduction) คือกระบวนการลดจำนวนตัวแปร (features) ในชุดข้อมูลที่มีมิติมากมาย เช่น ข้อมูลจากการวัดค่าสเปกตรัมของภาพ หรือข้อมูล RNA-Seq ที่มีพันรายการ โดยยังพยายามรักษาข้อมูลสำคัญไว้ให้มากที่สุด. เทคนิคเหล่านี้ช่วยให้การวิเคราะห์ข้อมูลทำได้เร็วขึ้น ลดความซับซ้อนของโมเดล ลดปัญหา overfitting และทำให้สามารถมองเห็นแพทเทิร์นของข้อมูลผ่านการลดมิติลงเหลือมิติต่ำ ๆ เพื่อการ visualization ได้ง่ายขึ้น. ในงานวิทยาศาสตร์ข้อมูล การลดมิติมักใช้เป็นการเตรียมข้อมูลเบื้องต้น (preprocessing) ก่อนการฝึกโมเดล หรือใช้สร้างภาพ 2D/3D ของข้อมูลที่ซับซ้อนเพื่อวิเคราะห์กลุ่มและโครงสร้างภายใน. ตัวอย่างเทคนิคการลดมิติประกอบด้วย PCA, t-SNE, UMAP, Autoencoder เป็นต้น.

PCA (การวิเคราะห์องค์ประกอบหลัก)

หลักการทำงาน: PCA หาทิศทางสำคัญ (principal components) โดยคำนวณเมทริกซ์สัมประสิทธิ์ความแปรปรวน (covariance matrix) ของข้อมูลที่ถูก mean-centering แล้วนำมาหา eigenvectors และ eigenvalues. แต่ละ eigenvector เป็นแกนใหม่ (principal axis) แทนทิศทางที่ข้อมูลมีความแปรปรวนสูงสุด. องค์ประกอบหลักแต่ละตัวจะเรียงตามค่าความแปรปรวนที่อธิบายได้ (explained variance) จากมากไปน้อย. การลดมิติด้วย PCA คือการฉายข้อมูลลงบนแกน (principal components) เหล่านี้เพื่อนำเสนอข้อมูลชุดใหม่ที่มีมิติน้อยกว่าเดิม โดยการเลือกจำนวน Components (n_components) ให้ครอบคลุมความแปรปรวนที่ต้องการ. ผลลัพธ์คือข้อมูลมิติ 2D/3D ที่ยังรักษาลำดับความสัมพันธ์ เชิงความแปรปรวน ของข้อมูลเดิมมากที่สุด.

ข้อดี: PCA เป็นวิธีเชิงเส้นที่คำนวณได้ง่าย (ขึ้นอยู่กับการคำนวณ SVD/EVD) และรวดเร็ว, ช่วยลดขนาดข้อมูลก่อนนำไปใช้กับโมเดลอื่น ๆ ได้ดี (ทำให้การฝึกโมเดลเร็วขึ้นและลดปัญหา overfitting), และมีค่าตัวแปรที่ตีความได้ชัดเจนเช่น weight ของ features แต่ละตัวในแต่ละ PC. นอกจากนี้ การจัดลำดับองค์ประกอบหลักตาม explained variance ทำให้เราทราบว่าการลดมิติเก็บข้อมูลสำคัญไว้เท่าใด.

ข้อจำกัด: PCA ถือว่าสมมติฐานข้อมูลกระจายเป็นแบบเชิงเส้น (linear subspace) จึงอาจไม่จับโครงสร้าง non-linear ของข้อมูลได้ดี. PCA ยังอ่อนไหวต่อค่า outliers ในข้อมูล เพราะ outliers จะมีผลกระทบอย่างมากต่อ covariance matrix. นอกจากนี้ PCA ต้องการให้คุณลักษณะมีสเกลเทียบเท่ากัน (Standardization) มิฉะนั้นคุณลักษณะที่มีช่วงค่ากว้างกว่าจะถูกให้ความสำคัญมากเกินไป. จึงมักต้องปรับมาตรฐานข้อมูลด้วย StandardScaler ก่อนใช้งาน PCA. ข้อเสียอีกอย่างคือผลลัพธ์ (principal components) มีความ ตีความยาก เพราะเป็นการรวมเชิงเส้นของตัวแปรเดิม ทำให้ไม่ชัดเจนว่าคุณลักษณะใดสำคัญที่สุด.

UMAP (Uniform Manifold Approximation and Projection)

หลักการทำงาน: UMAP เป็นเทคนิคลดมิติแบบไม่เชิงเส้น อาศัยสมมติฐานว่าข้อมูลในมิติสูงกระจายตัวบน manifold (พื้นผิวโค้งในมิติสูง) โดยพยายามรักษาโครงสร้างท้องถิ่นของข้อมูลผ่านแนวคิดจาก topological data analysis. ขั้นแรก UMAP สร้าง k-nearest neighbor graph จากข้อมูลต้นทาง แต่ละจุดข้อมูล x_i เชื่อมโยงกับจุดเพื่อนบ้าน k จุดที่ใกล้ที่สุด. ตรงนี้แปลว่า UMAP ใช้ hyperparameter คือ n_neighbors เพื่อตั้งขนาด neighborhood ที่มองเห็นรายละเอียดท้องถิ่นของข้อมูล (ค่ายิ่งเล็กเน้นโครงสร้างท้องถิ่นมาก แต่ละเอียดเกินไป; ค่ายิ่งใหญ่จะเน้นภาพรวมมากขึ้น). UMAP ยังแปลงระยะห่างระหว่างคู่จุด (distances) เป็นสมาชิกภาพ fuzzy (ค่าความน่าจะเป็นที่จุดเป็นเพื่อนบ้าน) และนำมาสร้างเป็นกราฟน้ำหนักเชิง fuzzy simplicial complex. หลังจากนั้น UMAP ค้นหาพิกัดในมิติต่ำ (เช่น 2D) ที่รักษาลักษณะ fuzzy topology ใกล้เคียงของกราฟต้นทาง โดยใช้การ optimize ออกแบบมาเฉพาะ (เช่น minimizing cross-entropy ระหว่างกราฟต้นทางและกราฟในมิติฝัง). กระบวนการนี้ใช้เทคนิค nearest-neighbor descent และ stochastic gradient descent เพื่อให้ UMAP มีประสิทธิภาพสูงและเหมาะกับข้อมูลขนาดใหญ่.

ข้อดี: UMAP สามารถรักษาความสัมพันธ์ทั้งในระดับ ท้องถิ่นและภาพรวม (preserving local and global structure) ของข้อมูลไว้ได้ดีกว่าเทคนิคบางตัว โดยจุดข้อมูลที่ใกล้กันจะยังคงใกล้กันใน embedding และกลุ่มข้อมูลจะอยู่ร่วมกันอย่างชัดเจน. จึงมักให้ผลดีในงานภาพรวม (visualization) ที่เราต้องการเห็น cluster หรือกลุ่มย่อยในข้อมูล เช่น การแยกเซลล์จาก single-cell RNA data หรือภาพถ่าย. UMAP ยังมีความเร็วและขยายตัวได้ดี (scalable) สำหรับข้อมูลจำนวนมาก เพราะอาศัยการค้นหาเพื่อนบ้านเชิงประมาณและการ optimize แบบสุ่ม.

ข้อจำกัด: UMAP มี hyperparameters หลัก เช่น n_neighbors และ min_dist ที่ต้องปรับแต่งให้เหมาะสมกับข้อมูลแต่ละประเภท ค่าเหล่านี้มีผลต่อโครงสร้างที่ได้อย่างมาก (ตัวอย่างเช่น ค่า min_dist ควบคุมว่าจุดจะถูกบีบให้ชิดกันมากน้อยเพียงใด). การเลือกค่าผิดพลาดอาจทำให้ผลลัพธ์บิดเบือนได้. UMAP ยังอ่อนไหวต่อ เสียงรบกวนและ outliers บางกรณี เนื่องจาก outliers อาจจะมีผลต่อโครงสร้างกราฟเพื่อนบ้าน จึงต้องระมัดระวังจัดการข้อมูลเสียก่อนใช้งาน. นอกจากนี้ UMAP แม้จะเร็วกว่า t-SNE หลายเท่า แต่ก็ยังมีค่าใช้จ่ายในการคำนวณสูงกว่าการใช้ PCA เพียงอย่างเดียว เพราะต้องสร้างกราฟเพื่อนบ้านและทำการ optimize ในหลายมิติ. ผลลัพธ์ที่ได้เป็นพิกัด embedding ด้วยวิธีเชิงไม่เส้น จึงไม่สามารถตีความเป็นคุณลักษณะเดิมได้โดยตรง (low interpretability).

ตารางเปรียบเทียบ PCA vs UMAP

คุณสมบัติ/เกณฑ์ PCA UMAP
วัตถุประสงค์ หาทิศทางที่ ความแปรปรวนรวม สูงสุด (maximize variance) รักษาโครงสร้าง manifold ของข้อมูล (ทั้งท้องถิ่นและ global) โดยใช้กราฟเพื่อนบ้าน
รักษาโครงสร้าง เน้นรักษา โครงสร้างภาพรวม (global structure) เช่น ทิศทางการกระจายโดยรวม รักษา โครงสร้างท้องถิ่น (local structure) เป็นหลัก (และบางส่วนของโครงสร้างรวม)
รูปลักษณ์ผลลัพธ์ทั่วไป แพร่กระจายเป็นกลุ่มเชิงเส้นมิติใหม่ (คลัสเตอร์อาจซ้อนทับกัน) มักให้กลุ่มข้อมูลแยกชัด มีคลัสเตอร์เด่น และรูปแบบไม่เป็นเส้นตรง
ทนต่อเสียงรบกวน/ข้อมูลผิดปกติ อ่อนไหวต่อ outliers มาก (outliers ดึงแกน PCA ไป) ค่อนข้างอ่อนไหวต่อ outliers และ noise (ทำให้กราฟเพื่อนบ้านเปลี่ยนไป)
อ่อนไหวต่อการตั้งค่าพารามิเตอร์ มีเพียง n_components หลัก (ไม่มีพารามิเตอร์อื่นซับซ้อน) ต้องปรับหลายพารามิเตอร์ เช่น n_neighbors, min_dist ซึ่งมีผลมากต่อผลลัพธ์
ต้องการการปรับมาตรฐานข้อมูล จำเป็นต้อง ปรับสเกล (Standardize) เพื่อให้ PC ไม่ลำเอียงที่คุณลักษณะหนึ่ง แนะนำให้ ปรับสเกล ถ้าใช้เมทริกซ์ยูคลิด เพื่อให้การวัดระยะห่างสมเหตุสมผล
ค่าใช้จ่ายเชิงคำนวณ ค่อนข้างต่ำ (สามารถใช้ SVD/SVD แบบประหยัดทรัพยากร) สูงกว่า (ต้องสร้างกราฟเพื่อนบ้านและ optimize แบบ stochastic)
งาน/กรณีใช้งานที่เหมาะสม - ลดมิติสำหรับ preprocessing
- ข้อมูลที่สัมพันธ์เชิงเส้นหรือข้อมูลเชิงสถิติทั่วไป
- ต้องการตีความ components
- การ visualization ข้อมูลเชิงซับซ้อน (เช่น cluster, manifold)
- ข้อมูลที่มีโครงสร้างไม่เชิงเส้น
- งาน clustering, exploratory analysis
ความสามารถตีความผลลัพธ์ สูง (แต่ละ PC เป็นการผสมเชิงเส้นของคุณลักษณะเดิม) ต่ำ (ไม่มีแกนหรือน้ำหนักที่ตีความเป็นคุณลักษณะได้ตรง ๆ)

แนวทางการใช้งานจริง (ตัวอย่างสถานการณ์)

  1. ภาพรวมข้อมูลเชิงวิทยาศาสตร์ (เช่น ข้อมูล gene expression ของเซลล์) – ข้อมูลมีมิติมหาศาลและอาจมีความสัมพันธ์ซับซ้อน ท้ายนี้มักต้องการ visualization และ clustering เช่น แยกประเภทเซลล์ต่าง ๆ. คำแนะนำ: ปรับสเกลและกำจัด outliers เบื้องต้น (เช่น log-transformation, StandardScaler), จากนั้นใช้ UMAP (เช่น n_neighbors=15, min_dist=0.1) เพื่อให้เห็นคลัสเตอร์ชัดเจน. ในทางกลับกัน หากเน้นวิเคราะห์รูปแบบเชิงเส้น เช่น สร้างตัวแปร PC เพื่อใช้ทำนาย ก็อาจใช้ PCA (เลือก n_components ที่อธิบายความแปรปรวน > 90%) ได้.
  2. ข้อมูลเชิงตัวเลขทั่ว ๆ ไปสำหรับโมเดล ML (เช่น ข้อมูลการเงิน ที่มีฟีเจอร์หลายตัวต่อเนื่อง) – ต้องการลดมิติเป็น preprocessing เพื่อให้โมเดลเรียนรู้ง่ายขึ้น. คำแนะนำ: ใช้ PCA โดยก่อนอื่นปรับข้อมูลให้มี mean 0 และ standard deviation 1 ด้วย StandardScaler จากนั้นเลือก n_components เช่น ครอบคลุมความแปรปรวน 90–95% หรือกำหนดจำนวน เช่น 2–10. PCA จะช่วยลดมิติรักษาแนวโน้มเชิงเส้นและลด noise เช่น multicollinearity.
  3. ข้อมูล embedding จากโมเดลหรือภาพ (เช่น BERT embedding ของข้อความ หรือ embeddings จาก convolutional network) – embedding มักกระจายตาม manifold ซับซ้อน การทำ visualization เพื่อจับกลุ่ม (เช่น กลุ่มข้อความความหมายใกล้เคียง) จะได้ผลดี. คำแนะนำ: ปรับมาตรฐานฟีเจอร์ (เช่น StandardScaler) แล้วใช้ UMAP (n_neighbors~15, min_dist~0.0–0.2) เพื่อให้จุดใกล้เคียงกันจากต้นฉบับอยู่รวมกันในผลลัพธ์ และจุดต่างกลุ่มแยกกันชัดเจน.
  4. กรณีต้องการตีความ features ในมิติใหม่ (เช่น วิเคราะห์ว่าอะไรสำคัญที่สุด) – ถ้าความต้องการใช้งานให้เน้น interpretability, การใช้ PCA จะเหมาะกว่า เพราะสามารถดูน้ำหนัก (loadings) ของแต่ละองค์ประกอบหลักได้. คำแนะนำ: ปรับสเกลข้อมูลก่อน จากนั้นรัน PCA และดูคอลัมน์ของ components_ เพื่อเห็นว่าฟีเจอร์เดิมใดมีอิทธิพลต่อ PC แรก ๆ มากที่สุด.

ตัวอย่างโค้ด (Python/Scikit-learn/UMAP)

python

Copy

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler

# ตัวอย่างข้อมูล
X, y = load_iris(return_X_y=True)

# ----- ใช้ PCA -----
# ปรับสเกลข้อมูลด้วย StandardScaler
X_scaled = StandardScaler().fit_transform(X)
from sklearn.decomposition import PCA
pca = PCA(n_components=2)          # ลดเหลือ 2 มิติ
X_pca = pca.fit_transform(X_scaled)
plt.figure(figsize=(6,5))
plt.scatter(X_pca[:,0], X_pca[:,1], c=y, cmap='viridis', edgecolor='k')
plt.title("ผลลัพธ์จาก PCA")
plt.xlabel("PC 1"); plt.ylabel("PC 2")
plt.show()

python

Copy

# ----- ใช้ UMAP -----
import umap
# ปรับสเกลข้อมูล (แนะนำสำหรับระยะห่างแบบ Euclidean)
X_scaled = StandardScaler().fit_transform(X)
# สร้างโมเดล UMAP
umap_model = umap.UMAP(n_neighbors=15, min_dist=0.1, n_components=2, random_state=42)
X_umap = umap_model.fit_transform(X_scaled)
plt.figure(figsize=(6,5))
plt.scatter(X_umap[:,0], X_umap[:,1], c=y, cmap='viridis', edgecolor='k')
plt.title("ผลลัพธ์จาก UMAP")
plt.xlabel("UMAP 1"); plt.ylabel("UMAP 2")
plt.show()

เอกสารอ้างอิง

  • McInnes, L., Healy, J., & Melville, J. (2018). UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction .
  • scikit-learn documentation: PCA ; Importance of Feature Scaling .
  • UMAP official documentation: How UMAP Works .
  • GeeksforGeeks: Introduction to Dimensionality Reduction .
  • Keboola blog: Advantages and Disadvantages of PCA .