Eigendecomposition & PCA
Phân tích thành phần chính (PCA) — tìm trục chính của dữ liệu
Bạn phải mô tả cả một đám đông bằng MỘT câu duy nhất. Cách nào giữ được nhiều thông tin nhất?
PCA = tìm “góc chụp ảnh” đẹp nhất của dữ liệu
Hãy tưởng tượng bạn có một tác phẩm điêu khắc 3D và chỉ được chụp một bức ảnh 2D. Bạn chọn góc nào? Chắc chắn không phải góc trực diện (chi tiết chồng lên nhau), mà là góc bạn thấy được nhiều chiều sâu nhất. PCA làm chính xác vậy — nhưng cho dữ liệu hàng trăm chiều.
Một đám mây điểm. Mỗi điểm là một bạn sinh viên với hàng chục con số (điểm môn, giờ học, chiều cao…).
Tìm một, hai, ba 'trục' mới sao cho khi chiếu điểm xuống đó, các bạn vẫn khác biệt rõ nhất.
Vẽ được biểu đồ 2D của dữ liệu 100 chiều. Nhóm nào rõ, nhóm nào trộn, ta nhìn thấy ngay.
Hình minh họa
Sân chơi: Xoay trục, tìm PC1
Kéo chấm xanh để xoay đường thẳng qua tâm đám mây. Khi đường thẳng đi đúng hướng mà dữ liệu trải ra nhiều nhất, thanh “phương sai” sẽ gần đầy — đó là PC1.
Thuật toán PCA thực tế chạy 3 bước. Bấm “Tiếp tục” để mở từng bước:
Trung tâm hoá = đưa trọng tâm đám mây về gốc toạ độ. Tính điểm trung bình (x̄, ȳ), rồi trừ nó ra khỏi mỗi điểm. Sau bước này, đám mây vẫn có đúng hình dáng cũ, chỉ là “dọn về giữa” để các trục sau đi qua tâm.
Giống việc đặt cân nặng của bức tượng ngay tâm bàn trước khi đo các góc nghiêng của nó.
Nhìn 4 bộ dữ liệu khác nhau dưới đây. Với mỗi bộ, PC1 đi theo hướng nào? Bấm vào hướng bạn nghĩ, xem có đúng không.
Gợi ý: Dữ liệu kéo dài theo đường chéo đi lên
Dữ liệu 10 chiều có eigenvalues lần lượt: [5, 3, 1, 0.5, 0.2, ...]. PC1 giải thích khoảng bao nhiêu phần trăm phương sai?
Giải thích
Bạn đã thấy PCA hoạt động. Giờ hãy nhìn hai công thức đứng đằng sau — và hiểu chúng bằng tiếng Việt trước khi nhìn tiếng toán.
Công thức 1: Ma trận hiệp phương sai
Đọc bằng tiếng Việt:“Lấy mỗi điểm trừ đi trung bình (trung tâm hoá), rồi gom tất cả lại thành một bảng số vuông cho biết mỗi cặp đặc trưng thay đổi cùng nhau đến đâu”. Nếu Cij dương, đặc trưng i và j tăng cùng nhau. Bằng 0: chúng không liên quan. Âm: khi i tăng thì j giảm.
Chiều cao và cân nặng
Cao thường nặng hơn — chúng tăng cùng nhau.
Số giày và điểm văn
Không ảnh hưởng lẫn nhau — thay đổi độc lập.
Giờ ngủ và giờ chơi game
Ngủ nhiều → chơi ít. Một tăng thì một giảm.
Công thức 2: Phương trình vector riêng (eigenvalue)
Đọc bằng tiếng Việt: “Có những hướng đặc biệt mà ma trận C tác động vào chỉ kéo giãn, không xoay. Chúng gọi là vector riêng (eigenvector). Hệ số kéo giãn gọi là trị riêng(eigenvalue)”. Trong PCA:
- Eigenvector của C = các trục PC.
- Eigenvalue λ = lượng phương sai trục đó giữ được.
- Sắp λ từ lớn đến nhỏ → chọn vài λ đầu là đã giữ gần hết thông tin.
Khi nào dùng PCA, khi nào không?
- Muốn vẽ dữ liệu đa chiều xuống biểu đồ 2D/3D
- Các đặc trưng tương quan mạnh với nhau
- Cần nén embedding (từ 300 xuống 50 chiều)
- Loại bỏ nhiễu (trục PC cuối thường là nhiễu)
- Dữ liệu nằm trên đường cong (vòng tròn, xoắn ốc)
- Đặc trưng có đơn vị khác nhau và chưa chuẩn hoá
- Cần diễn giải rõ trục mới thành gì
- Chỉ có vài chục điểm ít chiều
- PCA trả lời câu hỏi: 'Nếu phải mô tả dữ liệu bằng ít chiều hơn, nên chọn trục nào?'
- Trục PC1 là hướng dữ liệu trải ra nhiều nhất. PC2 vuông góc với PC1, trải nhiều nhất trong phần còn lại. Cứ thế tiếp.
- Bước 1: trung tâm hoá (đưa trọng tâm về gốc). Bước 2: tìm eigenvector của ma trận hiệp phương sai. Bước 3: chiếu dữ liệu xuống các trục PC.
- Eigenvalue = lượng phương sai mỗi trục giữ. Tổng λ đầu / tổng tất cả λ = phần trăm thông tin giữ lại.
- Dùng được cho: vẽ biểu đồ dữ liệu đa chiều, nén embedding, loại nhiễu. Tránh khi dữ liệu cong (vòng tròn, xoắn ốc).
Kiểm tra hiểu biết
PCA cố gắng tìm điều gì khi đưa dữ liệu từ nhiều chiều xuống ít chiều?