Как использовать дополнительные признаки для отбора фичей?
Что проверяют
Умеете ли вы решить, стоит ли новый признак места в модели, и доказать это честной валидацией, а не графиком важностей. Часто вопрос понимают буквально: как с помощью добавленных случайных признаков отделить полезные от шума. Следом спрашивают, как вы избежали утечки при отборе.
Как отвечать
Начните с того, что добавление признака это гипотеза, которую проверяют на той же схеме валидации, что и модель. Дальше каркас:
- базовая линия: фиксируете модель, разбиение и метрику, считаете качество без новых признаков на кросс-валидации (для временных данных
TimeSeriesSplit); - шумовые признаки-пробники: добавляете столбец случайного шума или перемешанные копии настоящих признаков. Всё, что по важности не обгоняет шум, кандидат на удаление. На этой идее построен Boruta: он сравнивает каждый признак с его перемешанной «теневой» копией на нескольких итерациях;
- важность по перестановке:
sklearn.inspection.permutation_importanceна отложенной выборке честнее, чемfeature_importances_деревьев, которые завышают признаки с большим числом уникальных значений. SHAP показывает ещё и направление влияния; - обёртки:
RFECVиSequentialFeatureSelectorперебирают наборы признаков с оценкой на CV. Дорого, но наглядно; - встроенные методы: L1-регуляризация через
Lassoили логистическую регрессию с L1-штрафом,SelectFromModelповерх бустинга.
Весь отбор кладите внутрь Pipeline, чтобы он пересчитывался на каждом фолде. Итог формулируйте приростом метрики с разбросом по фолдам: если прирост меньше разброса, признак пользу не доказал.
Где спотыкаются
Отбирают признаки на всём датасете, а потом меряют качество кросс-валидацией. Оценка выходит завышенной, потому что отбор уже видел тестовые фолды.
Не проверяют новые признаки на утечку цели. Поле, которое заполняется после наступления события, даёт резкий скачок метрики и ломается в проде.
Выкидывают один из пары сильно коррелирующих признаков по низкой важности. У коррелированных признаков важность делится между ними, и по отдельности каждый выглядит слабым.