Отбор признаков
PSI
Сегодня рассмотрим чуть глубже подходы для отбора признаков, которые я описывал в данном посте. Почему я выбрал именно 2 критерия в отдельности в пункте 7, а не скажем вместе с корреляцией? Здесь все просто - корреляция и разные импортансы нацелены на то, чтобы отобрать фичи с наилучшей информативностью (не всегда так и есть) для оптимизации нашей целевой функции. VIF и PSI нацелены немного на другое - убрать те фичи, которые могут сделать модель хуже. Понятно, что есть еще и методы типа удаления признаков с одним уникальным значением и тех, в которых больше 80% пропусков, но это всем очевидно, поэтому мы их даже не будем рассматривать, а перейдем сразу к нашим критериям. В этом посте начнем про PSI, в следующем поговорим про VIF.
Population Stability Index (PSI) - показатель, который количественно оценивает разницу между двумя распределениями величины, изменившейся во времени (изначально оценивались различные популяции животных). Он используется в мониторинге (и валидации) моделей для сравнения распределений на выходе модели или смещения распределения входных признаков (еще называт это как дрифт в данных). Можно рассчитывать как по числовым, так и по категориальным признакам. При этом для числовых распределений используется биннинг.
Как это работает. Мы берем какой-либо числовой признак в трейне и out-of-time выборке, делим его на 10 бакетов по децилям в трейне, а в OOT делим по границам децилей, полученных на train выборке. Далее смотрим количество наблюдений и рассчитываем для каждого бакета значение смещения по формуле:
(%oot - %train) * ln(%oot/%train), где:
%train - доля наблюдений в train выборке в данном бакете
%oot - доля наблюдений в oot выборке в данном бакете
После проделанных вычислений берем и суммируем полученные нами значения и получаем некоторую цифру - это и есть наш PSI. Ее следует сравнить с определенными порогами (значения в разных источниках отличаются).
Давайте рассмотрим пороги отсюда:
1. PSI < 0.1 — все хорошо, дрифт незначительный
2. 0.2 > PSI >= 0.1, признак можно использовать, но очень осторожно и следует его мониторить чаще. Можно также попробовать преобразовать или заменить на похожий
3. PSI >= 0.2 (в некоторых источниках порог 0.25) — признак использовать не стоит, потому что слишком меняется его распределение
Те же самые замечания можно применить и к выходам модели. Только здесь уже в пункте 2 скорее следует ее уже переобучить на новых данных, а в пункте 3 уже попробовать разобраться, что там произошло.
Вообще, тут сказано, что PSI - это именно для оценки выходов моделей, а для фичей применяется метод CSI (characteristic stability index). Суть та же самая, просто название чуть другое. За все мое время работы я ни разу не слышал, чтобы кто-то упоминал CSI.
Также интересная (для кого-то очевидная) заметочка отсюда: "We can use chi-square for binned data or KS test to compare distribution of two data sets".
Подробнее можно почитать (не считая указанные выше источники) тут.
И еще очень хорошее пояснение с картиночками и кодом есть тут.
#ml
Post #132
395