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