Які переваги ядра PCA перед звичайним PCA?


18

Я хочу реалізувати алгоритм у статті, яка використовує ядро ​​SVD для розкладання матриці даних. Тому я читав матеріали про методи ядра та PCA ядра тощо. Але це все ще дуже незрозуміло для мене, особливо якщо мова йде про математичні деталі, і у мене є кілька питань.

  1. Чому методи ядра? Або які переваги методів ядра? Яка інтуїтивна мета?

    Чи припускає, що набагато більший розмірний простір реалістичніший у проблемах реального світу та чи здатний розкрити нелінійні співвідношення в даних порівняно з методами, які не містять ядра? Згідно з матеріалами, ядра методів проектують дані у просторовий простір великих розмірів, але їм не потрібно чітко обчислювати новий простір функцій. Натомість досить обчислити лише внутрішні добутки між зображеннями всіх пар точок даних у просторі зображень. То чому б проектувати на простір більш високого розміру?

  2. Навпаки, SVD зменшує простір функцій. Чому вони роблять це в різних напрямках? Методи ядра шукають більш високий вимір, в той час як SVD шукає нижчий вимір. Мені здається дивно їх поєднувати. Відповідно до статті, яку я читаю ( Symeonidis et al. 2010 ), введення Kernel SVD замість SVD може вирішити проблему з обмеженим рівнем даних, покращуючи результати.

введіть тут опис зображення

З порівняння на малюнку ми бачимо, що KPCA отримує власний вектор з більшою дисперсією (власне значення), ніж PCA, я думаю? Оскільки для найбільшої різниці проекцій точок на власний вектор (нові координати), KPCA - це коло, а PCA - пряма, тому KPCA отримує більшу дисперсію, ніж PCA. Так це означає, що KPCA отримує вищі основні компоненти, ніж PCA?


3
Більше коментаря, ніж відповіді: KPCA дуже схожий на Spectral Clustering - у деяких налаштуваннях він навіть однаковий. (див., наприклад, cirano.qc.ca/pdf/publication/2003s-19.pdf ).

Вибачте за пізню відповідь. Так, ваша відповідь дуже освічуюча.
Тайлер 傲 来 国 主

Відповіді:


24

PCA (як техніка зменшення розмірності) намагається знайти низькомірний лінійний підпростір, до якого обмежуються дані. Але, можливо, дані обмежуються лише низькомірним нелінійним підпростором. Що буде тоді?

Погляньте на цей малюнок, узятий із підручника Бішопа "Розпізнавання образів та машинне навчання" (мал. 12.16):

ядро PCA з книги ML ML Bishop

Точки даних тут (зліва) розташовані здебільшого вздовж кривої в 2D. PCA не може зменшити розмірність з двох до однієї, оскільки точки не розташовані по прямій. Але все ж дані "очевидно" розташовані навколо одновимірної нелінійної кривої. Тож поки PCA виходить з ладу, повинен бути інший спосіб! І дійсно, PCA ядра може знайти це нелінійне колектор і виявити, що дані насправді майже одновимірні.

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

Суть "хитрості ядра" полягає в тому, що насправді не потрібно чітко розглядати простір більш високого розміру, тому цей потенційно заплутаний стрибок у розмірності виконується повністю під прикриттям. Однак ідея залишається такою ж.


Гарна відповідь. Хоча лише наступне питання. Ви сказали, що якщо точки даних нелінійні, як показано на малюнку вище, PCA не працюватиме, і PCA ядра потрібно. Але як ми можемо знати в першу чергу, якщо точки даних нелінійні для набору даних, який має більше 4 особливостей (реальний випадок) Для візуалізації таких даних нам потрібно зменшити розмірність, а це означає, що ми використовуємо PCA для зменшення розмірності, що було б неправильно, оскільки дані можуть бути нелінійними, і ми використовуємо звичайний PCA для візуалізації. Тоді як знати, чи нелінійні дані для використання PCA ядра, а не PCA
Baktaawar

Дякую, @user. Я думаю, це залежить від застосування PCA / kPCA. Наприклад, якщо він застосовується як крок попередньої обробки для алгоритму класифікації, регресії чи кластеризації, то можна судити про те, наскільки добре виконано PCA проти kPCA, наскільки добре працює наступний алгоритм.
амеба каже: Відновіть Моніку

1
Дякую @amoeba. Але я здогадуюсь, що я хотів запитати: так, як ви згадали вище, нам потрібно використовувати kPCA, коли дані нелінійні, то як же знати, чи є дані нелінійні, якщо ні. особливостей більше 3 ?. Ми не можемо уявити це, не досягнувши розмірів, і тоді це як проблема з куркою і яйцями
Baktaawar

2
@Baktaawar Якщо ви займаєтесь машинним навчанням, не візуалізуйте, нехай ваша модель сама вивчить це. По суті, включіть крок KPCA у свій внутрішній цикл перестановки та протестуйте ядра як параметри, включаючи лінійне ядро ​​та будь-які інші, які ви хочете / можете дозволити собі протестувати.
Firebug
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.