Что такое выбор функции?

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

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

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

Перед выполнением выбора функции нам необходимо выполнить предварительную обработку данных. Вы можете проверить это

Преимущества выполнения выбора функции:

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

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

Методы выбора функций:

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

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

  1. Метод фильтрации.
  2. Метод обертки.
  3. Встроенный метод (усадка).

Методы фильтрации:

Методы фильтрации можно разделить на две категории: Одномерные методы фильтрации и Многовариантные методы фильтрации.

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

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

Библиотека scikit-learn предоставляет:

SelectKBest: сохраняет топ-k функций оценки.

SelectPercentile: он сохраняет основные функции, которые указаны пользователем в процентах.

Следует отметить, что вы можете использовать chi² только для данных, которые не являются отрицательными по своей природе.

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

Вы можете скачать набор данных:

Теперь мы увидим, как мы можем удалить объекты с очень низкой дисперсией и коррелированные объекты из нашего набора данных с помощью Python.

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

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

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

Мы видим, что функция MedInc_Sqrt имеет очень высокую корреляцию с MedInc. Таким образом, мы можем удалить / отбросить один из них.

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

В общем, желательно не поддаваться влиянию предвзятости или интуиции.

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

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

Методы оболочки:

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

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

К распространенным методам оболочки относятся: Пошаговый / Выбор подмножества, Пошаговый вперед и Пошаговый назад (RFE).

Здесь я упомянул основные шаги, которые необходимо выполнить:

  • Обучите базовую модель.
  • Определите наиболее важные функции, используя технику выбора функций
  • Создайте новый набор данных «ограниченных объектов», содержащий только эти объекты.
  • Обучите вторую модель на этом новом наборе данных
  • Сравните точность «полнофункциональной» (базовой) модели с точностью «ограниченной» (новой) модели.

Прямой выбор:

  1. Определите лучшую переменную (например, на основе точности модели)
  2. Добавьте следующую переменную в модель
  3. И так до тех пор, пока не будут выполнены некоторые предопределенные критерии.

Пошаговый / Выбор подмножества:

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

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

1. Обратный пошаговый ( рекурсивное исключение признаков (RFE))

Рекурсивный = что-то повторяющееся

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

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

Мы используем модуль выбора функций из библиотеки sklearn для применения рекурсивного исключения функций (RFE)

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

3. Встроенный метод (усадка).

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

Отбор объектов с использованием моделей со штрафом L1 (лассо). Когда у нас есть штраф L1 за регуляризацию, большинство коэффициентов будет 0 (или близко к 0), и мы выбираем функции с ненулевыми коэффициентами.

Штраф L2 (Ridge), этот добавляет штраф, равный квадрату величины коэффициентов. Все коэффициенты уменьшаются на один и тот же коэффициент (поэтому ни один из предикторов не исключается).

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

Если вам интересно узнать об обработке пропущенных значений, то проверьте это.

Если вы нашли эту статью полезной, хлопните и поделитесь с другими.

- Удачного обучения

- Спасибо