Что такое мультиколлинеарность в машинном обучении?

«Что такое мультиколлинеарность в машинном обучении?» — вопрос из категории Классическое ML, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Мультиколлинеарность — это сильная корреляция между двумя или более признаками (предикторами) в регрессионной модели. Это приводит к тому, что матрица признаков становится плохо обусловленной, что затрудняет точную оценку вклада каждого отдельного признака.

Основные проблемы, которые она вызывает:

  1. Нестабильность оценок коэффициентов: Небольшие изменения в данных могут приводить к большим изменениям в оценках, делая модель ненадежной.
  2. Завышенные стандартные ошибки: Это снижает статистическую значимость коэффициентов (p-values становятся большими), и мы можем ошибочно заключить, что признак не важен.
  3. Сложность интерпретации модели: Поскольку признаки взаимосвязаны, становится невозможно изолировать индивидуальное влияние каждого из них на целевую переменную.

Методы обнаружения:

  • Матрица корреляций: Визуальный поиск пар признаков с высокой корреляцией (обычно > |0.8|).
  • Фактор инфляции дисперсии (VIF): Более надежный метод. VIF = 1 / (1 - R²), где R² — это коэффициент детерминации регрессии i-го признака на все остальные. Значение VIF > 5 или 10 указывает на серьезную мультиколлинеарность.
import pandas as pd
from statsmodels.stats.outliers_influence import variance_inflation_factor
from statsmodels.tools.tools import add_constant

# Допустим, X — это DataFrame с признаками
X_with_const = add_constant(X)  # Добавляем константу для intercept

vif_data = pd.DataFrame()
vif_data["feature"] = X_with_const.columns
vif_data["VIF"] = [variance_inflation_factor(X_with_const.values, i) for i in range(X_with_const.shape[1])]

print(vif_data)

Способы борьбы с мультиколлинеарностью:

  • Удаление одного из коррелирующих признаков (на основе доменных знаний или VIF).
  • Методы уменьшения размерности: Например, PCA (Principal Component Analysis), который преобразует исходные коррелированные признаки в набор некоррелированных главных компонент.
  • Регуляризация: Использование моделей с регуляризацией, таких как Ridge-регрессия (L2) или Lasso-регрессия (L1). Ridge особенно хорошо справляется с мультиколлинеарностью, «сжимая» коэффициенты коррелированных признаков, но не обнуляя их полностью.