Có thể sử dụng PCA kernel để lựa chọn tính năng không?


9

Có thể sử dụng phân tích thành phần chính của hạt nhân (kPCA) cho Lập chỉ mục ngữ nghĩa tiềm ẩn (LSI) giống như cách sử dụng PCA không?

Tôi thực hiện LSI trong R bằng cách sử dụng prcompchức năng PCA và trích xuất các tính năng có tải cao nhất từ ​​các thành phần đầu tiên . Bằng cách đó tôi có được các tính năng mô tả thành phần tốt nhất.k

Tôi đã cố gắng sử dụng kpcachức năng (từ kernlibgói) nhưng không thể thấy cách truy cập trọng số của các tính năng vào một thành phần chính. Đây có phải là tổng thể có thể khi sử dụng phương pháp kernel?


Bạn đã thử chức năng Princeomp chưa?
mariana nhẹ nhàng hơn

Câu trả lời:


6

Tôi nghĩ rằng câu trả lời cho câu hỏi của bạn là tiêu cực: nó là không thể.

PCA tiêu chuẩn có thể được sử dụng để lựa chọn tính năng, bởi vì mỗi thành phần chính là sự kết hợp tuyến tính của các tính năng gốc và vì vậy người ta có thể thấy các tính năng gốc nào đóng góp nhiều nhất cho các thành phần chính nổi bật nhất, xem tại đây: Sử dụng phân tích thành phần chính (PCA) cho lựa chọn tính năng .

Nhưng trong PCA kernel, mỗi thành phần chính là sự kết hợp tuyến tính của các tính năng trong không gian đích và ví dụ như nhân Gaussian (thường được sử dụng), không gian đích là vô hạn. Vì vậy, khái niệm "tải trọng" không thực sự có ý nghĩa đối với kPCA và trên thực tế, các thành phần chính của hạt nhân được tính trực tiếp, bỏ qua tính toán của các trục chính (mà PCA tiêu chuẩn được đưa ra trong R by prcomp$rotation), nhờ vào cái được gọi là lừa nhân . Xem ví dụ ở đây: Kernel PCA có kernel tuyến tính tương đương với PCA tiêu chuẩn không? để biết thêm chi tiết.

Vì vậy, không, nó là không thể. Ít nhất là không có cách dễ dàng.


2
(+1) Tôi nghĩ rằng dễ giải thích hơn với sự tương tự với các SVM, trong đó trong không gian tuyến tính, bạn có thể tính toán các trọng số mỗi biến góp phần cho siêu phẳng tách biệt (ít nhất là một thước đo quan trọng, có thể sử dụng để lựa chọn tính năng ít nhất) trong khi trong không gian hạt nhân quá phức tạp hoặc hoàn toàn không thể làm được. Logic tương tự ở đây.
Firebug

2

Ví dụ sau (lấy từ hướng dẫn tham khảo kernlab) chỉ cho bạn cách truy cập các thành phần khác nhau của PCA kernel:

data(iris)
test <- sample(1:50,20)
kpc <- kpca(~.,data=iris[-test,-5],kernel="rbfdot",kpar=list(sigma=0.2),features=2)

pcv(kpc)        # returns the principal component vectors
eig(kpc)        # returns the eigenvalues
rotated(kpc)    # returns the data projected in the (kernel) pca space
kernelf(kpc)    # returns the kernel used when kpca was performed

Điều này có trả lời câu hỏi của bạn không?


tôi đã thử xoay (kpca) nghĩ rằng nó giống như xoay vòng prcomp $; which is (lấy mẫu R help (prcomp)): "rotation: ma trận của các tải trọng biến đổi (nghĩa là một ma trận có các cột chứa các hàm riêng)." Tuy nhiên không phải vậy. Tuy nhiên, câu hỏi cũng có nghĩa rất chung chung vì tôi không chắc liệu LSA / LSI có khả thi hay không bằng cách sử dụng giảm kích thước phi tuyến tính.
dùng3683

xin lỗi, nhưng tôi có thể thiếu câu hỏi; Tại sao bạn nghĩ rằng giảm kích thước phi tuyến tính là không thể trong LSA / LSI?
Lalas

1
bởi vì không có sự kết hợp tuyến tính của các kích thước mà là một kích thước phụ thuộc vào hàm kernel. Có phải trong cài đặt này có thể xác định trọng lượng một chiều cho thành phần chính (phi tuyến tính) không?
dùng3683

2
(-1) Đây có thể là một đoạn mã hữu ích, nhưng tôi không nghĩ nó trả lời câu hỏi ban đầu nào cả.
amip
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.