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

Весь код, написанный в этом блоге, находится на моем github-https://github.com/HarshMishra2002/pca

Прежде всего, PCA — это метод извлечения признаков. Это уменьшает размерность ваших данных и спасает вас от проклятия размерности.

Согласно Википедии

PCA был изобретен в 1901 году Карлом Пирсоном, как аналог теоремы о главной оси в механике; Позже он был независимо разработан и назван Гарольдом Хотеллингом в 1930-х годах.

Это показывает, насколько стар этот метод на самом деле, но по-прежнему сегодня он является первым вариантом, когда дело доходит до извлечения признаков, особенно когда вы имеете дело с данными очень высокой размерности.

ГЕОМЕТРИЧЕСКАЯ ИНТУИЦИЯ:

Сначала нам нужно понять, как работает выбор признаков. Это полностью зависит от дисперсии данных. Например

Если мы посмотрим на приведенный выше график: мы ясно увидим, что d ›› d1, т. е. дисперсия данных по оси x больше, чем данные по оси y, поэтому мы выберем функцию, которая находится на оси x, и отбросим который находится на оси Y. Но этот метод выбора признаков, кажется, терпит неудачу, когда данные по обеим осям имеют одинаковые вариации.

например:

теперь в этом случае d = d1, поэтому дисперсия столбцов данных на каждой оси одинакова. Невозможно использовать описанную выше технику для выбора одного объекта данных и отклонения другого. Итак, вот и PCA.

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

Здесь вы можете увидеть. После поворота исходной оси мы получили новую ось, то есть основную ось 1 и основную ось 2, и теперь для новых точек данных (которые мы получили, проецируя старые на ПК) у нас есть разные варианты, т. е. d new ›› d1 new.

Теперь, когда у нас есть геометрическая интуиция, давайте посмотрим, как мы на самом деле находим эти основные компоненты, используя Python в качестве языка программирования.

Пошаговое решение с реализацией Python:

Шаг 0. Получение данных

Здесь у меня есть 3D-данные, т.е. 3 входных объекта.

Шаг 1. Масштабирование данных (среднее центрирование)

Мы масштабируем данные, т. е. приводим все столбцы к одинаковому диапазону значений. Здесь мы применим библиотекуstandardcaler от sklearn.

Шаг 2. Поиск ковариационной матрицы

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

Ковариационная матрица — это квадратная матрица, дающая ковариацию между каждой парой элементов заданного случайного вектора.

Шаг 3. Поиск собственных векторов и собственных значений

Собственные векторы — это те векторы, когда мы применяем к ним любое преобразование, изменяется только размер, а не направление.

Собственные значения являются мерой сжатия или растяжения собственного вектора после преобразования.

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

Каждый собственный вектор имеет одно собственное значение, вектор с наибольшим значением — это наш PC 1 (первый главный компонент) и т. д.

Шаг 4. Выбор ПК и соответствующее преобразование старых данных

Здесь я выберу первые два компьютера, на которых я конвертирую свои 3D-данные в 2D-данные. Затем мы преобразуем старые данные, спроецировав их на новую ось (ПК).

На этом мы заканчиваем нашу самую простую первую реализацию PCA. На сегодня все, ребята.

Надеюсь, вы узнали что-то новое и вам понравился этот блог. Если вам это нравится, чем поделиться им с друзьями. Заботиться. продолжайте учиться.

Вы также можете связаться со мной через мою учетную запись Linkedin — https://www.linkedin.com/in/harsh-mishra-4b79031b3/