Короткий зміст: PCA може бути виконаний перед LDA, щоб регулювати проблему та уникнути переналагодження.
Нагадаємо, що прогнози LDA обчислюються за допомогою ейджендекомпозиції , де Σ W і Σ B знаходяться в межах матриць коваріації і між класом. Якщо є менше N точок даних (де N - розмірність вашого простору, тобто кількість ознак / змінних), то буде сингулярним і тому не може бути інвертованим. У цьому випадку просто немає можливості виконати LDA безпосередньо, але якщо спочатку застосувати PCA, він спрацює. @Aaron зробив це зауваження у коментарях до своєї відповіді, і я згоден з цим (але не згоден з його відповіддю загалом, як ви побачите зараз).Σ−1WΣBΣWΣBNNΣW
Однак це лише частина проблеми. Більш широка картина полягає в тому, що LDA дуже легко переповнює дані. Зверніть увагу , що в межах класу ковариационная матриця інвертується в LDA розрахунках; для матриць інверсія - це дійсно чутлива операція, яку можна надійно виконати, лише якщо оцінка дійсно хороша. Але у високих розмірах дійсно важко отримати точну оцінку , і на практиці часто доводиться мати набагато більше, ніж точок даних, щоб почати сподіватися, що оцінка хороша. ІнакшеΣWN≫1ΣWNΣW буде майже сингулярним (тобто деякі власні значення будуть дуже низькими), і це спричинить надмірну відповідність, тобто майже ідеальне розділення класу на навчальних даних із шансовою ефективністю на тестових даних.
Щоб вирішити цю проблему, потрібно впорядкувати проблему. Один із способів зробити це - спочатку використовувати PCA для зменшення розмірності. Є й інші, можливо, кращі, наприклад, метод регульованого LDA (rLDA), який просто використовує з малим замість (це називається оцінювачем усадки ), але спочатку PCA - це найпростіший підхід і часто працює просто чудово.(1−λ)ΣW+λIλΣW
Ілюстрація
Ось ілюстрація проблеми надмірного розміщення. Я генерував 60 зразків на клас у 3 класах із стандартного розподілу Гаусса (середній нуль, одиниця дисперсії) у 10-, 50-, 100- та 150-мірних просторах і застосував LDA для проектування даних на 2D:
Зауважте, як мірність збільшується, класи стають все кращими та краще розділеними, тоді як насправді різниці між класами немає.
Ми можемо побачити, як PCA допомагає запобігти надмірному накладенню, якщо ми зробимо класи злегка відокремленими. Я додав 1 до першої координати першого класу, 2 до першої координати другого класу і 3 до першої координати третього класу. Тепер вони трохи відокремлені, див. Верхній лівий субпліт:
Переобладнання (верхній ряд) все ще очевидно. Але якщо я попередньо обробляю дані за допомогою PCA, завжди зберігаючи 10 розмірів (нижній рядок), накладання зникає, тоді як класи залишаються майже оптимально розділеними.
PS. Щоб запобігти непорозумінням: я не стверджую, що PCA + LDA є гарною стратегією регуляризації (навпаки, я б радив використовувати rLDA), я просто демонструю, що це можлива стратегія.
Оновлення. Дуже схожа тема раніше обговорювалася в наступних темах із цікавими та вичерпними відповідями, наданими @cbeleites:
Дивіться також це питання з кількома хорошими відповідями:
best practice
. PCA і LDA, як методи зменшення розмірності, дуже різні. Іноді люди роблять PCA до LDA, але це ризик викинути (разом із викинутими ПК) важливі дискримінаційні аспекти. Питання, які ви задаєте, насправді кілька разів на цьому сайті задавались у певній формі. Перегляньте "PCA LDA", щоб прочитати, що люди сказали на нього.