Основное руководство по различным методам уменьшения размерности в Python

Исследовательский анализ данных - важный компонент конвейера разработки модели науки о данных. Специалист по данным тратит большую часть времени на очистку данных, разработку функций и выполнение других методов обработки данных. Уменьшение размерности - один из методов, используемых специалистами по обработке данных при проектировании функций.

Уменьшение размерности - это процесс преобразования набора данных более высокой размерности в сопоставимое пространство более низкой размерности. Реальный набор данных часто имеет множество избыточных функций. Можно использовать методы уменьшения размерности, чтобы избавиться от таких избыточных функций или преобразовать n-мерные наборы данных в 2 или 3 измерения для визуализации.

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

Checklist:
1. Missing Value
2. Correlation Filter
3. Variance Filter
4. Forward / Backward Feature Selection Techniques
5. PCA (Principal Component Analysis)
6. t-SNE (t-distributed Stochastic Neighbourhood Embedding)
7. UMAP
8. Auto-Encoders

(1.) Отсутствующее значение:

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

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

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

(2.) Корреляционный фильтр:

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

Существуют различные методы вычисления корреляции между независимыми характеристиками, включая Пирсона, Спирмена, Кендалла, критерий хи-квадрат и т. Д.

Приведенная выше тепловая карта корреляционной матрицы (для титанического набора данных) вычисляется с помощью функции df.corr().

(3.) Фильтр отклонений:

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

Функция DataFrame.var() может вычислить дисперсию всех характеристик фрейма данных Pandas. DataFrame.value_counts() может вычислить распределение каждой функции.

(4.) Выбор функции вперед / назад:

Метод прямого выбора функций - это метод обертки для выбора наилучшего набора функций. Это поэтапный процесс, и функции выбираются на основе вывода из предыдущего шага. Шаги техники прямого выбора признаков:

  1. Обучите модель машинного обучения, используя каждую из d-функций по отдельности, и измерьте производительность каждой модели.
  2. Воспользуйтесь функцией с максимальной производительностью и переобучите отдельные модели, используя оставшиеся функции.
  3. Функция, с помощью которой мы получаем максимальную производительность, объединяется со списком функций из последнего шага.
  4. Повторяйте шаги 2 и 3, пока не получите желаемое количество функций.

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

(5.) Анализ главных компонентов:

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

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

  1. Столбец Стандартизация набора данных
  2. Вычислить ковариационную матрицу стандартизованного набора данных
  3. Вычислить собственные значения и собственные векторы из ковариационной матрицы
  4. Возьмите скалярное произведение вектора признаков с собственными векторами, имеющими высокие собственные значения.

Пакет Scikit-learn поставляется с реализацией PCA, прочтите документацию, чтобы узнать больше о реализации.

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



(6.) t-SNE:

t-SNE (t-распределенное встраивание стохастического окружения) - это метод уменьшения размерности, который в основном используется для визуализации данных. t-SNE преобразует набор данных более высокого измерения в 2- или 3-мерный вектор, который можно дополнительно визуализировать.

t-SNE работает лучше, чем PCA, поскольку он сохраняет локальную структуру данных и встраивает каждую точку данных из более высокого измерения в пространство более низкого измерения, сохраняя локальную структуру окрестности.

Пакет Scikit-learn поставляется с реализацией t-SNE, прочтите документацию, чтобы узнать больше о реализации.

Прочтите указанную ниже статью на сайте distill.pub, чтобы узнать, как эффективно использовать t-SNE:



(7.) UMAP:

UMAP (Uniform Manifold Approximation) - это метод уменьшения размерности, который работает аналогично t-SNE, проецируя набор данных более высокой размерности в сопоставимое пространство более низкой размерности.

UMAP построил соседний граф в исходном пространстве данных и попытался найти аналогичный граф в более низком измерении.

Прочтите указанную ниже статью из документации Scikit, чтобы узнать, как эффективно использовать UMAP:



(9.) Автокодеры:

Auto Encoder - это однослойный подход к уменьшению размерности на основе персептрона. Он имеет 2 компонента: сжатие (кодировщик) и расширение (декодер). Количество узлов во входном и выходном слое одинаково, тогда как средний уровень имеет меньше нейронов по сравнению с входным и выходным слоями.

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

Заключение:

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

ISOMAP - это еще один подход к уменьшению размерности на основе проекций, который работает аналогично UMAP и t-SNE. SVD и ISO - это некоторые из других методов уменьшения размерности на основе компонентов.

Использованная литература:

[1] Документация Scikit-learn: https://scikit-learn.org/stable/modules/unsupervised_reduction.html

Спасибо за чтение