Есть ли смысл объединять PCA и LDA?


25

Предположим, у меня есть набор данных для контролируемой статистической задачи классификации, например, через байесовский классификатор. Этот набор данных состоит из 20 функций, и я хочу свести его к 2 функциям с помощью методов уменьшения размерности, таких как анализ основных компонентов (PCA) и / или линейный дискриминантный анализ (LDA).

Оба метода проецируют данные на меньшее подпространство объектов: с помощью PCA я бы нашел направления (компоненты), которые максимизируют дисперсию в наборе данных (без учета меток классов), а с LDA у меня были бы компоненты, которые максимизируют класс разделения.

Теперь мне интересно, если, как и почему эти методы могут быть объединены и имеет ли это смысл.

Например:

  1. преобразование набора данных через PCA и проецирование его на новое двумерное подпространство
  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 - размерность вашего пространства, т. Е. Количество признаков / переменных), то Σ WΣW1ΣBΣWΣBNNΣW будет единичным и, следовательно, не может быть инвертировано. В этом случае просто нет возможности напрямую выполнить LDA, но если сначала применить PCA, он будет работать. @ Аарон сделал это замечание в комментариях к своему ответу, и я согласен с этим (но не согласен с его ответом в целом, как вы увидите сейчас).

Однако это только часть проблемы. Более общая картина заключается в том, что LDA очень легко переписывает данные. Обратите внимание, что ковариационная матрица внутри класса инвертируется в вычислениях LDA; для многомерных матриц инверсия является действительно чувствительной операцией, которая может быть надежно выполнена только в том случае, если оценка действительно хорошая. Но в больших измерениях N 1 действительно трудно получить точную оценку Σ W , и на практике часто приходится иметь гораздо больше, чем N точек данных, чтобы начать надеяться, что оценка хорошая. В противном случае Σ WΣWN1ΣWNΣW будет почти единичным (т. е. некоторые собственные значения будут очень низкими), и это приведет к переобучению, то есть почти идеальному разделению классов на тренировочные данные с вероятностью выполнения тестовых данных.

Чтобы решить эту проблему, нужно упорядочить проблему. Один из способов сделать это - сначала использовать PCA для уменьшения размерности. Существуют и другие, возможно, лучшие, например, метод регуляризованного LDA (rLDA), который просто использует с небольшим λ вместо Σ W (это называется оценкой усадки ), но сначала сделать 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 НЕ приведёт вас к 1-мерному измерению, если вы не захотите. Это зависит от того, сколько собственных векторов вы хотите сохранить после сортировки собственных значений путем уменьшения значений. Может быть, я что-то здесь упускаю ... но я не упомянул количество классов. Давайте предположим, что у нас есть 3 класса с 20 объектами в каждом, и я хочу спроецировать их на трехмерное подпространство.

1
Единственная причина сначала сделать PCA - это если ковариационная матрица внутри класса является единственной. Если у вас есть 20 функций и три класса, то он не будет единичным, поэтому сначала не делайте PCA.
Аарон

4
assume we have 3 classes, @SebastianRaschka: Тогда LDA позволит вам максимально 2 дискриминантных функций. Число собственных значений в LDA составляет минимум (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.