Chuyển đến nội dung chính

PCA Trong Data Science: Giảm Chiều Dữ Liệu Hiệu Quả

Tóm tắt nội dung

  • PCA (Principal Component Analysis) tìm các trục mới trong không gian dữ liệu sao cho phương sai (variance) được giữ lại nhiều nhất khi giảm số chiều.
  • Về bản chất toán học, PCA là bài toán trị riêng (eigenvalue) của ma trận hiệp phương sai (covariance matrix).
  • Các thành phần chính (principal component) luôn trực giao (orthogonal) với nhau, đảm bảo không dư thừa thông tin giữa các trục.
  • PCA chỉ nắm bắt được cấu trúc tuyến tính của dữ liệu — không phù hợp với dữ liệu có cấu trúc phi tuyến phức tạp.

Khi dữ liệu có hàng trăm hoặc hàng nghìn chiều, phần lớn các chiều đó thường mang thông tin trùng lặp hoặc nhiễu. PCA giải quyết vấn đề này bằng cách tìm ra một hệ trục tọa độ mới, trong đó chỉ vài trục đầu tiên đã nắm giữ phần lớn thông tin quan trọng của toàn bộ dữ liệu.

PCA là gì và mục tiêu của phép giảm chiều

PCA là một kỹ thuật giảm chiều dữ liệu (dimensionality reduction) không giám sát (unsupervised), hoạt động bằng cách chiếu (project) dữ liệu từ không gian gốc nhiều chiều sang một không gian mới có số chiều nhỏ hơn, sao cho lượng thông tin bị mất là ít nhất.

"Thông tin" ở đây được định lượng bằng phương sai (variance) — mức độ phân tán của dữ liệu. Trục đầu tiên mà PCA tìm ra, gọi là thành phần chính thứ nhất (first principal component - PC1), là hướng mà dữ liệu phân tán nhiều nhất. Trục thứ hai (PC2) là hướng phân tán nhiều thứ nhì, với điều kiện bắt buộc phải vuông góc (trực giao) với PC1.



Cơ sở đại số tuyến tính: từ hiệp phương sai đến trị riêng

Giả sử dữ liệu X đã được chuẩn hóa (mean-centered, tức trừ đi giá trị trung bình của từng cột), ma trận hiệp phương sai (covariance matrix) được tính:

Σ = (1/(n−1)) · Xᵀ X

Ma trận Σ có kích thước d×d (với d là số chiều dữ liệu), mỗi phần tử Σᵢⱼ thể hiện mức độ biến thiên cùng nhau (covariance) giữa chiều i và chiều j. PCA tìm các vector riêng (eigenvector) v và trị riêng (eigenvalue) λ tương ứng của Σ, thỏa phương trình đặc trưng:

Σ·v = λ·v

Mỗi vector riêng v chính là hướng của một thành phần chính, còn trị riêng λ tương ứng thể hiện chính xác lượng phương sai mà thành phần đó nắm giữ. Các vector riêng của ma trận đối xứng Σ luôn trực giao với nhau — đây là lý do toán học vì sao các thành phần chính của PCA không bao giờ tương quan (correlated) với nhau.

Sắp xếp các trị riêng theo thứ tự giảm dần λ₁ ≥ λ₂ ≥ ... ≥ λd, thành phần ứng với λ₁ chính là PC1, ứng với λ₂ là PC2, và cứ thế tiếp tục.

Tỷ lệ phương sai giải thích (Explained Variance Ratio)

Để biết nên giữ lại bao nhiêu thành phần chính, người ta tính tỷ lệ phương sai mà mỗi thành phần giải thích được so với tổng phương sai:

Tỷ lệ giải thích của PCₖ = λₖ / (Σᵢ₌₁ᵈ λᵢ)

