PCA thực sự chỉ là một vòng quay. Nghiêm túc mà nói, đó là tất cả: đó là một cách thông minh để xoay dữ liệu xung quanh lên một cơ sở mới. Cơ sở này có các thuộc tính làm cho nó hữu ích như một bước tiền xử lý cho một số thủ tục.
Cơ sở là trực giao . Điều này cực kỳ hữu ích nếu các tính năng của bạn thể hiện tính đa tuyến (hai hoặc nhiều tính năng phụ thuộc tuyến tính): áp dụng PCA được đảm bảo để cung cấp cho bạn một cơ sở khi điều này không còn là vấn đề nữa. Thủ tục này được gọi là hồi quy thành phần chính
Các vectơ cơ sở có ý nghĩa đối với sự lan truyền của dữ liệu: chúng là các hàm riêng của ma trận hiệp phương sai . Thuộc tính thứ hai này làm phát sinh tiện ích nổi tiếng của PCA như là một kỹ thuật giảm kích thước: sau khi xoay dữ liệu, chiếu dữ liệu lên một tập hợp con của các vectơ cơ sở được liên kết với một phần đáng kể của tổng phương sai mang lại biểu diễn chiều thấp hơn (thường) giữ lại (thường) ( hầu hết) các thuộc tính cấu trúc (thú vị) của dữ liệu.
Vì vậy: nó là một thuật toán học tập? Đây là một loại câu hỏi triết học. Điều gì làm cho một cái gì đó một thuật toán học tập? Chắc chắn PCA không phải là thuật toán học "có giám sát" vì chúng ta có thể thực hiện nó có hoặc không có biến mục tiêu và chúng ta thường liên kết các kỹ thuật "không giám sát" với phân cụm.
Có, PCA là một thủ tục tiền xử lý. Nhưng trước khi bạn viết nó hoàn toàn không phải là "học" một cái gì đó, tôi muốn bạn xem xét những điều sau: PCA có thể được tính bằng cách lấy các hàm riêng của ma trận hiệp phương sai, nhưng đây không phải là cách nó thường được thực hiện trong thực tế. Một thủ tục tương đương về số và hiệu quả hơn về mặt tính toán là chỉ cần lấy SVD của dữ liệu. Do đó, PCA chỉ là một ứng dụng cụ thể của SVD, vì vậy, hỏi PCA có phải là thuật toán học hay không thực sự là hỏi liệu SVD có phải là thuật toán học không.
Bây giờ, mặc dù bạn có thể cảm thấy thoải mái khi viết PCA không phải là một thuật toán học tập, đây là lý do tại sao bạn nên bớt thoải mái khi làm điều tương tự với SVD: đó là một phương pháp mạnh mẽ đáng ngạc nhiên để mô hình hóa chủ đề và lọc cộng tác . Các thuộc tính của SVD làm cho nó hữu ích cho các ứng dụng này là chính xác các thuộc tính tương tự làm cho nó hữu ích cho việc giảm kích thước (ví dụ PCA).
SVD là một khái quát của quá trình eigendecro, và điều đó cũng cực kỳ mạnh mẽ ngay cả khi là một phiên bản bị hạn chế của SVD. Bạn có thể thực hiện phát hiện cộng đồng trên biểu đồ bằng cách xem xét các hàm riêng của ma trận kề, hoặc xác định xác suất trạng thái ổn định của mô hình markov bằng cách xem xét các hàm riêng của ma trận chuyển tiếp, về cơ bản cũng là cách tính toán của PageRank .
Dưới mui xe, PCA đang thực hiện một hoạt động đại số tuyến tính đơn giản. Nhưng, đây chính xác là hoạt động tương tự làm nền tảng cho rất nhiều ứng dụng mà hầu hết mọi người sẽ không đặt câu hỏi khi áp dụng nhãn "machine learning". Lớp thuật toán này được gọi là Matrix Factorization , và thậm chí mở rộng sang các kỹ thuật phức tạp như word2vec : thực sự, bạn thực sự có thể nhận được kết quả giống như word2vec bằng cách chỉ cần áp dụng PCA vào ma trận đồng phát từ . Tổng quát hóa một lần nữa, một từ khác cho kết quả của PCA là nhúng . Word2vec có lẽ là ví dụ nổi tiếng nhất về nhúng, nhưng xây dựng các nhúng (như các trung gian) cũng là một thành phần quan trọng của kiến trúc bộ giải mã-mã hóa được sử dụng trong RNNsvà GAN , vốn là điểm mấu chốt của nghiên cứu ML ngay bây giờ.
Vì vậy, trở lại câu hỏi của bạn: PCA có phải là "thuật toán học máy không?" Chà, nếu không, bạn cũng nên chuẩn bị để nói như vậy về lọc cộng tác, mô hình chủ đề, phát hiện cộng đồng, trung tâm mạng và mô hình nhúng.
Chỉ vì nó là đại số tuyến tính đơn giản không có nghĩa là nó cũng không phải là phép thuật.