Вопрос или проблема
Например, я получил следующий результат фактора VIF (weekday_
– это кодирование с помощью one-hot):
VIF Factor features
0 0.000000 Intercept
...
9 51.136294 utc_timestamp
10 19.603974 weekday_Friday
11 10.239841 weekday_Saturday
12 4.681547 weekday_Sunday
13 25.088306 weekday_Thursday
14 3.623731 weekday_Tuesday
15 35.704364 weekday_Wednesday
16 3.957419 hour_of_day_cos
17 13.686298 hour_of_day_sin
18 64.972848 temp_c
19 7.335685 pressure_mb
20 23.209039 humidity
21 1.526779 rain_mm
Учитывая данные (или любые произвольные данные), как я могу определить, какие входные признаки нужно удалить? Мое понимание заключается в том, что фактор VIF говорит только о деле Individual feature. Он не указывает, какие признаки имеют высокую корреляцию.
В этой ситуации как мне определить, какие признаки нужно удалить?
- Сначала удалите признак с самым высоким значением фактора VIF
- Удалите признак, который кажется менее объяснимым физически или семантически
- Другой подход
Ответ или решение
Как определить, какие признаки ввода следует исключить после анализа коэффициентов инфляции дисперсии (VIF)
При анализе многоколлинеарности в моделях линейной регрессии коэффициент инфляции дисперсии (VIF) играет ключевую роль. Он помогает оценить, насколько повышена дисперсия оценок коэффициентов регрессии из-за мультиколлинеарности. В случае, когда VIF превышает 10, это может указывать на наличие высоких корреляций между исследуемыми переменными.
Как интерпретировать результаты VIF
В ваших данных представлены несколько признаков с различными значениями VIF. Рассмотрим эти результаты:
- Признаки с VIF больше 10, такие как
utc_timestamp
,temp_c
,weekday_Friday
,weekday_Thursday
,weekday_Wednesday
, требуют внимания, так как это указывает на высокий уровень корреляции с другими признаками. - Признаки с VIF менее 10, такие как
humidity
,pressure_mb
, иrain_mm
, являются менее проблемными.
Рекомендации по исключению признаков
-
Исключение признаков с самым высоким VIF:
Начните с удаления признака с наибольшим VIF, так как он, скорее всего, создает наибольшее влияние на многоколлинеарность. В вашем случае этоtemp_c
с VIF 64.972848. Это может существенно улучшить качество модели. -
Оценка семантической обоснованности признаков:
После удаления признаков с наивысшими коэффициентами VIF, рассмотрите, какие признаки менее логичны с точки зрения их физического или семантического значения для вашей задачи. Например,utc_timestamp
может не быть наилучшим показателем, если его влияние можно объяснить через другие временные переменные. -
Дополнительные подходы:
- Корреляционный анализ: Проведите корреляционный анализ (например, с использованием корреляционной матрицы), чтобы визуально оценить взаимосвязь между оставшимися признаками. Если есть другие признаки с высоким уровнем корреляции (например, > 0.9), рассмотрите возможность удаления одного из них.
- Методы отбора признаков: Используйте алгоритмы выбора признаков (например, Lasso-регрессия, деревья решений) для дальнейшей оптимизации списка признаков. Эти методы могут помочь выявить наиболее значимые переменные, исключая при этом сильные коррелированные.
-
Пошаговое исключение:
После определения первоначального списка проблемных переменных, выполните итеративное удаление признаков с самым высоким VIF, повторно рассчитывая VIF на каждом шаге. Это позволит вам систематически уменьшать коллинеарность.
Заключение
Работа с мультikollinearity требует внимательного подхода, так как удаление неверных признаков может существенно повлиять на вашу модель. Сочетайте различные методы анализа и принимайте обоснованные решения, основанные как на статистических данных, так и на семантическом значении признаков. Таким образом, вы сможете улучшить точность и интерпретируемость вашей модели, что приведет к более надежным прогнозам и выводам.