Теоретическая и практическая часть анализа главных компонентов с использованием Python.

Table of Contents
1. Introduction
2. Principal Component Analysis (PCA)
3. Theory
3.1. Calculating PCA
3.1.1. Rescaling (Standardization)
3.1.2. Covariance Matrix
3.1.3. Eigenvalues and Eigenvectors
3.1.4. Sorting in Descent Order
3.2. Is PCA one of the feature extraction&feature selection methods?
4. Implementation
4.1. Traditional Machine Learning Approaches
4.2. Deep Learning Approaches
5. PCA Types
5.1. Kernel PCA
5.2. Sparse PCA
5.3. Randomized PCA
5.4. Incremental PCA

1. Введение

В этой статье рассматриваются определение PCA, реализация Python теоретической части PCA без библиотеки Sklearn, разница между PCA и выбором функций и извлечением функций, реализация машинного обучения и глубокого обучения, а также объясняются типы PCA на примере.

2. СПС

Анализ главных компонентов - очень полезный метод, основанный на математике и статистике, который снижает размерность за счет оценки набора данных с разных сторон. Его задача в машинном обучении - уменьшить размерность входных данных в наборе данных и способствовать обучению с помощью алгоритма или путем группировки набора данных в соответствии с функциями в неконтролируемом подходе. Этот процесс уменьшения размерности является результатом различных математических операций. Это проиллюстрировано 2D набором данных (x, y) с двумя объектами в координатной плоскости. Классификация набора данных становится намного проще, когда мы преобразуем его в 1D с помощью PCA. Теперь давайте реализуем и визуализируем уменьшение размерности с помощью PCA:

Набор данных рака (определяемый в кодировке как Cance_data) состоит из 596 образцов и 30 функций. Эти числовые функции сначала масштабируются с помощью StandardScaler, затем набор данных делается двумерным с помощью метода PCA, который импортируется с библиотекой Sklearn, а «злокачественные» и «доброкачественные» цели окрашиваются, как показано на рисунке 1. X -Ось представляет первый из 8 компонентов, а ось Y представляет второй компонент из 8 компонентов.

Как видно на рисунке 1, после процесса PCA классификация производится без использования каких-либо алгоритмов, что почти предсказуемо человеческим глазом. Однако, учитывая набор числовых данных из 30 объектов, это вообще невозможно для людей.

При просмотре значения дисперсии каждого компонента видно, что есть [0,44272026, 0,18971182, 0,09393163, 0,06602135, 0,05495768, 0,04024522, 0,02250734, 0,01588724]. Первый и второй компоненты соответствуют 63% всего набора данных. График совокупной дисперсии 8 компонентов показан на рисунке 2.

Процесс размещения данных в новых измерениях, созданных при преобразовании набора данных в другие измерения, называется проекцией. На рисунке 3 видно различие в соответствии с вновь созданными размерностями и отклонениями от иллюстрации PCA в библиотеке mglearn.

Так что же именно стоит за этим чудесным процессом, который превращает 30 измерений в 2 измерения?

2. Теория

PCA изменяет ориентацию компонентов для достижения максимальной дисперсии и, таким образом, направлен на уменьшение размерности набора данных.

Дисперсия: предоставляет информацию о распределении набора данных. Например, возьмем пример налива жидкости объемом 5 мл в бутылки. Пусть бутылки в первом случае будут 4cl, 5cl, 5cl, 5cl, 6cl, а бутылки во втором случае 2cl, 3cl, 5cl, 7cl, 8cl. Хотя среднее значение для обоих составляет 5 мл, наполнение в первом случае будет более равномерным, чем во втором случае, поскольку дисперсия распределения образцов в первом случае ниже, чем во втором случае. Это указывает на то, что раздача более успешна.

2.1. Расчет PCA

Блок-схема того, как уменьшение размерности выполняется с помощью PCA, показана на рисунке 4.

PCA создается математическими операциями без использования библиотеки sklearn, и сравниваются компоненты с библиотекой sklearn.

Результаты каждого шага показаны в таблицах шаг за шагом.

2.1.1. Изменение масштаба (стандартизация)

На первом этапе к числовому набору данных применяется масштабирование. Для этого рассчитываются среднее и стандартное значения каждой функции. Используя эти вычисления, новый набор данных создается в соответствии с формулой: x_new = (x - среднее значение (столбец x)) / std (столбец x). Для этой операции среднее значение для каждой функции = 0 и std = 1 (стандартизация с помощью StandardScaler).

2.1.2. Матрица ковариации

Ковариационная матрица создается по следующей формуле, а масштабированный набор данных полностью реконструируется в соответствии с отношениями между собой:

После вычисления всех значений ковариации в соответствии с этим уравнением получается матрица (n_features, n_features). Основная цель - переупорядочить набор данных, чтобы максимизировать дисперсию в наборе данных. Чтобы обнаружить это, необходима ковариационная матрица.

Ковариация - это мера корреляции. С помощью ковариации мы узнаем, в каком направлении две переменные изменяются вместе (в том же направлении, если положительно, и наоборот, если отрицательно). тогда мы можем использовать корреляцию, чтобы узнать степень этого изменения. ковариация измеряется в единицах. В науке о данных ковариация охватывает отношения двух переменных или наборов данных.

