Для Data Scientist одной из самых серьезных проблем в проекте является работа с большими наборами данных, которые содержат множество измерений или функций. Эта сложность существенно затрудняет процесс интерпретации данных.

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

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

В контексте уменьшения размерности возникают две основные стратегии: выбор признаков, который включает в себя выбор подмножества исходных признаков с помощью различных алгоритмов, и извлечение или построение признаков, что влечет за собой создание новых функций, которые инкапсулируют наиболее важную информацию из исходных атрибутов. Именно в последнем находит свое место Анализ главных компонентов (PCA).

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

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

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

Математика, стоящая за анализом главных компонентов

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

PCA уменьшает размерность, проецируя исходные данные в M векторов, в которые нужно проецировать данные, чтобы минимизировать ошибку проецирования. M - это конечное измерение, поэтому, если вы хотите видеть свое конечное пространство как двумерное пространство, тогда M = 2.

Чтобы найти M-векторы или основные компоненты, мы собираемся изучить ковариационную матрицу данных. По сути, наша цель состоит в том, чтобы проанализировать центральные тенденции и дисперсию переменных относительно их среднего значения, количественно выраженного как ковариация, представляющая степень отклонения от среднего значения. Построив ковариационную матрицу, мы стремимся выявить наиболее информативные направления в данных. Эти направления характеризуются наивысшими собственными значениями, которые возникают в результате процесса диагонализации ковариационной матрицы после стандартизации признаков.

Стандартизация данных

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

Получение ковариационной матрицы и процесс диагонализации

Ковариация матрицы определяется формулой:

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

Затем нам нужно реорганизовать собственные векторы. Более высокие собственные значения предшествуют более низким. Мы собираемся выбрать k собственных векторов, соответствующих k самым высоким собственным значениям.

Снижение размерности

Чтобы уменьшить размерность, идея состоит в том, чтобы сохранить k собственных векторов с большей информацией о наших данных.

Если мы хотим сохранить определенный процент от общей дисперсии, нам нужно применить формулу. Если мы хотим сохранить 95% дисперсии, нам нужно иметь следующее

Пример Python

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

Теперь воспользуемся кластеризацией в базе данных wine. Цель состоит в том, чтобы проверить, обнаруживает ли кластеризация разные типы настоящих вин.

База данных описывает параметры различных экземпляров вина. Существует 3 типа вина и 13 винных характеристик с уровнями наиболее важных показателей:

  • Алкоголь
  • Яблочная кислота
  • Пепел
  • Зола щелочность
  • Магний
  • Всего фенолов
  • Флавоноиды
  • Нефлавоидные фенолы
  • Проантоцианы
  • Интенсивность цвета
  • оттенок
  • OD280OD315
  • пролин

Описание данных

Исследование данных

После загрузки базы данных нам нужно выполнить базовую обработку: стандартизацию и PCA.

Кластеризация и K-средние

Мы собираемся выполнить k-средние для поиска оптимального количества кластеров в соответствии с оценкой Калински-Харабаса:

Где центры кластеров k-средних будут:

Мы можем видеть другие вещи из наших данных, такие как метки k-средних и форму нашего фрейма данных:

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

Код предназначен для визуализации результатов кластеризации в 2D-пространстве с использованием PCA и предоставления статистики о распределении точек данных в каждом кластере, а также о распределении различных реальных классов друг в друге.

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

Интерпретация полученных кластеров

Мы собираемся проверить среднее значение для каждой функции/кластера. Тепловая карта представляет стандартизированные атрибуты средних значений, сгруппированные по кластерам.

Интерпретация кластеров с использованием дерева решений

Чтобы закончить, мы собираемся использовать дерево решений, чтобы представить, как наши данные будут выглядеть в виде дерева.

Рекомендации

https://medium.com/towards-data-science/theory-of-principal-component-analysis-pca-and-implementation-on-python-5d4839f9ae89