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

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

Содержание

  • Проклятие размерности
  • Разработка функций
  • Выбор функций
  • Другие методы

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

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

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

Позже в этой статье мы обсудим два основных способа устранения проклятия размерности: разработку признаков/извлечение признаков и выбор признаков. Эти два метода подпадают под идею уменьшения размерности.

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

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

Разработка функций

Разработка функций — это общий термин в ML, который означает использование нескольких функций и управление ими в более низком измерении (меньшее количество функций). Двумя наиболее распространенными алгоритмами для этого являются PCA и T-NSE, которые сейчас будут объяснены.

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

Важно отметить, что PCA будет работать лучше всего, если ваши данные распределены линейно.

Затем у нас есть t распределенное стохастическое встраивание соседей (T-NSE). Это чуть менее популярный метод проектирования признаков и визуализации данных, он ищет сходство между несколькими признаками и помещает их в один кластер (как показано на рисунке ниже). Вы также можете узнать, как использовать его с помощью python здесь.

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

Выбор функции

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

Алгоритмы выбора признаков можно разделить на три типа:

  • На основе оболочки: они выбирают набор функций и рассматривают этот набор как проблему поиска.
  • На основе фильтра: здесь алгоритмам передается такая метрика, как корреляция или хи-квадрат, и пороговое значение. Затем выбирается набор функций, соответствующих этому порогу.
  • Встроенные: некоторые модели имеют встроенный выбор функций, некоторые из них включают Lasso и RF.

Давайте рассмотрим 2 наиболее популярных алгоритма выбора признаков.

  • Рекурсивное устранение признаков (RFE) — это алгоритм, основанный на оболочке, и он является одним из самых популярных. RFE работает путем поиска подмножества функций, начиная со всего набора обучающих данных, и успешно удаляет функции до тех пор, пока не останется желаемое количество. Пример на Python можно найти здесь.
  • Хи-квадрат — это еще один популярный алгоритм, но он основан на фильтрах. Чтобы определить хи-квадрат в статистике, это тест на независимость двух переменных (формулу можно найти ниже). Таким образом, этот алгоритм просто выбирает функции с самыми высокими значениями хи-квадрата при проверке целевой переменной, поскольку это означает, что они зависят друг от друга. Пример на Python можно найти здесь.

Другие методы

Вот краткий список некоторых других методов, которые, я думаю, следует упомянуть:

  • Отсутствующие значения — если функция имеет большую долю отсутствующих значений, она не будет очень полезной и должна быть удалена.
  • Низкая дисперсия — когда значения функции имеют очень низкую дисперсию, например. 95% значений равны 1 и только 5% равны 0, то эту функцию следует удалить.
  • Высокая корреляция. Если две функции очень сильно коррелированы, то удаление одной из них (или их слияние) уменьшит размерность без потери информации.

Резюме

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

В заключение я хотел бы перечислить некоторые недостатки уменьшения размерности:

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