TGViewer
asisakov asisakov @asisakov_channel · 4.08K subscribers
Post #421 670
Отбор признаков
Recursive Feature Elimination (RFE)

Давно не было постов про методики топ отбора признаков. До этого я подробно рассматривал моменты, когда можно применять VIF и PSI в качестве проверочных критериев. Сейчас же мы попробуем погрузиться в чистом виде алгоритм отбора признаков. Звучит он максимально просто. "Recursive Feature Elimination (RFE)", ну или в узких кругах "Backward Selection". Это максимально понятный и простой метод отбора признаков. Мы берем и итеративно (по одному признаку) удаляем наименее важные признаки. Если это дело автоматизировать, то RFE почти всегда позволит нам попасть в субоптимальное подмножество признаков, где мы можем иметь метрики, близкие к модели, обученной на всех фичах.

Алгоритм:

1. Обучение модели на полном наборе признаков
2. Ранжирование признаков по важности
3. Удаление наименее важного признака
4. Оценка метрик качества на трейне и валидации
5. Повторение шагов 1-4 до достижения желаемого числа признаков или наблюдения драматического падения метрик

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

Плюсы:

1. Легко автоматизируется
2. Применяется для исключения особо неинформативных признаков
3. Есть возможность остановить алгоритм, если сильно упала метрика (выкинули важный признак)

Минусы:

1. Зависит от применяемой модели
2. Сложно подобрать тот самый порог, ниже которого метрика не может упасть (по дефолту беру 99% от бейзлайна)
3. Очень долго может выйти удалять признаки по одному (поэтому иногда можно даже дропать по N признаков)

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

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

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

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

Дополнительно: 1, 2, 3, 4.

@asisakov_channel

#ml
Telegram asisakov Как из 6000 признаков выбрать 10 наиболее нужных для модели? Допустим, мы нагенерили много признаков с использованием техник, описанных в посте выше. Что делать дальше? Неужели нам потом надо тянуть в модель их все и собирать для них отдельные витрины? С…
  • ❤ 6
  • 🔥 4
  • 👍 2
More from @asisakov_channel
  1. Sep 24, 2026Post #1428
  2. Sep 24, 2026Оказывается недавно вышел Opus 5.5, который типа догоняет Fable 5.1, и при этом дешевле на…
  3. Sep 23, 2026Таки вы не Исаков, а Исааков 😏 Шекели жалко
  4. Sep 23, 2026Недавно во второй раз забанили в Клоде, было очень обидно за свою $20 подписку 😭 P.S. При…
  5. Sep 23, 2026Post #1424
  6. Sep 22, 2026Дайте мне повод сжечь токены, и я сделаю это! #meme
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →