Làm thế nào để chọn kernel cho PCA kernel?


12

Các cách để chọn hạt nhân nào sẽ dẫn đến sự phân tách dữ liệu tốt trong đầu ra dữ liệu cuối cùng bằng kernel PCA (phân tích thành phần chính) và các cách để tối ưu hóa các tham số của hạt nhân là gì?

Các điều khoản của Layman nếu có thể sẽ được đánh giá rất cao và các liên kết đến các bài viết giải thích các phương pháp đó cũng sẽ rất hay.


1
Khi bạn nói "phân tách dữ liệu tốt", chính xác thì bạn đang đề cập đến điều gì? Bạn nghĩ đến ứng dụng nào của kernel PCA? Nếu nó có bất cứ điều gì liên quan đến "tách dữ liệu", thì bạn có nên sử dụng một số kỹ thuật phân loại (như máy vectơ hỗ trợ kernel) thay vì kPCA không? Ngoài tất cả những điều đó, câu hỏi hay, +1. Tôi không có kinh nghiệm với lựa chọn kernel, vì vậy không thể giúp bạn ở đây.
amip nói rằng phục hồi Monica

@amoeba Nó được sử dụng để giảm kích thước phi tuyến. Kiến thức của tôi về các vectơ hỗ trợ còn một chút hạn chế vì tôi chưa bao giờ tham gia bất kỳ khóa học CS nào; Tôi là một sinh viên chưa tốt nghiệp và đã học qua các bài báo trực tuyến. Bằng cách "phân tách dữ liệu tốt", ý tôi là những gì được thể hiện qua các ví dụ được vẽ trong bài báo này . Tôi đang làm việc với Matlab và mã PCA hạt nhân của tôi đang hoạt động cho các hạt nhân đơn giản, đa hướng, xuyên tâm và sigmoid, nhưng sẽ hữu ích khi biết nên sử dụng khi nào để có kết quả tốt nhất.
Hẹ

Tôi nghĩ cách tốt nhất (duy nhất?) Để chọn kernel là sử dụng xác thực chéo, xem tại đây: Làm thế nào để chọn kernel cho SVM? Bạn chỉ cần có một thước đo hiệu suất cho kPCA của mình để sử dụng xác thực chéo. Tách lớp có thể là một biện pháp khá nếu đó là những gì bạn đang sau, nhưng lưu ý rằng PCA / kPCA không được thiết kế ở tất cả các kết quả trong một tách lớp tốt; nó chỉ đơn giản là tối đa hóa phương sai thu được.
amip nói phục hồi Monica

Tôi đã đọc một số và có thể có thể trả lời câu hỏi của bạn sau khi tất cả. Nhưng nó có thể mất một thời gian (ngày).
amip nói rằng Phục hồi Monica

@amoeba Tối đa hóa phương sai có ý nghĩa với tôi khi bạn đề cập đến nó. Tôi sẽ xem xét xác nhận chéo bản thân mình, nhưng thật tuyệt nếu bạn cũng có thể xem xét nó một chút nếu bạn có thể tìm thấy thời gian! Cảm ơn bạn.
Hẹ

Câu trả lời:


7

Cách tiếp cận chung để chọn một hạt nhân tối ưu (loại nhân hoặc tham số kernel) trong bất kỳ phương thức dựa trên kernel nào là xác thực chéo. Xem ở đây để thảo luận về lựa chọn kernel cho các máy vectơ hỗ trợ: Làm thế nào để chọn kernel cho SVM?

Ý tưởng đằng sau xác thực chéo là chúng tôi bỏ qua một số dữ liệu "thử nghiệm", chạy thuật toán của chúng tôi để phù hợp với mô hình trên dữ liệu "đào tạo" còn lại, sau đó kiểm tra xem mô hình kết quả mô tả dữ liệu thử nghiệm như thế nào (và lỗi lớn đến mức nào Là). Điều này được lặp lại đối với các dữ liệu bên trái khác nhau, các lỗi được tính trung bình để tạo thành một lỗi xác thực chéo trung bình và sau đó các thuật toán khác nhau có thể được so sánh để chọn một lỗi có năng suất thấp nhất. Trong SVM, người ta có thể sử dụng ví dụ độ chính xác phân loại (hoặc các biện pháp liên quan) làm thước đo hiệu suất mô hình. Sau đó, người ta sẽ chọn một hạt nhân mang lại sự phân loại tốt nhất cho dữ liệu thử nghiệm.

