← Назад к вопросам

Что такое feature importance в линейной регрессии?

1.8 Middle🔥 151 комментариев
#Машинное обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое feature importance в линейной регрессии?

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

Основные методы оценки Feature Importance

1. Коэффициенты модели (Coefficients)

Самый прямой способ — посмотреть на коэффициенты β в уравнении регрессии:

y = β₀ + β₁·x₁ + β₂·x₂ + ... + βₙ·xₙ

Коэффициент βᵢ показывает, на сколько единиц изменится целевая переменная при изменении i-го признака на одну единицу (при прочих равных). Коэффициент с большим абсолютным значением указывает на более важный признак.

from sklearn.linear_model import LinearRegression
import numpy as np

model = LinearRegression()
model.fit(X, y)

# Получить коэффициенты
importances = np.abs(model.coef_)
for feature, importance in zip(feature_names, importances):
    print(f\"{feature}: {importance:.4f}\")

2. Нормализованные коэффициенты (Standardized Coefficients)

Проблема прямых коэффициентов в том, что они зависят от масштаба признаков. Если x₁ измеряется в миллионах, а x₂ в единицах, коэффициент при x₂ будет намного больше, но это не означает его большую важность.

Решение — стандартизировать признаки перед обучением:

from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('model', LinearRegression())
])

pipeline.fit(X, y)
importances = np.abs(pipeline.named_steps['model'].coef_)

3. Permutation Importance

Этот метод измеряет, насколько ухудшится качество модели, если случайным образом перемешать значения конкретного признака. Большее ухудшение = больше важность:

from sklearn.inspection import permutation_importance

result = permutation_importance(
    model, X_test, y_test, 
    n_repeats=10, 
    random_state=42
)

importances = result.importances_mean
for feature, importance in zip(feature_names, importances):
    print(f\"{feature}: {importance:.4f}\")

4. Коэффициент детерминации (R²) по признакам

Можно оценить вклад каждого признака в R² модели, вычислив изменение R² при добавлении/удалении признака.

Практические примеры

# Полный пример с интерпретацией
from sklearn.datasets import load_diabetes
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
import pandas as pd

X, y = load_diabetes(return_X_y=True)
feature_names = load_diabetes().feature_names

# Стандартизация
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Обучение
model = LinearRegression()
model.fit(X_scaled, y)

# Feature importance
importance_df = pd.DataFrame({
    'feature': feature_names,
    'coefficient': model.coef_,
    'abs_coefficient': np.abs(model.coef_)
}).sort_values('abs_coefficient', ascending=False)

print(importance_df)

Важные замечания

  • Корреляция vs Причинность: Большой коэффициент не означает, что признак причинно влияет на результат
  • Мультиколлинеарность: Если признаки коррелируют между собой, интерпретация коэффициентов затрудняется
  • Нелинейные зависимости: Линейная регрессия не уловит нелинейные взаимодействия
  • Интерпретируемость vs Производительность: Линейные модели интерпретируемы, но могут уступать по точности
Что такое feature importance в линейной регрессии? | PrepBro