Я использовал Линейный Дискриминантный Анализ (LDA) из scikit-learn
библиотеки машинного обучения (Python) для уменьшения размерности, и мне было немного интересно узнать о результатах. Теперь мне интересно, что scikit-learn
делает LDA , чтобы результаты выглядели иначе, чем, например, ручной подход или LDA, выполненные в R. Было бы здорово, если бы кто-то мог дать мне некоторое представление здесь.
Что в основном больше всего беспокоит то, что scikit-plot
показывает корреляцию между двумя переменными, где должна быть корреляция 0.
Для теста я использовал набор данных Iris, и первые 2 линейных дискриминанта выглядели так:
IMG-1. LDA через scikit-Learn
Это в основном согласуется с результатами, которые я нашел в документации scikit-learn здесь.
Теперь, я прошел через LDA шаг за шагом и получил другой прогноз. Я попробовал разные подходы, чтобы выяснить, что происходит:
IMG-2. LDA на необработанных данных (без центрирования, без стандартизации)
И здесь был бы пошаговый подход, если бы я сначала стандартизировал (нормализация по z-шкале; дисперсия единиц). Я сделал то же самое только со средним центрированием, что должно привести к тому же относительному проекционному изображению (и это действительно так).
IMG-3. Пошаговое LDA после центрирования или стандартизации
IMG-4. LDA в R (настройки по умолчанию)
LDA в IMG-3, где я центрировал данные (что было бы предпочтительным подходом), выглядит также точно так же, как тот, который я нашел в Посте кем-то, кто делал LDA в R
Код для справки
Я не хотел вставлять здесь весь код, но я загрузил его как записную книжку IPython, разбитую на несколько шагов, которые я использовал (см. Ниже) для проекции LDA.
- Шаг 1: Вычисление d-мерных средних векторов
Шаг 2: Вычисление матриц рассеяния
2.1. Матрица рассеяния внутри класса вычисляется по следующему уравнению:
2.2 Матрица рассеяния между классами вычисляется по следующему уравнению: где - общее среднее.
Шаг 3. Решение обобщенной задачи на собственные значения для матрицы
3.1. Сортировка собственных векторов по убыванию собственных значений
3.2. Выбор k собственных векторов с наибольшим собственным значением. Объединение двух собственных векторов с наивысшими собственными значениями для построения нашей -мерной матрицы собственных векторов
Шаг 5: Преобразование выборок в новое подпространство