Câu hỏi sau đó trở thành: thước đo hiệu suất mô hình nào mà người ta có thể sử dụng trong kPCA? Nếu bạn muốn đạt được "phân tách dữ liệu tốt" (có thể phân tách lớp tốt), thì bằng cách nào đó bạn có thể đo nó trên dữ liệu đào tạo và sử dụng dữ liệu đó để tìm hạt nhân tốt nhất. Lưu ý, tuy nhiên, PCA / kPCA không được thiết kế để mang lại tách dữ liệu tốt (họ không mất nhãn lớp vào tài khoản tại tất cả ). Vì vậy, nói chung, người ta sẽ muốn một thước đo khác, không liên quan đến lớp, hiệu suất mô hình.

Trong PCA tiêu chuẩn, người ta có thể sử dụng lỗi tái cấu trúc làm thước đo hiệu suất trên bộ kiểm tra. Trong kernel PCA, người ta cũng có thể tính toán lỗi tái cấu trúc, nhưng vấn đề là nó không thể so sánh giữa các hạt nhân khác nhau: lỗi tái cấu trúc là khoảng cách đo trong không gian tính năng đích; và các hạt nhân khác nhau tương ứng với các không gian mục tiêu khác nhau ... Vì vậy, chúng tôi có một vấn đề.

Một cách để giải quyết vấn đề này là bằng cách nào đó tính toán lỗi tái tạo trong không gian ban đầu, không phải trong không gian đích. Rõ ràng là điểm dữ liệu thử nghiệm bên trái sống trong không gian ban đầu. Nhưng cấu trúc lại kPCA của nó sống trong [không gian con chiều thấp] của không gian đích. Tuy nhiên, điều người ta có thể làm là tìm một điểm ("hình ảnh trước") trong không gian ban đầu sẽ được ánh xạ càng gần càng tốt với điểm tái tạo này, sau đó đo khoảng cách giữa điểm kiểm tra và hình ảnh trước này như lỗi tái thiết.

Tôi sẽ không đưa ra tất cả các công thức ở đây, mà thay vào đó giới thiệu cho bạn một số giấy tờ và chỉ chèn vào đây một vài con số.

Ý tưởng về "hình ảnh trước" trong kPCA rõ ràng đã được giới thiệu trong bài viết này:

Mika và cộng sự. không thực hiện xác nhận chéo, nhưng họ cần hình ảnh trước cho mục đích khử nhiễu, xem hình này:

kPCA khử nhiễu từ Mika et al.

Điểm bị từ chối (dày) là hình ảnh trước của các phép chiếu kPCA (không có thử nghiệm và đào tạo ở đây). Việc tìm những hình ảnh trước này không phải là một nhiệm vụ tầm thường: người ta cần sử dụng độ dốc giảm dần và chức năng mất sẽ phụ thuộc vào kernel.

Và đây là một bài báo gần đây đã sử dụng hình ảnh trước cho mục đích xác thực chéo và lựa chọn kernel / siêu tham số:

Đây là thuật toán của họ:

Alam và Fukumizu

Và đây là một số kết quả (mà tôi nghĩ là khá nhiều tự giải thích):

Alam và Fukumizu


1
(+1) Có thể hữu ích khi lưu ý rằng hình ảnh trước này là tập hợp các phương tiện Fréchet / Karcher của các điểm được gán cho một cụm nhất định, không nhất thiết phải giúp bất cứ điều gì.
Dougal

@Dougal: wow, cảm ơn, tôi không biết gì về thuật ngữ này cả. Nhưng tôi không chắc là tôi hiểu. Hãy xem xét Hình đầu tiên tôi đã đăng ở đây (từ Mika và cộng sự): mỗi điểm 2d được ánh xạ tới không gian PC 1 chiều , sau đó được ánh xạ trở lại hình ảnh trước 2d . Khi bạn nói rằng hình ảnh trước là "tập hợp các phương tiện Frechet / Karcher của các điểm được gán cho một cụm nhất định", bạn có ý gì bởi cụm đó và tại sao lại có một tập hợp? x y y z zxxyyzz
amip nói rằng Phục hồi lại

Suy nghĩ thứ hai, tôi đoán tôi đã không chú ý đầy đủ trước đó; Nhận xét của tôi áp dụng cho kernel k-mean, không phải kPCA. Tiền đề chắc chắn có liên quan đến khái niệm đó, nhưng không giống nhau chút nào. Xin lỗi vì sự ồn ào. :)
Dougal
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.