Введение

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

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

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

Выбраны наборы данных

Классификация

1. Маркетинговая кампания

2. Мошенничество с кредитными картами

3. Прогноз сердечно-сосудистых заболеваний

4. Диабет

5. Высокий доход

6. Сухие бобы

7. Аутентификация банкнот

8. Аудиторский риск

Регрессия

1. Электростанция комбинированного цикла

2. Энергоэффективность

3. Водная токсичность QSAR

4. Совместное использование велосипедов

5. Качество вина

6. Выступление учащихся

7. Шум в социальных сетях (Tom’s Hardware)

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

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

Анализ основных компонентов (АПК)

PCA преобразует набор данных высокой размерности в набор данных меньшей размерности, сохраняя при этом максимальное количество информации в наборе данных. Он делает это путем преобразования n коррелированных признаков в k некоррелированных признаков (компонентов), где k меньше n. Кроме того, это гарантирует, что максимальная дисперсия захватывается первым компонентом, а вторая по величине дисперсия фиксируется вторым основным компонентом, поэтому таким образом большая часть дисперсии захватывается несколькими первыми независимыми компонентами, которые затем используются для преобразования набора данных в набор данных. нижнее измерение. У PCA есть и другие варианты, которые немного отличаются друг от друга, давайте кратко обсудим некоторые из них ниже:

Разреженный PCA (S-PCA)

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

Инкрементный PCA (I-PCA)

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

Линейный дискриминантный анализ (LDA)

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

Разложение по единственному числу (SVD)

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

Методология

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

Предварительная обработка

Предварительная обработка для каждого набора данных следует этому общему конвейеру:

1. Во-первых, проверяются типы данных и отсутствующие значения в каждом столбце. Если существуют какие-либо отсутствующие значения, они устраняются путем их удаления или условного исчисления.

2. Удалены ненужные столбцы

3. Категориальные переменные кодируются горячим способом

4. Все числовые столбцы масштабируются с помощью Min-Max Scaler.

5. Если для какого-либо набора данных требуется какая-либо дополнительная предварительная обработка, она выполняется на последнем шаге.

6. Набор данных разделен на разделение поезд-тест, при этом 30% данных остаются в качестве тестового набора.

Суперклассное машинное обучение с конвейером уменьшения размерности

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

1. Ленивый прогноз на наборе данных с оригинальными функциями

2. Применение PCA, а затем запуск Lazy Predict для полученного набора данных.

3. Применение других вариантов PCA, а затем запуск Lazy Predict для полученного набора данных.

4. Применение LDA, а затем запуск Lazy Predict для результирующего набора данных (применимо только для наборов данных классификации)

5. Применение SVD, а затем запуск Lazy Predict для полученного набора данных.

6. Компиляция результатов каждой итерации и вывод результирующего DataFrame.

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

Импорт:

Трубопровод:

Теперь у нас есть конвейер, который использует Lazy Predict после применения различных методов DR, и входные данные для этой функции:

X_Train — обучающий набор предикторов

y_train — обучающий набор целевой переменной

X_Test — тестовый набор предикторов.

y_test — Тестовый набор целевой переменной

pca_dims — количество отклонений, которое должно быть зафиксировано компонентами PCA (значение от 0 до 1).

ipca_dims — количество отклонений, которое должно быть зафиксировано компонентами Incremental PCA (значение от 0 до 1).

svd_dim — количество отклонений, которое должно быть зафиксировано компонентами разложения по единичным значениям (значение от 0 до 1).

Как выглядят выходные данные конвейера?

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

Аккуратно, верно? Существует аналогичный конвейер, разработанный для наборов данных регрессии, который можно найти по ссылке GitHub, прикрепленной в конце статьи.

Результаты

Классификация

Результаты классификации наборов данных представлены на рисунке ниже. Вы можете заметить, что метрика сравнения меняется в наборах данных из-за несбалансированности классов. Наборы данных, которые были сильно несбалансированными, Площадь под кривой кривой оператора приемника (AUC-ROC) была выбрана в качестве метрики для сравнения, в противном случае оценка F1 и Точность были использованы. Полные табличные результаты приложены в конце этого раздела.

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

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

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

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

Таблица результатов

Регрессия

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

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

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

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

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

Таблица результатов

Оглядываясь назад…

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

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

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

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

Спасибо, что нашли время, чтобы прочитать это, пожалуйста, оставьте любые вопросы и комментарии. Приятного чтения!!!

Блокнот, содержащий весь исходный код.

Файл Excel с наборами данных классификации, содержащий все результаты.

Файл Excel с наборами регрессионных данных, содержащий все результаты.

Авторский LinkedIn