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 các 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 machine learning (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. Kỹ thuật này đóng vai trò như một phương pháp dimensionality reduction, chuyển đổi các tập dữ liệu lớn với nhiều biến số thành một tập hợp "các thành phần chính" nhỏ hơn và dễ quản lý hơn. Bằng cách xác định các 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ô hình quan trọng. Quy trình này là một bước quan trọng trong việc data preprocessing 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.
Link to this sectionCách thức hoạt động của PCA#
Về cốt lõi, PCA là một kỹ thuật biến đổi tuyến tính giúp sắp xếp 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ư các giá trị pixel trong một hình ảnh hoặc các chỉ số cảm biến trong mạng Internet of Things (IoT)—các biến số thường chồng chéo 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) giúp tối đa hóa phương sai một cách liên tiếp. 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 (trong khi vẫn vuông góc với thành phần đầu tiên), và cứ tiếp tục như vậy.
Bằng cách chỉ giữ lại một vài thành phần hàng đầu và loại bỏ phần còn lại, các kỹ sư có thể đạt được khả năng nén dữ liệu đáng kể. Điều này giúp giảm thiểu curse of dimensionality, một hiện tượng mà hiệu suất predictive modeling bị 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 khả dụng.
Link to this sectionCá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 AI development lifecycle, từ làm sạch dữ liệu đến trực quan hóa các thành phần bên trong mô hình.
- Trực quan hóa các Image Embeddings: Trong các tác vụ computer vision (CV) nâng cao, các mô hình như YOLO26 tạo ra các embeddings nhiều chiều để biểu diễn hình ả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 các embeddings này lên một biểu đồ 2D, cho phép họ trực quan hóa khả năng phân tách các lớp khác nhau của mô hình, 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 autonomous vehicle.
- Tiền xử lý cho việc 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 để thực hiện anomaly detection. 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, bất kỳ giao dịch hoặc gói tin mạng nào không thể được tái cấu trúc tốt bởi các thành phần này sẽ bị gắn cờ là ngoại lệ. Điều này rất hiệu quả để phát hiện gian lận hoặc adversarial attacks trong các luồng dữ liệu thời gian thực.
Link to this sectionPCA so với t-SNE và Autoencoders#
Mặc dù PCA là một công cụ tiêu chuẩn cho feature extraction, việc phân biệt nó với các kỹ thuật giảm chiều khác là rất hữu ích:
- t-SNE (t-Distributed Stochastic Neighbor Embedding): PCA là một phương pháp tuyến tính giúp 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 tính vượt trội trong việc bảo toàn các cấu trúc lân cận cục bộ, làm cho nó trở nên tốt hơn để trực quan hóa các cụm dữ liệu riêng biệt nhưng đòi hỏi tài nguyên tính toán cao hơn.
- Autoencoders: Đây là các neural networks được huấn luyện để nén và tái cấu trúc dữ liệu. Không giống như PCA, autoencoders có thể học các ánh xạ phi tuyến tính phức tạp. Tuy nhiên, chúng đòi hỏi nhiều training data và tài nguyên tính toán hơn đáng kể để huấn luyện hiệu quả.
Link to this sectionVí dụ với Python: Nén các đặc trưng#
Ví dụ sau đây minh họa cách sử dụng scikit-learn để giảm 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 mô hình thị giác máy tính trước khi lưu trữ nó trong một vector database hoặc sử dụng nó 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)Việc tích hợp PCA vào các pipeline trên Ultralytics Platform có thể giúp tối ưu hóa model training bằng cách giảm độ phức tạp của dữ liệu đầu vào, dẫn đến các thử nghiệm nhanh hơn và các giải pháp AI mạnh mẽ hơn.






