Отбор признаков
VIF
Продолжаем рассматривать чуть глубже подходы для отбора признаков, которые я описывал в данном посте. Про PSI я уже успел написать в предыдущем посте серии, а в этом давайте углубимся в критерий VIF.
Variance Inflation Factor (VIF/ VIF score) - критерий, который позволяет обнаружить мультиколлинеарность в признаках. Особенно важно его посчитать на вашем списке признаков перед тем, как обучать регрессию. Я думаю вы все понимаете, почему это важно именно для регрессии (попробуйте написать это в комментариях). Сорри за тавтологию, но при расчете VIF все же надо обучить регрессию (OLS)! Это необходимо для расчета метрики R2. В принципе если вы обучаете линейную модель с регуляризацей, то возможно и обойтись без этого критерия. Но применение регуляризации не гарантирует уменьшение признакового пространства. При этом после удаления линейно зависимых признаков мы сможем освободить значимость, которую забрала эта фича, между другими признаками в модели.
Как это работает. Мы берем все N числовых признаков в трейн выборке, далее итеративно пробуем предсказать каждый из этих признаков остальными N-1 оставшимися. Далее для каждой фичи мы рассчитываем метриук R2 и подставляем ее в формулу:
VIF = 1/(1-R2), где:
R2 - коэффициент детерминации модели регресси для нашего признака
Далее все просто. Если никакой зависимости не обнаружено, значит R2 -> 0, получаем VIF = 1 - фича не является линейно зависимой. Обычно порог для VIF выбирают равным 5. Если VIF > 5 - значит наблюдается высокая мультиколлинеарность признаков. В этом источнике предлагают порог для VIF брать равным 3.
Тут кстати человек написал, что "VIF измеряет количество завышенных дисперсий, вызванных мультиколлинеарностью".
Подробнее можно почитать тут и тут.
Есть еще какая-то интересная статья, но там доступ был закрыт, по возможности скиньте ее пожалуйста в коменты.
#ml
Post #135
490