Чи є сенс поєднувати PCA та LDA?


25

Припустимо, у мене є набір даних для контрольованої статистичної задачі класифікації, наприклад, через класифікатор Байєса. Цей набір даних складається з 20 функцій, і я хочу звести його до двох функцій за допомогою методів зменшення розмірності, таких як аналіз основних компонентів (PCA) та / або лінійний дискримінантний аналіз (LDA).

Обидві методи проектують дані на менший підпростір функцій: за допомогою PCA я знайшов би напрямки (компоненти), які максимізують розбіжність у наборі даних (без урахування міток класу), а з LDA я мав би компоненти, які максимізували між -розділення класу

Тепер мені цікаво, якщо, як і чому ці прийоми можна поєднувати і чи є сенс.

Наприклад:

  1. перетворення набору даних через PCA та проектування його на новий 2D-простір
  2. перетворення (вже перетвореного PCA) набору даних через LDA для макс. розмежування в класі

або

  1. пропуск кроку PCA та використання 2 найпопулярніших компонентів від LDA.

або будь-яка інша комбінація, яка має сенс.


2
Не може бути універсального best practice. PCA і LDA, як методи зменшення розмірності, дуже різні. Іноді люди роблять PCA до LDA, але це ризик викинути (разом із викинутими ПК) важливі дискримінаційні аспекти. Питання, які ви задаєте, насправді кілька разів на цьому сайті задавались у певній формі. Перегляньте "PCA LDA", щоб прочитати, що люди сказали на нього.
ttnphns

@SebastianRaschka: Мені цікаво, чи була моя відповідь тут корисною, чи у вас є додаткові запитання щодо цих питань?
Амеба каже, що поверніть Моніку

@amoeba вибачте, відповіді досі не бачив - якось воно, мабуть, проскочило крізь щілини, дякую!

Відповіді:


44

Короткий зміст: PCA може бути виконаний перед LDA, щоб регулювати проблему та уникнути переналагодження.

Нагадаємо, що прогнози LDA обчислюються за допомогою ейджендекомпозиції , де Σ W і Σ B знаходяться в межах матриць коваріації і між класом. Якщо є менше N точок даних (де N - розмірність вашого простору, тобто кількість ознак / змінних), то буде сингулярним і тому не може бути інвертованим. У цьому випадку просто немає можливості виконати LDA безпосередньо, але якщо спочатку застосувати PCA, він спрацює. @Aaron зробив це зауваження у коментарях до своєї відповіді, і я згоден з цим (але не згоден з його відповіддю загалом, як ви побачите зараз).ΣW1ΣBΣWΣBNNΣW

Однак це лише частина проблеми. Більш широка картина полягає в тому, що LDA дуже легко переповнює дані. Зверніть увагу , що в межах класу ковариационная матриця інвертується в LDA розрахунках; для матриць інверсія - це дійсно чутлива операція, яку можна надійно виконати, лише якщо оцінка дійсно хороша. Але у високих розмірах дійсно важко отримати точну оцінку , і на практиці часто доводиться мати набагато більше, ніж точок даних, щоб почати сподіватися, що оцінка хороша. ІнакшеΣWN1ΣWNΣW буде майже сингулярним (тобто деякі власні значення будуть дуже низькими), і це спричинить надмірну відповідність, тобто майже ідеальне розділення класу на навчальних даних із шансовою ефективністю на тестових даних.

Щоб вирішити цю проблему, потрібно впорядкувати проблему. Один із способів зробити це - спочатку використовувати PCA для зменшення розмірності. Є й інші, можливо, кращі, наприклад, метод регульованого LDA (rLDA), який просто використовує з малим замість (це називається оцінювачем усадки ), але спочатку PCA - це найпростіший підхід і часто працює просто чудово.(1λ)ΣW+λIλΣW

Ілюстрація

Ось ілюстрація проблеми надмірного розміщення. Я генерував 60 зразків на клас у 3 класах із стандартного розподілу Гаусса (середній нуль, одиниця дисперсії) у 10-, 50-, 100- та 150-мірних просторах і застосував LDA для проектування даних на 2D:

Переобладнання в LDA

Зауважте, як мірність збільшується, класи стають все кращими та краще розділеними, тоді як насправді різниці між класами немає.

Ми можемо побачити, як PCA допомагає запобігти надмірному накладенню, якщо ми зробимо класи злегка відокремленими. Я додав 1 до першої координати першого класу, 2 до першої координати другого класу і 3 до першої координати третього класу. Тепер вони трохи відокремлені, див. Верхній лівий субпліт:

Переобладнання LDA та регуляризація за допомогою PCA

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

PS. Щоб запобігти непорозумінням: я не стверджую, що PCA + LDA є гарною стратегією регуляризації (навпаки, я б радив використовувати rLDA), я просто демонструю, що це можлива стратегія.


Оновлення. Дуже схожа тема раніше обговорювалася в наступних темах із цікавими та вичерпними відповідями, наданими @cbeleites:

Дивіться також це питання з кількома хорошими відповідями:


Це чудова відповідь, серйозно! І хоча ви пояснюєте основну теорію, у вас є також приємне практичне пояснення, ще одна чудова відповідь для моєї довідкової колекції. Дуже дякую!

Я не розумію другого сюжету, мені здається, що класи не розділені з PCA перед LDA (нижній ряд)
PierreE

@PierreE, на другому сюжеті класи створюються такими, що вони майже не відокремлюються. Розлука крихітна. У нижньому рядку ви бачите це невелике розмежування, але вам потрібно придивитися уважно: зосередитесь на синіх та червоних класах, і ви побачите, що один зміщений вліво, а інший праворуч.
амеба каже, що повернеться до Моніки

Добре, я бачу. Я забув, що розділення класів, які ми бачимо у верхньому ряді, насправді є витонченим. Спасибі
PierreE

1

Якщо у вас є проблема двох класів, LDA зменшить вас до 1 виміру. Немає ніяких причин робити перше PCA.


1
Гм, я не дотримуюся ваших міркувань тут: я майже впевнений, що LDA НЕ зводить вас до одновимірної, якщо ви не захочете. Це залежить від того, скільки власних векторів ви хочете зберегти після сортування власних значень за зменшенням значень. Можливо, мені щось тут не вистачає ... але я не зазначив кількості занять. Припустимо, у нас є 3 класи з 20 ознаками, і я хочу спроектувати їх на 3D-простір.

1
Єдина причина зробити PCA спочатку - це те, що матриця коваріації в межах класу є сингулярною. Якщо у вас є 20 функцій і три класи, то це звичайно не буде поодиноким, тому не робіть PCA спочатку.
Аарон

4
assume we have 3 classes. @SebastianRaschka: Тоді LDA дозволить вам максимум 2 дискримінантні функції. Кількість власних значень у LDA становить min (num_groups-1, num_features).
ttnphns

@Sebastian Кількість дискримінантних функцій, які ви вибираєте у LDA, залежить від того, що ви хочете зробити з цим. Оскільки космічна трансформація, це схоже на "контрольований" PCA, і ви вибираєте стільки, скільки хочете. Як метод класифікації розділення гіперплан , гіперплан за визначенням має розмірність N-1. Я можу поставити запитання на цю тему для додаткової інформації, тому що я досі не розумію, звідки min(num_groups-1,num_features)беруться ...
Матьє

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