Quali sono i vantaggi del kernel PCA rispetto al PCA standard?


18

Voglio implementare un algoritmo in un documento che utilizza il kernel SVD per scomporre una matrice di dati. Quindi ho letto materiale sui metodi del kernel e sul kernel PCA ecc. Ma mi è ancora molto oscuro soprattutto quando si tratta di dettagli matematici, e ho alcune domande.

  1. Perché i metodi del kernel? Oppure, quali sono i vantaggi dei metodi del kernel? Qual è lo scopo intuitivo?

    Suppone che uno spazio dimensionale molto più elevato sia più realistico nei problemi del mondo reale e in grado di rivelare le relazioni non lineari nei dati, rispetto ai metodi non kernel? Secondo i materiali, i metodi del kernel proiettano i dati su uno spazio di caratteristiche ad alta dimensione, ma non devono calcolare esplicitamente il nuovo spazio di caratteristiche. Invece, è sufficiente calcolare solo i prodotti interni tra le immagini di tutte le coppie di punti dati nello spazio delle caratteristiche. Quindi perché proiettare su uno spazio dimensionale superiore?

  2. Al contrario, SVD riduce lo spazio delle funzionalità. Perché lo fanno in direzioni diverse? I metodi del kernel cercano una dimensione superiore, mentre SVD cerca una dimensione inferiore. Per me sembra strano combinarli. Secondo l'articolo che sto leggendo ( Symeonidis et al. 2010 ), l'introduzione del Kernel SVD anziché SVD può affrontare il problema della scarsità nei dati, migliorando i risultati.

inserisci qui la descrizione dell'immagine

Dal confronto nella figura possiamo vedere che KPCA ottiene un autovettore con varianza più elevata (autovalore) rispetto alla PCA, suppongo? Perché per la più grande differenza tra le proiezioni dei punti sull'autovettore (nuove coordinate), KPCA è un cerchio e PCA è una linea retta, quindi KPCA ottiene una varianza maggiore rispetto a PCA. Quindi significa che KPCA ottiene componenti principali più alti rispetto a PCA?


3
Più un commento che una risposta: KPCA è molto simile al clustering spettrale - in alcune impostazioni è anche lo stesso. (vedi ad esempio cirano.qc.ca/pdf/publication/2003s-19.pdf ).

Perdonami per aver risposto tardi. Sì, la tua risposta è molto illuminante.
Tyler 傲 来 国 主

Risposte:


24

PCA (come tecnica di riduzione della dimensionalità) tenta di trovare un sottospazio lineare a bassa dimensione in cui i dati sono confinati. Ma potrebbe essere che i dati siano limitati a sottospazi non lineari a bassa dimensione . Cosa succederà allora?

Dai un'occhiata a questa figura, tratta dal libro di testo "Riconoscimento di modelli e apprendimento automatico" di Bishop (Figura 12.16):

kernel PCA dal libro ML di Bishop

I punti dati qui (a sinistra) si trovano principalmente lungo una curva in 2D. Il PCA non può ridurre la dimensionalità da due a uno, poiché i punti non si trovano lungo una linea retta. Tuttavia, i dati sono "ovviamente" situati attorno a una curva non lineare unidimensionale. Quindi, mentre PCA fallisce, ci deve essere un altro modo! E infatti, il kernel PCA può trovare questa varietà non lineare e scoprire che i dati sono in realtà quasi unidimensionali.

Lo fa mappando i dati in uno spazio di dimensioni superiori. Questo può effettivamente sembrare una contraddizione (la tua domanda n. 2), ma non lo è. I dati sono mappati in uno spazio di dimensione superiore, ma poi risultano giacere su un sottospazio di dimensione inferiore di esso. Quindi aumenti la dimensionalità per poterla ridurre.

L'essenza del "trucco del kernel" è che in realtà non è necessario considerare esplicitamente lo spazio di dimensione superiore, quindi questo salto potenzialmente confuso nella dimensionalità viene eseguito interamente sotto copertura. L'idea, tuttavia, rimane la stessa.


Bella risposta. Solo una domanda di follow-up però. Hai detto che se i punti di dati non sono lineari come mostrato nella figura sopra, PCA non funzionerà e il PCA del kernel è necessario. Ma come facciamo a sapere in primo luogo se i punti di dati non sono lineari per un set di dati che ha più di 4 funzioni (il caso del mondo reale). Per visualizzare tali dati dobbiamo ridurre la dimensionalità, il che significa che finiamo per utilizzare la PCA per ridurre la dimensionalità, il che sarebbe errato poiché i dati potrebbero non essere lineari e utilizziamo la normale PCA per la visualizzazione. Quindi come si fa a sapere se i dati non sono lineari per usare il kernel PCA piuttosto che PCA
Baktaawar,

Grazie, @utente. Immagino che questo dipenda dall'applicazione di PCA / kPCA. Ad esempio, se viene applicato come una fase di preelaborazione per alcuni algoritmi di classificazione, regressione o clustering, allora si può giudicare quanto bene PCA vs. kPCA si sono comportati dalle prestazioni di questo algoritmo successivo.
ameba dice di reintegrare Monica il

1
Grazie @amoeba. Ma suppongo che ciò che volevo chiedere fosse che, come hai menzionato sopra, dobbiamo usare kPCA quando i dati non sono lineari, quindi come si fa a sapere se i dati hanno una non-linearità se no. di funzionalità è più di 3 ?. Non possiamo visualizzarlo senza raggiungere le dimensioni e quindi è come un problema con pollo e uova
Baktaawar,

2
@Baktaawar Se stai facendo l'apprendimento automatico, non visualizzare, lascia che il tuo modello lo apprenda da solo. Fondamentalmente includi un passaggio KPCA nel tuo loop di ricampionamento interno e testa i kernel come parametri, incluso il kernel lineare e qualsiasi altro che desideri / puoi permetterti di testare.
Firebug,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.