Apa cara untuk memilih kernel apa yang akan menghasilkan pemisahan data yang baik dalam output data akhir oleh kernel PCA (analisis komponen utama), dan apa saja cara untuk mengoptimalkan parameter kernel?
Istilah awam jika memungkinkan akan sangat dihargai, dan tautan ke makalah yang menjelaskan metode seperti itu juga akan menyenangkan.
Jawaban:
Pendekatan umum untuk memilih kernel optimal (baik tipe kernel, atau parameter kernel) dalam metode berbasis kernel apa pun adalah cross-validation. Lihat di sini untuk pembahasan pemilihan kernel untuk mesin-mesin vektor pendukung: Bagaimana memilih kernel untuk SVM?
Gagasan di balik cross-validation adalah bahwa kita meninggalkan beberapa data "tes", jalankan algoritma kami agar sesuai dengan model pada data "pelatihan" yang tersisa, dan kemudian periksa seberapa baik model yang dihasilkan menggambarkan data uji (dan seberapa besar kesalahannya) adalah). Ini diulangi untuk data kiri-keluar yang berbeda, kesalahan dirata-rata untuk membentuk kesalahan lintas-rata-rata yang divalidasi, dan kemudian algoritma yang berbeda dapat dibandingkan untuk memilih satu yang menghasilkan kesalahan terendah. Dalam SVM kita dapat menggunakan misalnya akurasi klasifikasi (atau ukuran terkait) sebagai ukuran kinerja model. Maka orang akan memilih kernel yang menghasilkan klasifikasi terbaik dari data uji.
Pertanyaannya kemudian menjadi: ukuran kinerja model apa yang dapat digunakan seseorang di kPCA? Jika Anda ingin mencapai "pemisahan data yang baik" (mungkin pemisahan kelas yang baik), maka Anda dapat mengukurnya pada data pelatihan dan menggunakannya untuk menemukan kernel terbaik. Perhatikan, bagaimanapun, bahwa PCA / kPCA tidak dirancang untuk menghasilkan pemisahan data yang baik (mereka tidak memperhitungkan label kelas sama sekali ). Jadi secara umum, yang satu ingin ukuran kinerja model yang lain, tidak terkait kelas.
Dalam PCA standar seseorang dapat menggunakan kesalahan rekonstruksi sebagai ukuran kinerja pada set tes. Dalam kernel PCA kita juga dapat menghitung kesalahan rekonstruksi, tetapi masalahnya adalah bahwa itu tidak dapat dibandingkan antara kernel yang berbeda: kesalahan rekonstruksi adalah jarak yang diukur dalam ruang fitur target; dan kernel yang berbeda sesuai dengan ruang target yang berbeda ... Jadi kita punya masalah.
Salah satu cara untuk mengatasi masalah ini adalah entah bagaimana menghitung kesalahan rekonstruksi di ruang asli, bukan di ruang target. Jelas titik data uji yang ditinggalkan tinggal di ruang asli. Tetapi rekonstruksi kPCA-nya tinggal di [subruang dimensi rendah] ruang target. Apa yang bisa dilakukan seseorang adalah menemukan titik ("pra-gambar") di ruang asli yang akan dipetakan sedekat mungkin ke titik rekonstruksi ini, dan kemudian mengukur jarak antara titik uji dan gambar awal ini sebagai kesalahan rekonstruksi.
Saya tidak akan memberikan semua rumus di sini, tetapi merujuk Anda ke beberapa makalah dan hanya memasukkan beberapa angka di sini.
Gagasan "pra-gambar" di kPCA tampaknya diperkenalkan dalam makalah ini:
Mika et al. tidak melakukan cross-validation, tetapi mereka membutuhkan pra-gambar untuk tujuan de-noising, lihat gambar ini:
Poin denoised (tebal) adalah pra-gambar proyeksi kPCA (tidak ada tes dan pelatihan di sini). Ini bukan tugas sepele untuk menemukan pra-gambar ini: seseorang perlu menggunakan gradient descent, dan fungsi loss akan bergantung pada kernel.
Dan di sini adalah makalah yang sangat baru yang menggunakan pra-gambar untuk keperluan validasi silang dan pemilihan kernel / hyperparameter:
Ini adalah algoritme mereka:
Dan inilah beberapa hasil (yang menurut saya cukup jelas):
sumber