Trong thực hành, người ta thường chọn số lượng thành phần chính nhỏ nhất sao cho tổng tỷ lệ phương sai tích lũy (cumulative explained variance) đạt một ngưỡng đủ lớn, ví dụ 90% hoặc 95%, tùy vào yêu cầu bài toán và mức độ đánh đổi giữa nén dữ liệu và giữ thông tin.

Quy trình PCA: input → xử lý → output

  • Input: ma trận dữ liệu X kích thước n×d (n mẫu, d đặc trưng/feature).
  • Bước 1 — Chuẩn hóa: trừ trung bình từng cột (mean-centering), và thường chia thêm cho độ lệch chuẩn (standardization) nếu các đặc trưng có đơn vị đo khác nhau.
  • Bước 2 — Tính ma trận hiệp phương sai: Σ = XᵀX/(n−1).
  • Bước 3 — Phân rã trị riêng: tìm eigenvector và eigenvalue của Σ (hoặc dùng Singular Value Decomposition - SVD để ổn định số học hơn).
  • Bước 4 — Chọn k thành phần chính có trị riêng lớn nhất, ghép thành ma trận chiếu W kích thước d×k.
  • Output: dữ liệu mới Z = X·W, kích thước n×k, với k < d.

Minh họa trực quan: PCA trên dữ liệu 2 chiều

Ví dụ dễ hình dung nhất: một tập dữ liệu 2 chiều có dạng elip kéo dài theo một hướng chéo. PCA sẽ tìm ra trục PC1 trùng với hướng kéo dài đó (phương sai lớn nhất), còn PC2 vuông góc với PC1 (phương sai nhỏ hơn nhiều). Nếu chỉ giữ lại PC1, dữ liệu 2 chiều được nén thành 1 chiều nhưng vẫn giữ được phần lớn cấu trúc quan trọng.

PC1 (phương sai lớn nhất) PC2 (vuông góc PC1) Các điểm dữ liệu phân tán chủ yếu dọc theo hướng PC1

Cài đặt PCA bằng Python

Đoạn code dưới đây thực hiện PCA trên bộ dữ liệu Iris kinh điển, giảm từ 4 chiều xuống 2 chiều để trực quan hóa:



from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

# Tải dữ liệu, X có 4 đặc trưng (chiều dài/rộng đài hoa, cánh hoa)
data = load_iris()
X = data.data

# Chuẩn hóa dữ liệu về cùng thang đo trước khi áp dụng PCA
X_scaled = StandardScaler().fit_transform(X)

# Giảm từ 4 chiều xuống 2 thành phần chính
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

print("Tỷ lệ phương sai giải thích:", pca.explained_variance_ratio_)
print("Tổng phương sai giữ lại:", sum(pca.explained_variance_ratio_))

Với bộ dữ liệu Iris, hai thành phần chính đầu tiên thường giữ lại phần lớn tổng phương sai của toàn bộ 4 đặc trưng gốc — nghĩa là có thể trực quan hóa dữ liệu 4 chiều lên biểu đồ 2 chiều mà vẫn phản ánh trung thực cấu trúc phân cụm giữa các loài hoa.

Để hiểu rõ hơn cơ chế bên trong, đoạn code sau cài đặt PCA thủ công bằng phân rã trị riêng, không dùng thư viện sklearn:



import numpy as np

# Chuẩn hóa dữ liệu: trừ trung bình từng cột
X_centered = X_scaled - np.mean(X_scaled, axis=0)

# Tính ma trận hiệp phương sai
cov_matrix = np.cov(X_centered, rowvar=False)

# Phân rã trị riêng - eigenvector và eigenvalue
eigenvalues, eigenvectors = np.linalg.eigh(cov_matrix)

# Sắp xếp giảm dần theo trị riêng
order = np.argsort(eigenvalues)[::-1]
eigenvalues = eigenvalues[order]
eigenvectors = eigenvectors[:, order]

# Chiếu dữ liệu lên 2 thành phần chính đầu tiên
W = eigenvectors[:, :2]
X_manual_pca = X_centered @ W

