Principal Component Analysis (PCA)
Tìm hiểu cách Phân tích thành phần chính (PCA) đơn giản hóa dữ liệu nhiều chiều cho ML. Khám phá cách sử dụng PCA để tiền xử lý dữ liệu và trực quan hóa embedding của YOLO26.
Phân tích thành phần chính (PCA) là một kỹ thuật thống kê được sử dụng rộng rãi trong học máy (ML), giúp đơn giản hóa độ phức tạp của dữ liệu nhiều chiều trong khi vẫn giữ lại những thông tin thiết yếu nhất. Đây là một phương pháp giảm chiều, biến các tập dữ liệu lớn với nhiều biến thành một tập hợp nhỏ hơn, dễ quản lý hơn gồm các "thành phần chính". Bằng cách xác định những hướng mà dữ liệu biến thiên nhiều nhất, PCA cho phép các nhà khoa học dữ liệu giảm chi phí tính toán và loại bỏ nhiễu mà không làm mất đi các mẫu quan trọng. Quy trình này là một bước then chốt trong tiền xử lý dữ liệu hiệu quả và thường được sử dụng để trực quan hóa các tập dữ liệu phức tạp trong không gian hai hoặc ba chiều.
Cách PCA hoạt động#
Về cốt lõi, PCA là một kỹ thuật biến đổi tuyến tính, tổ chức lại dữ liệu dựa trên phương sai. Trong một tập dữ liệu có nhiều đặc trưng—chẳng hạn như giá trị pixel trong ảnh hoặc dữ liệu đọc từ cảm biến trong mạng Internet vạn vật (IoT)—các biến thường chồng lấn về thông tin mà chúng truyền tải. PCA xác định các biến mới không tương quan (các thành phần chính), lần lượt tối đa hóa phương sai. Thành phần đầu tiên nắm bắt lượng biến thiên lớn nhất có thể trong dữ liệu, thành phần thứ hai nắm bắt lượng lớn tiếp theo (đồng thời vuông góc với thành phần đầu tiên), v.v.
Bằng cách chỉ giữ lại một vài thành phần đứng đầu và loại bỏ phần còn lại, người dùng có thể đạt được mức nén đáng kể. Điều này giúp giảm thiểu lời nguyền số chiều, một hiện tượng trong đó hiệu năng của mô hình dự đoán suy giảm khi số lượng đặc trưng tăng lên so với số lượng mẫu huấn luyện hiện có.
Các ứng dụng trong thực tế#
PCA rất linh hoạt và hỗ trợ nhiều giai đoạn khác nhau trong vòng đời phát triển AI, từ làm sạch dữ liệu đến trực quan hóa các thành phần bên trong model.
- Trực quan hóa embedding của ảnh: Trong các tác vụ thị giác máy tính (CV) nâng cao, các model như YOLO26 tạo ra các embedding nhiều chiều để biểu diễn ảnh. Các vector này có thể chứa 512 hoặc 1024 giá trị riêng biệt, khiến con người không thể quan sát trực tiếp. Các kỹ sư sử dụng PCA để chiếu những embedding này lên biểu đồ 2D, từ đó kiểm tra trực quan mức độ model phân tách các lớp tốt đến đâu, chẳng hạn như phân biệt "người đi bộ" với "người đi xe đạp" trong các hệ thống xe tự hành.
- Tiền xử lý cho phát hiện bất thường: Các tổ chức tài chính và công ty an ninh mạng sử dụng PCA cho phát hiện bất thường. Bằng cách mô hình hóa hành vi bình thường của một hệ thống bằng các thành phần chính, mọi giao dịch hoặc gói tin mạng không thể được tái tạo chính xác bằng các thành phần này sẽ bị đánh dấu là một điểm ngoại lệ. Phương pháp này hiệu quả trong việc phát hiện gian lận hoặc các cuộc tấn công đối nghịch trên các luồng dữ liệu theo thời gian thực.
PCA so với t-SNE và Autoencoder#
Mặc dù PCA là một công cụ tiêu chuẩn để trích xuất đặc trưng, việc phân biệt PCA với các kỹ thuật giảm chiều khác cũng rất hữu ích:
- t-SNE (Nhúng hàng xóm ngẫu nhiên phân phối t): PCA là một phương pháp tuyến tính, bảo toàn cấu trúc toàn cục và phương sai. Ngược lại, t-SNE là một kỹ thuật xác suất phi tuyến, nổi bật trong việc bảo toàn cấu trúc lân cận cục bộ, phù hợp hơn để trực quan hóa các cụm riêng biệt nhưng đòi hỏi nhiều tài nguyên tính toán hơn.
- Autoencoder: Đây là các mạng nơ-ron được huấn luyện để nén và tái tạo dữ liệu. Không giống PCA, autoencoder có thể học các ánh xạ phi tuyến phức tạp. Tuy nhiên, chúng yêu cầu nhiều dữ liệu huấn luyện và tài nguyên tính toán hơn đáng kể để có thể huấn luyện hiệu quả.
Ví dụ Python: Nén đặc trưng#
Ví dụ sau minh họa cách sử dụng scikit-learn để giảm chiều các vector đặc trưng nhiều chiều. Quy trình này mô phỏng việc nén đầu ra của một model thị giác trước khi lưu trữ trong cơ sở dữ liệu vector hoặc sử dụng cho việc phân cụm.
import numpy as np
from sklearn.decomposition import PCA
# Simulate 100 image embeddings, each with 512 dimensions (features)
embeddings = np.random.rand(100, 512)
# Initialize PCA to reduce the data to 3 principal components
pca = PCA(n_components=3)
# Fit and transform the embeddings to the lower dimension
reduced_data = pca.fit_transform(embeddings)
print(f"Original shape: {embeddings.shape}") # Output: (100, 512)
print(f"Reduced shape: {reduced_data.shape}") # Output: (100, 3)Tích hợp PCA vào các pipeline trên Ultralytics Platform có thể giúp tinh gọn quá trình huấn luyện model bằng cách giảm độ phức tạp của đầu vào, từ đó rút ngắn thời gian thử nghiệm và tạo ra các giải pháp AI mạnh mẽ hơn.









