Чи можливо використовувати ядро ​​PCA для вибору функцій?


9

Чи можливо використовувати аналіз основних компонентів ядра (kPCA) для латентної семантичної індексації (LSI) так само, як використовується PCA?

Я виконую LSI в R за допомогою функції prcompPCA і добуваю функції з найвищими навантаженнями з перших компонентів. Цим я отримую функції, що описують компонент найкраще.k

Я спробував використати kpcaфункцію (з kernlibпакета), але не можу зрозуміти, як отримати доступ до ваги функцій до основного компонента. Чи можливо це взагалі при використанні методів ядра?


Ви спробували функцію принкомпа?
— mariana soffer

Відповіді:


6

Я думаю, що відповідь на ваше запитання негативна: це неможливо.

Стандартний PCA може бути використаний для вибору функцій, оскільки кожен головний компонент є лінійною комбінацією оригінальних функцій, і тому можна побачити, які оригінальні функції найбільше сприяють найвизначнішим головним компонентам, див. Наприклад, тут: Використання аналізу основних компонентів (PCA) для вибір функції .

Але в PCA ядра кожен головний компонент є лінійною комбінацією особливостей у цільовому просторі , а для ядра Гаусса (який часто використовується) цільовий простір є нескінченномірним. Таким чином, поняття "навантаження" насправді не має сенсу для kPCA, і фактично основні компоненти ядра обчислюються безпосередньо, минаючи обчислення основних осей (які для стандартних PCA задані в R by prcomp$rotation) взагалі завдяки тому, що відоме як хитрість ядра . Дивіться, наприклад, тут: Чи ядро ​​PCA ядра з лінійним ядром еквівалентно стандартному PCA? для отримання детальної інформації.

Так ні, це неможливо. Принаймні, простого шляху немає.


2
(+1) Я думаю, що це простіше пояснити аналогією SVM, де у лінійному просторі можна обчислити ваги кожної змінної, що сприяє розділенню гіперплана (якась міра важливості, придатна для вибору особливостей), хоча в просторах ядра це занадто складне або відверте неможливо зробити. Тут така ж логіка.
— Firebug

2

Наступний приклад (взятий із посібника з kernlab) показує вам, як отримати доступ до різних компонентів ядра PCA:

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

Чи відповідає це на ваше запитання?


я спробував повернути (kpca), думаючи, що це те саме, що і prcomp $ rotatation; який є (прийнято у формі R help (prcomp)): "обертання: матриця змінних навантажень (тобто матриця, стовпці якої містять власні вектори)." Однак це не так. Питання, однак, також має на увазі дуже загальне, тому що я не впевнений, чи можливий LSA / LSI, використовуючи нелінійне зменшення розмірності взагалі.
— user3683

вибачте, але я можу пропустити питання; Чому ви вважаєте, що нелінійне зменшення розмірності неможливо в LSA / LSI?
— Лалас

1
оскільки немає лінійної комбінації розмірів, а така, яка залежить від функції ядра. Чи можливо в цій установці визначити вагу одного розміру для (нелінійної) основної складової?
— user3683

2
(-1) Це може бути корисним фрагментом коду, але я не думаю, що він взагалі відповідає на початкове запитання.
— амеба
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.