print("Trị riêng:", eigenvalues[:2])

Kết quả từ cách cài đặt thủ công này sẽ khớp với kết quả của sklearn.decomposition.PCA (có thể lệch dấu do hướng vector riêng không duy nhất), qua đó chứng minh trực tiếp rằng PCA về bản chất chỉ là bài toán phân rã trị riêng của ma trận hiệp phương sai.

Ứng dụng thực tế của PCA

  • Trực quan hóa dữ liệu nhiều chiều: giảm xuống 2–3 chiều để vẽ biểu đồ scatter, quan sát cấu trúc phân cụm.
  • Nén dữ liệu và giảm nhiễu: loại bỏ các thành phần có phương sai thấp thường tương ứng với nhiễu ngẫu nhiên.
  • Tiền xử lý trước khi huấn luyện mô hình: giảm số chiều đầu vào giúp giảm nguy cơ overfitting và tăng tốc độ huấn luyện, đặc biệt với dữ liệu có nhiều đặc trưng tương quan cao.
  • Nén ảnh (image compression): áp dụng PCA lên ma trận điểm ảnh để giữ lại phần lớn thông tin thị giác với dung lượng nhỏ hơn.

Ưu điểm, hạn chế và khi nào không nên dùng PCA

Ưu điểm cốt lõi của PCA là loại bỏ tương quan (decorrelation) giữa các đặc trưng và giảm chiều dữ liệu một cách có cơ sở toán học chặt chẽ, không cần thông tin nhãn (label). Thuật toán cũng có độ phức tạp tính toán rõ ràng và ổn định nhờ các phương pháp phân rã ma trận đã được tối ưu hóa cao (như SVD).

Hạn chế lớn nhất: PCA chỉ tìm được các mối quan hệ tuyến tính giữa các đặc trưng. Nếu cấu trúc thực sự của dữ liệu là phi tuyến (ví dụ dữ liệu phân bố theo hình xoắn ốc), PCA sẽ không nắm bắt được cấu trúc đó và có thể làm mất thông tin quan trọng. Trong các trường hợp này, các kỹ thuật phi tuyến như t-SNE hoặc UMAP thường cho kết quả trực quan hóa tốt hơn, dù đánh đổi bằng việc mất đi ý nghĩa toán học tường minh của PCA.

Ngoài ra, các thành phần chính sau khi biến đổi thường khó diễn giải (interpret) trực tiếp bằng ngôn ngữ nghiệp vụ, vì mỗi PC là tổ hợp tuyến tính của tất cả đặc trưng gốc chứ không phải một đặc trưng đơn lẻ có ý nghĩa rõ ràng.

So sánh PCA với các kỹ thuật giảm chiều dễ nhầm lẫn

Kỹ thuật Loại quan hệ nắm bắt Có giám sát? Mục tiêu chính
PCA Tuyến tính Không Giữ phương sai tối đa
LDA (Linear Discriminant Analysis) Tuyến tính Có Tối đa phân tách giữa các lớp
t-SNE Phi tuyến Không Giữ cấu trúc cục bộ để trực quan hóa

Khác biệt quan trọng nhất cần ghi nhớ: PCA tối ưu để giữ phương sai tổng thể, hoàn toàn không quan tâm đến nhãn lớp, trong khi LDA tối ưu để giữ khả năng phân biệt giữa các lớp — đây là lý do PCA được xếp vào nhóm không giám sát còn LDA thuộc nhóm có giám sát.

Kết luận

PCA là công cụ giảm chiều nền tảng trong Data Science, dựa trên cơ sở toán học vững chắc là phân rã trị riêng của ma trận hiệp phương sai. Bằng cách tìm các hướng phương sai lớn nhất và đảm bảo tính trực giao giữa chúng, PCA giúp nén dữ liệu nhiều chiều mà vẫn giữ lại phần lớn thông tin quan trọng. Tuy nhiên, giới hạn tuyến tính của phương pháp này cần được cân nhắc kỹ khi dữ liệu có cấu trúc phi tuyến phức tạp.

