5

Tôi có một tập dữ liệu khổng lồ (32000 * 2500) mà tôi cần để đào tạo. Điều này dường như quá nhiều đối với trình phân loại của tôi, vì vậy tôi đã quyết định thực hiện một số đọc về giảm kích thước và cụ thể trong PCA.Chọn các thành phần hiển thị phương sai nhất trong PCA

Từ hiểu biết của tôi, PCA chọn dữ liệu hiện tại và thay thế chúng trên miền/thang đo khác (x, y). Những tọa độ mới này không có ý nghĩa gì cả nhưng dữ liệu được sắp xếp lại để tạo ra một biến thể tối đa một trục. Sau các hệ số mới này, tôi có thể thả cooeff có biến thể tối thiểu.

Bây giờ tôi đang cố gắng thực hiện điều này trong MatLab và đang gặp sự cố với đầu ra được cung cấp. MatLab luôn coi các hàng là các quan sát và cột là các biến. Vì vậy, inout của tôi để các chức năng pca sẽ là ma trận của tôi về kích thước (32000*2500). Điều này sẽ trả về các hệ số PCA trong một ma trận đầu ra có kích thước 2500*2500.

Sự giúp đỡ cho các nước PCA:

Mỗi cột của coeff chứa hệ số cho một thành phần chính, và các cột là theo thứ tự thành phần sai giảm dần.

Trong đầu ra này, thứ nguyên nào là quan sát dữ liệu của tôi? Tôi có nghĩa là nếu tôi phải cung cấp cho các phân loại, các hàng của coeff đại diện cho các quan sát dữ liệu của tôi hoặc bây giờ là các cột của coeff?

Và làm cách nào để loại bỏ các hệ số có biến thể ít nhất?

Trả lời

5

(Disclaimer: nó được một thời gian dài kể từ khi tôi chuyển từ MATLAB để scipy, nhưng các nguyên tắc đều giống nhau.)

Nếu bạn sử dụng svd function

[U,S,V] = svd(X) 

sau đó để giảm kích thước của X đến k, bạn sẽ nhân với các cột k đầu tiên của V. Trong MATLAB, tôi đoán đó là

X * V(:, 1: k); 

Tham khảo Elements of Statistical Learning cho lý thuyết này.

+0

Điều này là chính xác. Làm tốt lắm Ami. +1. – rayryeng

+0

@rayryeng :-) Cảm ơn bạn! –

Các vấn đề liên quan