Для 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 и предоставления статистики о распределении точек данных в каждом кластере, а также о распределении различных реальных классов друг в друге.
Мы также можем получить кластерные центры. В конце концов, мы собираемся создать фрейм данных с нашими данными и прогнозируемыми кластерами, чтобы мы могли интерпретировать наши данные.
Интерпретация полученных кластеров
Мы собираемся проверить среднее значение для каждой функции/кластера. Тепловая карта представляет стандартизированные атрибуты средних значений, сгруппированные по кластерам.
Интерпретация кластеров с использованием дерева решений
Чтобы закончить, мы собираемся использовать дерево решений, чтобы представить, как наши данные будут выглядеть в виде дерева.