Привет, Хабр!

Мы в «Рексофт» перевели на русский язык статью Feature Selection in Machine Learning. Надеемся, будет полезно всем, кто неравнодушен к теме.

В реальном мире данные не всегда такие чистые, как порой думают бизнес-заказчики. Именно поэтому востребован интеллектуальный анализ данных (data mining и data wrangling). Он помогает выявлять недостающие значения и паттерны в структурированных с помощью запросов данных, которые не может определить человек. Для того, чтобы найти и использовать эти паттерны для предсказания результатов с помощью обнаруженных связей в данных пригодится машинное обучение (Machine Learning).

Для понимания любого алгоритма необходимо просмотреть все переменные в данных и выяснить, что эти переменные представляют. Это крайне важно, потому что обоснование результатов основывается на понимании данных. Если данные содержат 5 или даже 50 переменных, можно изучить их все. А что если их 200? Тогда просто не хватит времени изучить каждую отдельную переменную. Более того, некоторые алгоритмы не работают для категориальных данных, и тогда придется привести все категориальные колонки к количественным переменным (они могут выглядеть количественными, но метрики покажут, что они категориальные), чтобы добавить их в модель. Таким образом, количество переменных увеличивается, и их становится около 500. Что теперь делать? Можно подумать, что ответом будет снижение размерности. Алгоритмы снижения размерности уменьшают число параметров, но негативно влияют на интерпретируемость. Что если существуют другие техники, которые исключают признаки и при этом позволяют легко понять и интерпретировать оставшиеся?

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

Сильно коррелированные переменные

Сильно коррелированные друг с другом переменные дают модели одну и ту же информацию, следовательно, для анализа не нужно использовать их все. Например, если набор данных (dataset) содержит признаки «Время в сети» и «Использованный трафик», можно предположить, что они будут в некоторой степени коррелированы, и мы увидим сильную корреляцию, даже если выберем непредвзятый образец данных. В таком случае в модели нужна только одна из этих переменных. Если использовать обе, то модель окажется переобучена (overfit) и предвзята относительно одного отдельного признака.

P-значения

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

Прямой отбор

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

Обратный отбор

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

Рекурсивное исключение признаков

RFE является широко используемой техникой/алгоритмом для выбора точного числа значимых признаков. Иногда метод используется, чтобы объяснить некоторое число «самых важных» признаков, влияющих на результаты; а иногда для уменьшения очень большого числа переменных (около 200-400), и оставляются только те, которые вносят хоть какой-то вклад в модель, а все остальные исключаются. RFE использует ранговую систему. Признакам в наборе данных выставляются ранги. Затем эти ранги используются для рекурсивного исключения признаков в зависимости от коллинеарности между ними и значимости этих признаков в модели. Кроме ранжирования признаков, RFE может показать, важны ли эти признаки или нет даже для заданного числа признаков (потому что очень вероятно, что выбранное число признаков может являться не оптимальным, и оптимальное число признаков может быть как больше, так и меньше выбранного).

Диаграмма важности признаков

Говоря об интерпретируемости алгоритмов машинного обучения, обычно обсуждают линейные регрессии (позволяющие проанализировать значимость признаков с помощью p-значений) и деревья решений (буквально показывающие важность признаков в форме дерева, а заодно и их иерархию). С другой стороны, в таких алгоритмах, как Random Forest, LightGBM и XG Boost, часто используется диаграмма значимости признаков, то есть строится диаграмма переменных и «количества их важности». Это особенно полезно, когда нужно предоставить структурированное обоснование важности признаков с точки зрения их влияния на бизнес.

Регуляризация

Регуляризация делается для контроля за балансом между предвзятостью (bias) и отклонением (variance). Предвзятость показывает, насколько модель переобучилась (overfit) на тренировочном наборе данных. Отклонение показывает, насколько различны были предсказания между тренировочным и тестовым датасетами. В идеале и предвзятость, и дисперсия должны быть маленькими. Тут на помощь приходит регуляризация! Существует две основных техники:

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

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

Так как Ridge оставляет все переменные, а Лассо лучше устанавливает их важность, был разработан алгоритм, объединяющий лучшие особенности обеих регуляризаций и известный как Elastic-Net.

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

Спасибо за чтение! Счастливого обучения!