Ответ
Для оценки важности признаков я использовал несколько методов, в зависимости от типа модели и требований к интерпретируемости.
1. Встроенная важность признаков (для ансамблей на деревьях)
# Для RandomForest, XGBoost, LightGBM
import pandas as pd
import matplotlib.pyplot as plt
# Получение важности
feature_importance = pd.Series(
model.feature_importances_,
index=X_train.columns
).sort_values(ascending=False)
# Визуализация
plt.figure(figsize=(10, 6))
feature_importance.head(15).plot.barh()
plt.title('Top 15 Feature Importances')
plt.xlabel('Importance Score')
plt.tight_layout()
plt.show()
2. Permutation Importance (универсальный метод)
Этот метод показывает, насколько упадет качество модели, если «испортить» конкретный признак, перемешав его значения. Он работает для любых моделей.
from sklearn.inspection import permutation_importance
result = permutation_importance(
model, X_test, y_test,
n_repeats=10, # Количество перестановок для стабильности
random_state=42,
n_jobs=-1
)
# Сортировка и вывод
sorted_idx = result.importances_mean.argsort()[::-1]
for idx in sorted_idx[:10]:
print(f"{X_test.columns[idx]:<30} {result.importances_mean[idx]:.4f} ± {result.importances_std[idx]:.4f}")
3. SHAP (SHapley Additive exPlanations) для детальной интерпретации
SHAP показывает вклад каждого признака в конкретное предсказание и глобально по всему датасету, учитывая взаимодействия признаков.
import shap
# Для tree-based моделей
shap_explainer = shap.TreeExplainer(model)
shap_values = shap_explainer.shap_values(X_test)
# Summary plot для глобальной важности
shap.summary_plot(shap_values, X_test, plot_type="bar")
# Beeswarm plot для распределения влияний
shap.summary_plot(shap_values, X_test)
Ключевые моменты при выборе метода:
feature_importances_— быстрый, но может завышать вес признаков с большим количеством уникальных значений.- Permutation Importance — более надежный, но требует больше вычислений. Хорош для сравнения важности между разными типами моделей.
- SHAP — самый ресурсоемкий, но дает наиболее полную картину, включая направление влияния (положительное/отрицательное) и анализ отдельных наблюдений.
На практике я часто начинаю с Permutation Importance для отбора ключевых признаков, а затем использую SHAP для глубокого анализа и объяснения бизнесу, почему модель принимает те или иные решения.