Tài liệu tham khảo

[1] I. T. Jolliffe, Principal Component Analysis, 2nd ed. New York, NY, USA: Springer, 2002.

[2] K. Pearson, "On Lines and Planes of Closest Fit to Systems of Points in Space," Philosophical Magazine, vol. 2, no. 11, pp. 559–572, 1901.

[3] H. Hotelling, "Analysis of a Complex of Statistical Variables into Principal Components," Journal of Educational Psychology, vol. 24, no. 6, pp. 417–441, 1933.

[4] L. van der Maaten and G. Hinton, "Visualizing Data using t-SNE," Journal of Machine Learning Research, vol. 9, pp. 2579–2605, 2008.

© The CS Note · THE CS NOTE

Nội dung gốc thuộc tác giả. Vui lòng không đăng lại toàn văn khi chưa được phép, trừ trường hợp pháp luật hoặc giấy phép áp dụng cho phép. Nội dung của bên thứ ba tuân theo quyền và giấy phép tương ứng.

Nguồn gốc: PCA Trong Data Science: Giảm Chiều Dữ Liệu Hiệu Quả

Về trang chủ Về đầu bài

Bài Đăng Phổ Biến

Bài toán tháp Hà nội

Trải nghiệm Tháp Hà Nội Kéo thả đĩa hoặc chạm vào các nút bên dưới để di chuyển. Bạn phải chuyển toàn bộ đĩa sang cột ngoài cùng bên phải (Cột 3) mà không đặt đĩa to lên đĩa nhỏ. Cột 1 Cột 2 Cột 3 Điều khiển & Chế độ Số lượng đĩa 4 Tốc độ máy giải ↪ Undo ↻ Chơi lại 🤖 Máy tự giải Thống kê ván chơi Nước đã đi 0 Thời gian 00:00 Tối thiểu cần 15 Kỷ lục của bạn - Lịch sử và Nguồn gốc Truyền thuyết Bài toán Tháp Hà Nội (hay Tháp Brahma) là một trò chơi xếp hình toán học kinh điển được giới thiệu lần đầu vào năm 1883 bởi nhà toán học người Pháp Édouard L...

Bài toán phân tích cảm xúc trong văn bản

Bài toán phân tích cảm xúc (sentiment analysis) là một bài toán NLP nhằm xác định thái độ hoặc cảm xúc được thể hiện trong văn bản. Ví dụ, từ một đánh giá như “Điện thoại đẹp, chạy nhanh nhưng pin hơi yếu”, hệ thống có thể nhận biết rằng người dùng có cả nhận xét tích cực và tiêu cực. Điểm thú vị của bài toán nằm ở khoảng cách giữa cách con người hiểu ngôn ngữ và cách máy tính xử lý dữ liệu. Một hệ thống phân tích cảm xúc cần biến văn bản tự nhiên thành dữ liệu có cấu trúc, học được các mẫu ngôn ngữ từ dữ liệu huấn luyện và đưa ra dự đoán hợp lý trên những câu chưa từng gặp. 1. Bài toán phân tích cảm xúc bắt đầu từ đâu? Hãy tưởng tượng một cửa hàng trực tuyến có hàng nghìn đánh giá mỗi ngày. Con người có thể đọc từng đánh giá để biết khách hàng hài lòng hay không, nhưng việc này nhanh chóng trở nên tốn thời gian khi dữ liệu tăng lên. NLP có thể biến bài toán đó thành một bài toán phân loại. Với mỗi văn bản, hệ thống nhận vào một chuỗi ký...

KAN cho phân đoạn khối u não với bộ BraTS 2020

