Предположим, у меня есть набор данных для контролируемой статистической задачи классификации, например, через байесовский классификатор. Этот набор данных состоит из 20 функций, и я хочу свести его к 2 функциям с помощью методов уменьшения размерности, таких как анализ основных компонентов (PCA) и / или линейный дискриминантный анализ (LDA).
Оба метода проецируют данные на меньшее подпространство объектов: с помощью PCA я бы нашел направления (компоненты), которые максимизируют дисперсию в наборе данных (без учета меток классов), а с LDA у меня были бы компоненты, которые максимизируют класс разделения.
Теперь мне интересно, если, как и почему эти методы могут быть объединены и имеет ли это смысл.
Например:
- преобразование набора данных через PCA и проецирование его на новое двумерное подпространство
- преобразующий (уже преобразованный в PCA) набор данных через LDA для макс. разделение в классе
или
- пропустить шаг PCA и использовать 2 верхних компонента из LDA.
или любая другая комбинация, которая имеет смысл.
источник
best practice
. PCA и LDA, как методы уменьшения размерности, очень разные. Иногда люди делают PCA до LDA, но есть риск отбросить (с отказавшимися от ПК) важные дискриминационные измерения. Вопрос, который вы задаете, на самом деле несколько раз задавался на этом сайте. Пожалуйста, найдите "PCA LDA", чтобы прочитать, что люди сказали ему.Ответы:
Резюме: PCA может быть проведен до LDA, чтобы урегулировать проблему и избежать переоснащения.
Напомним, что проекции LDA рассчитываются с помощью собственного разложения , где Σ W и Σ B - ковариационные матрицы внутри и между классами. Если существует менее N точек данных (где N - размерность вашего пространства, т. Е. Количество признаков / переменных), то Σ WΣ−1WΣB ΣW ΣB N N ΣW будет единичным и, следовательно, не может быть инвертировано. В этом случае просто нет возможности напрямую выполнить LDA, но если сначала применить PCA, он будет работать. @ Аарон сделал это замечание в комментариях к своему ответу, и я согласен с этим (но не согласен с его ответом в целом, как вы увидите сейчас).
Однако это только часть проблемы. Более общая картина заключается в том, что LDA очень легко переписывает данные. Обратите внимание, что ковариационная матрица внутри класса инвертируется в вычислениях LDA; для многомерных матриц инверсия является действительно чувствительной операцией, которая может быть надежно выполнена только в том случае, если оценка действительно хорошая. Но в больших измерениях N ≫ 1 действительно трудно получить точную оценку Σ W , и на практике часто приходится иметь гораздо больше, чем N точек данных, чтобы начать надеяться, что оценка хорошая. В противном случае Σ WΣW N≫1 ΣW N ΣW будет почти единичным (т. е. некоторые собственные значения будут очень низкими), и это приведет к переобучению, то есть почти идеальному разделению классов на тренировочные данные с вероятностью выполнения тестовых данных.
Чтобы решить эту проблему, нужно упорядочить проблему. Один из способов сделать это - сначала использовать PCA для уменьшения размерности. Существуют и другие, возможно, лучшие, например, метод регуляризованного LDA (rLDA), который просто использует с небольшим λ вместо Σ W (это называется оценкой усадки ), но сначала сделать PCA концептуально самый простой подход и часто работает просто отлично.(1−λ)ΣW+λI λ ΣW
иллюстрация
Вот иллюстрация переоснащения проблемы. Я сгенерировал 60 выборок на класс в 3 классах из стандартного гауссовского распределения (среднее ноль, единичная дисперсия) в 10-, 50-, 100- и 150-мерных пространствах и применил LDA для проецирования данных в 2D:
Обратите внимание, как с ростом размерности классы становятся лучше и лучше разделены, тогда как в действительности между классами нет никакой разницы .
Мы можем видеть, как PCA помогает предотвратить переоснащение, если мы делаем классы немного разделенными. Я добавил 1 к первой координате первого класса, 2 к первой координате второго класса и 3 к первой координате третьего класса. Теперь они немного разделены, см. Левый верхний участок:
Переоснащение (верхний ряд) все еще очевидно. Но если я предварительно обработаю данные с помощью PCA, всегда сохраняя 10 измерений (нижний ряд), перенастройка исчезнет, а классы останутся почти оптимально разделенными.
PS. Во избежание недоразумений: я не утверждаю, что PCA + LDA является хорошей стратегией регуляризации (напротив, я бы посоветовал использовать rLDA), я просто демонстрирую, что это возможная стратегия.
Обновить. Очень похожая тема была ранее обсуждена в следующих темах с интересными и исчерпывающими ответами, предоставленными @cbeleites:
Смотрите также этот вопрос с некоторыми хорошими ответами:
источник
Если у вас есть проблема с двумя классами, то LDA приведет вас к 1 измерению. Нет никаких причин делать PCA сначала.
источник
assume we have 3 classes
, @SebastianRaschka: Тогда LDA позволит вам максимально 2 дискриминантных функций. Число собственных значений в LDA составляет минимум (num_groups-1, num_features).min(num_groups-1,num_features)
взялось ...