Apakah mungkin menggunakan kernel PCA untuk pemilihan fitur?

9

Apakah mungkin untuk menggunakan analisis komponen utama kernel (kPCA) untuk Latent Semantic Indexing (LSI) dengan cara yang sama seperti PCA digunakan?

Saya melakukan LSI dalam R menggunakan prcompfungsi PCA dan mengekstrak fitur dengan memuat tertinggi dari komponen pertama . Dengan itu saya mendapatkan fitur yang menggambarkan komponen terbaik.k

Saya mencoba menggunakan kpcafungsi (dari kernlibpaket) tetapi tidak dapat melihat cara mengakses bobot fitur ke komponen utama. Apakah ini mungkin secara keseluruhan saat menggunakan metode kernel?

pengguna3683
sumber
Sudahkah Anda mencoba fungsi princomp?
mariana soffer

Jawaban:

6

Saya pikir jawaban atas pertanyaan Anda negatif: itu tidak mungkin.

PCA standar dapat digunakan untuk pemilihan fitur, karena setiap komponen utama adalah kombinasi linier dari fitur asli, sehingga orang dapat melihat fitur asli mana yang paling berkontribusi terhadap komponen utama yang paling menonjol, lihat misalnya di sini: Menggunakan analisis komponen utama (PCA) untuk pemilihan fitur .

Tetapi dalam kernel PCA setiap komponen utama adalah kombinasi linear dari fitur-fitur di ruang target , dan untuk misalnya kernel Gaussian (yang sering digunakan) ruang target adalah dimensi tak terbatas. Jadi konsep "memuat" tidak benar-benar masuk akal untuk kPCA, dan pada kenyataannya, komponen utama kernel dihitung secara langsung, melewati perhitungan sumbu utama (yang untuk PCA standar diberikan dalam R oleh prcomp$rotation) secara keseluruhan, berkat apa yang dikenal sebagai trik kernel . Lihat misalnya di sini: Apakah Kernel PCA dengan kernel linier setara dengan PCA standar? untuk lebih jelasnya.

Jadi tidak, itu tidak mungkin. Setidaknya tidak ada cara mudah.

amuba
sumber
2
(+1) Saya pikir ini lebih mudah untuk dijelaskan dengan analogi dengan SVM, di mana dalam ruang linear Anda dapat menghitung bobot setiap variabel berkontribusi pada hyperplane pemisah (agak ukuran penting, setidaknya dapat digunakan untuk pemilihan fitur) sementara di ruang kernel itu terlalu rumit atau tidak mungkin dilakukan. Logika yang sama di sini.
Firebug
2

Contoh berikut (diambil dari manual referensi kernlab) memperlihatkan kepada Anda cara mengakses berbagai komponen 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

Apakah ini menjawab pertanyaan Anda?

Lalas
sumber
Saya mencoba memutar (kpca) berpikir itu sama dengan $ rotasi prcomp; yang (diambil bentuk R help (prcomp)): "rotasi: matriks pemuatan variabel (yaitu, matriks yang kolomnya berisi vektor eigen)." Namun tidak demikian. Namun pertanyaannya juga berarti sangat umum karena saya tidak yakin apakah LSA / LSI dimungkinkan menggunakan pengurangan dimensi non-linear sama sekali.
user3683
maaf, tapi saya mungkin melewatkan pertanyaan; Mengapa Anda berpikir bahwa pengurangan dimensi non-linear tidak mungkin dilakukan dalam LSA / LSI?
Lalas
1
karena tidak ada kombinasi linear dari dimensi tetapi yang tergantung pada fungsi kernel. Apakah dalam pengaturan ini dimungkinkan untuk menentukan bobot yang dimiliki satu dimensi untuk komponen utama (non-linear)?
user3683
2
(-1) Ini mungkin potongan kode yang berguna, tapi saya rasa itu tidak menjawab pertanyaan asli sama sekali.
amoeba