Kolmogorov-Arnold Network (KAN) mở ra một hướng khác với MLP truyền thống: thay vì chỉ học các trọng số vô hướng trên mỗi kết nối, KAN có thể học những hàm phi tuyến một biến trên các cạnh . Khi đưa ý tưởng này vào kiến trúc encoder-decoder như U-Net, ta có thể sử dụng convolution để giữ cấu trúc không gian của ảnh MRI và dùng KAN để thực hiện các phép biến đổi phi tuyến mạnh hơn trên representation trung gian. Một bài toán phù hợp để nghiên cứu hướng này là phân đoạn u thần kinh đệm trên BraTS 2020 . Dataset cung cấp MRI đa mô thức và yêu cầu xác định các vùng Whole Tumor (WT), Tumor Core (TC) và Enhancing Tumor (ET). Đây là bài toán 3D có sự mất cân bằng voxel lớn, hình dạng khối u rất đa dạng và ranh giới giữa các mô bệnh lý không đơn giản. Lưu ý học thuật quan trọng: U-KAN gốc được công bố cho nhiều benchmark phân đoạn ảnh y tế nhưng không báo cáo kết quả BraTS 2020. Một công trình sau đó đã mở rộng U-KAN sang 3D MRI brain tumor segmentation , nhưng đánh giá trên BraTS 2...

Tách từ trong tiếng Việt Word Segmentation

Tách từ tiếng Việt là bài toán xác định ranh giới giữa các từ trong một chuỗi văn bản. Khó khăn nằm ở chỗ khoảng trắng trong tiếng Việt thường phân cách các âm tiết , nhưng một từ hoàn chỉnh có thể gồm nhiều âm tiết như “sinh viên” , “đại học” , “công nghệ” hay “tự nhiên” . Tách từ đúng giúp các hệ thống NLP dựa trên từ biểu diễn văn bản hợp lý hơn, đặc biệt trong tìm kiếm, TF-IDF, phân loại văn bản, gán nhãn từ loại và một số mô hình ngôn ngữ tiếng Việt. Tuy nhiên, với các Transformer sử dụng tokenizer dưới mức từ như subword hoặc SentencePiece, tách từ thủ công không phải lúc nào cũng là bước bắt buộc . Việc có cần tách từ trước hay không phụ thuộc vào mô hình và pipeline cụ thể. Tóm tắt nội dung Khoảng trắng trong tiếng Việt không phải lúc nào cũng là ranh giới từ ; nhiều từ gồm hai hoặc nhiều âm tiết. Word segmentation và tokenization có liên quan nhưng không hoàn toàn đồng nghĩa. Ba hướng chính gồm dựa trên từ điển, mô hình thống kê và mô hình học sâu . Tron...

KAN là gì? Mạng Kolmogorov-Arnold khác MLP thế nào?

Kolmogorov-Arnold Network (KAN) là một kiến trúc mạng nơ-ron trong đó mỗi cạnh không chỉ chứa một trọng số vô hướng mà mang một hàm một biến có thể học được . Đây là khác biệt cốt lõi so với Multi-Layer Perceptron (MLP), nơi các cạnh chủ yếu thực hiện phép nhân với trọng số còn hàm kích hoạt thường được áp dụng tại các node. KAN được lấy cảm hứng từ định lý biểu diễn Kolmogorov-Arnold và đặc biệt đáng chú ý trong các bài toán xấp xỉ hàm, mô hình hóa khoa học và symbolic regression. Tuy nhiên, KAN không nên được hiểu là kiến trúc đã thay thế MLP trong mọi bài toán Deep Learning; khả năng biểu diễn, chi phí tính toán và mức độ phù hợp của hai kiến trúc khác nhau theo từng nhiệm vụ. Tóm tắt nội dung MLP học chủ yếu trọng số trên các cạnh , còn KAN đặt hàm một biến học được trên từng cạnh . Một KAN layer cộng kết quả của nhiều hàm cạnh để tạo activation của node tiếp theo. KAN gốc sử dụng B-spline để tham số hóa các hàm phi tuyến trên cạnh. KAN có lợi thế đáng chú ý về trực...