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

Что такое уменьшение размерности?

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

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

Проклятие размерности

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

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

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

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

  1. Меньше вводящих в заблуждение данных означает повышение точности модели.
  2. Меньшие размеры - меньше вычислений. Меньше данных означает, что алгоритмы обучаются быстрее.
  3. Меньше данных означает меньше места для хранения.
  4. Меньшие размеры позволяют использовать алгоритмы, непригодные для большого количества измерений.
  5. Удаляет лишние функции и шум.

Выбор функций и разработка функций для уменьшения размерности

Уменьшение размерности может быть выполнено как методами выбора признаков, так и методами проектирования признаков.

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

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

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

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

  1. Порог отклонения и
  2. Одномерный выбор.

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

>>> X = [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]
>>> selector = VarianceThreshold()
>>> selector.fit_transform(X)
array([[2, 0],
       [1, 4],
       [1, 1]])

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

Scikit-learn предоставляет процедуры выбора функций, такие как SelectKBest, SelectPercentile или GenericUnivariateSelect, в качестве объектов, реализующих метод преобразования на основе оценки anova или chi2 или взаимной информации. Sklearn предлагает функции f_regression и duplic_info_regression в качестве функций оценки для регрессии и f_classif и relative_info_classif для классификации.
F-Test проверяет и фиксирует только линейные отношения между объектами и метками. Признак с высокой степенью корреляции получает более высокий балл, а менее коррелированный признак - более низкий балл. Корреляция очень обманчива, поскольку не фиксирует сильных нелинейных отношений. С другой стороны, методы взаимной информации могут фиксировать любой вид статистической зависимости, но, будучи непараметрическими, они требуют большего количества выборок для точной оценки.

Выбор признаков - самый простой из методов уменьшения размерности. Позже мы рассмотрим несколько методов проектирования функций для уменьшения размерности.

Методы уменьшения линейной размерности

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

  1. PCA (анализ главных компонентов): широко используемый для уменьшения размерности непрерывных данных, PCA вращает и проецирует данные в направлении увеличения дисперсии. Характеристики с максимальной дисперсией являются основными компонентами.
  2. Факторный анализ: метод, используемый для сокращения большого количества переменных на меньшее количество факторов. Значения наблюдаемых данных выражаются как функции ряда возможных причин, чтобы определить, какие из них являются наиболее важными. Предполагается, что наблюдения вызваны линейным преобразованием скрытых факторов меньшей размерности и добавленным гауссовым шумом.
  3. LDA (линейный дискриминантный анализ): данные проецируются таким образом, чтобы разделение классов было максимальным. Примеры из одного класса тесно связаны проекцией. Примеры из разных классов расположены далеко друг от друга проекцией.

Методы уменьшения нелинейной размерности

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

  1. Многомерное масштабирование (MDS): метод, используемый для анализа сходства или несходства данных в виде расстояний в геометрических пространствах. Проецирует данные в более низкое измерение, так что точки данных, которые находятся близко друг к другу (с точки зрения Евклидова расстояния) в более высоком измерении, также близки в нижнем измерении.
  2. Изометрическое отображение объектов (Isomap): проецирует данные в более низкое измерение, сохраняя геодезическое расстояние (а не евклидово расстояние, как в MDS). Геодезическое расстояние - это кратчайшее расстояние между двумя точками кривой.
  3. Локально линейное вложение (LLE): восстанавливает глобальную нелинейную структуру из линейных подгонок. Каждый локальный фрагмент многообразия может быть записан как линейная взвешенная сумма его соседей при наличии достаточного количества данных.
  4. Собственное отображение Гессе (HLLE): проецирует данные в более низкое измерение, сохраняя при этом локальную окрестность, как LLE, но использует оператор Гессе для лучшего достижения этого результата и, следовательно, названия.
  5. Спектральное вложение (собственные карты Лапласа): использует спектральные методы для уменьшения размерности путем сопоставления близлежащих входов с близлежащими выходами. Он сохраняет локальность, а не локальную линейность
  6. t-распределенное стохастическое соседнее вложение (t-SNE): вычисляет вероятность того, что пары точек данных в многомерном пространстве связаны, а затем выбирает низкоразмерное встраивание, которое дает аналогичное распределение.

Автокодировщики

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

  1. Кодировщик сжимает ввод в представление в скрытом пространстве.
  2. Декодер: реконструирует ввод из представления скрытого пространства.

В следующих статьях мы более подробно рассмотрим методы уменьшения линейной и нелинейной размерности.