2.1.3. Собственные значения и собственные векторы

Значения собственных значений вычисляются из набора данных с помощью матрицы ковариации, а соответствующие собственные векторы получаются как общее количество функций.

2.1.4. Сортировка по убыванию

Собственные значения упорядочены от наивысшего к наименьшему. Сколько компонентов требуется выбрать для PCA, выбирается собственный вектор, соответствующий этому количеству собственных значений, и размерность набора данных уменьшается.

Подсказки о собственных значениях:

След матрицы x равен сумме ее собственных значений.

Определитель матрицы x равен произведению ее собственного значения.

Ранг матрицы x равен количеству ненулевых собственных значений матрицы x.

Первый и второй основные компоненты набора данных вычисляются с помощью математических уравнений, и видно, что результаты такие же, как при импорте библиотеки Sklearn.

2.2. Является ли PCA одним из методов выбора и извлечения признаков?

И да, и нет. Поскольку анализ главных компонентов снижает размерность элементов, его можно рассматривать как извлечение элементов или выбор наиболее эффективных функций, влияющих на результат. Но понимание теоретической части, упомянутой выше, прояснит это. Помимо приложения машинного обучения PCA, речь идет об интерпретации набора данных в другой системе координат. Мы можем думать об этом как о преобразовании сигналов с оси времени на ось частоты с помощью преобразования Фурье.

Числовые и непрерывные переменные повторно оцениваются с учетом их значений дисперсии, а набор данных просматривается из другого окна с помощью PCA. Хотя это технически возможно реализовать, использование PCA для категориальных переменных не даст надежных результатов. Опять же, когда вы понимаете теоретическую часть, приведенную выше, условие выполнения выбора функций с помощью PCA является логичным, поскольку наиболее важные функции, которые влияют на результат, имеют наибольшую дисперсию. Конечно, технически все еще возможно реализовать, но выбор остается на усмотрение разработчика.

3. Реализация

3.1. Традиционные подходы к машинному обучению

Было упомянуто, что PCA, который является очень полезным методом, несмотря на потерю информации, снижает уменьшение размерности и особенности значений. В наборах данных изображений каждый пиксель считается функцией. Другими словами, есть 128 * 128 * 3 = 49152 функции для изображения 128x128 RGB (3 канала). Это число довольно велико для моделей контролируемого обучения. В этом разделе к набору данных изображений кухонной посуды, состоящему из 81 чашки, 74 блюд и 78 тарелок, после расширения набора данных с увеличением изображения и уменьшением размерности с помощью PCA XGBoost применяется следующим образом:

После того, как набор данных импортирован из локальной папки, он реплицируется 15 раз с помощью определенного Imagedatagenerator, и получается 3495 образцов. В кодировке x: представляет набор данных, y: представляет метки. Затем, чтобы измерить эффективность обобщения модели из другого источника, используются 5 чашек, 5 блюд и 5 тарелок. загружены, и они также импортируются из локальной папки. После необходимой предварительной обработки данных изображения добавляются в конец x и метки в конец y. Причина добавления полученных изображений в набор обучающих и тестовых данных для оценки производительности обобщения модели заключается в том, что тот же процесс PCA применяется ко всем из них. После объединения набора данных PCA импортируется с использованием библиотеки sklearn, и 49152 пикселя (функции) уменьшаются до 300. На этом этапе снова извлекается набор данных производительности обобщения модели с 15 образцами с использованием NumPy и 3495 наборов данных разделены как набор данных поезда и набор данных теста. Вопрос здесь не в том, используется ли PCA, а только в качестве приложения. Выбор функций также можно сделать с помощью SelectPercentile. Затем, после адаптации меток к модели XGBoost, обучающий набор данных обучается, и модель оценивается с помощью тестового набора данных. Наконец, прогнозы модели были изучены с помощью 15 отдельных внешних наборов данных.

Результаты показаны на Рисунке 10.

3.2. Подходы к глубокому обучению

Кодировщик и декодер в основном предпочтительнее для обработки в глубоком обучении. Однако технически возможно применить СПС. Давайте классифицируем набор данных, подготовленный с помощью вышеуказанных операций импорта и предварительной обработки данных, а также уменьшения размерности с помощью PCA, с помощью плотных слоев.

Результаты показаны на рисунке 11:

4. Типы PCA

4.1. Ядро PCA

Хотя PCA является линейной моделью, она может не дать успешных результатов в нелинейных ситуациях. Kernel PCA - это метод, также называемый трюком с ядром, который может разделять данные нелинейным образом.

4.2. Редкий PCA

он предназначен для более простой интерпретации моделей в Sparse PCA. В то время как линейная комбинация всего набора данных является каждым главным компонентом в PCA, каждый главный компонент является линейной комбинацией подмножества набора данных в Sparse PCA.

4.3. Рандомизированный PCA

Рандомизированный PCA работает со стохастическим градиентным спуском и называется рандомизированным PCA. Ускоряет процесс PCA за счет нахождения первых x основных компонентов.

4.4. Инкрементальный PCA

Он выполняет метод PCA, сохраняя большой набор данных в памяти мини-пакетами.

Методы представлены выше в библиотеке Sklearn и могут быть легко реализованы в соответствии с набором данных.

Вернуться к руководству нажмите здесь.