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

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

Алгоритм оптимизации

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

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

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

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

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

Чтобы попробовать самому, вам нужно установить его через команду pip:

функция установки pipвыбрать

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

Как видно из приведенного выше примера, всего за 10 итераций точность модели улучшается на значительную величину почти на 10%, при этом количество признаков уменьшается с 34 до 17, что составляет половину от этого.

Таким образом, Выбор объектов оказывается хорошим выбором для задачи выбора объектов как для больших, так и для малых наборов данных.

Проверьте репозиторий кода библиотеки по адресу:

https://github.com/himanshu-dutta/featureselect

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

[1] https://www.kdnuggets.com/2019/10/feature-selection-beyond-feature-importance.html

[2] https://github.com/himanshu-dutta/featureselect

[3] https://github.com/himanshu-dutta/featureselect