Spec-Zone.ru › scikit-learn

5.2. Перестановочная важность признаков

Перестановочная важность признаков — это метод анализа модели, который измеряет вклад каждого признака в статистическую эффективность обученной модели на заданном табличном наборе данных. Этот метод особенно полезен для нелинейных или непрозрачных оценивателей: он заключается в случайном перемешивании значений одного признака и наблюдении за последующим снижением оценки модели [1]. Нарушая связь между признаком и целевой переменной, мы определяем, насколько сильно модель опирается на этот конкретный признак.

На следующих рисунках показано влияние перестановки признаков на корреляцию между признаком и целевой переменной и, как следствие, на статистическую эффективность модели.

../_images/permuted_predictive_feature.png ../_images/permuted_non_predictive_feature.png

На верхнем рисунке видно, что перестановка предиктивного признака нарушает корреляцию между признаком и целевой переменной, в результате чего статистическая эффективность модели снижается. На нижнем рисунке видно, что перестановка непредиктивного признака не приводит к значительному снижению статистической эффективности модели.

Одно из ключевых преимуществ перестановочной важности признаков заключается в том, что она не зависит от модели, то есть может применяться к любому обученному оценивателю. Кроме того, её можно вычислять несколько раз с разными перестановками признака, получая дополнительную оценку дисперсии важности признаков для конкретной обученной модели.

На рисунке ниже показана перестановочная важность признаков для RandomForestClassifier, обученного на расширенной версии набора данных «Титаник», содержащей признак random_cat и признак random_num, то есть категориальный и числовой признаки, никак не связанные с целевой переменной:

../_images/sphx_glr_plot_permutation_importance_002.png

Предупреждение

Признаки, которые считаются малозначимыми для плохой модели (с низкой оценкой при перекрёстной проверке), могут быть очень важными для хорошей модели. Поэтому перед вычислением важности всегда важно оценить предсказательную способность модели на отложенной выборке (или, что ещё лучше, с помощью перекрёстной проверки). Перестановочная важность отражает не внутреннюю предсказательную ценность признака саму по себе, а важность этого признака для конкретной модели.

Функция permutation_importance вычисляет важность признаков для оценивателей на заданном наборе данных. Параметр n_repeats задаёт количество случайных перемешиваний признака и возвращает выборку значений важности признаков.

Рассмотрим следующую обученную регрессионную модель:

>>> from sklearn.datasets import load_diabetes
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.linear_model import Ridge
>>> diabetes = load_diabetes()
>>> X_train, X_val, y_train, y_val = train_test_split(
...     diabetes.data, diabetes.target, random_state=0)
...
>>> model = Ridge(alpha=1e-2).fit(X_train, y_train)
>>> model.score(X_val, y_val)
0.356...

Её эффективность на проверочной выборке, измеренная с помощью оценки \(R^2\), значительно выше случайного уровня. Поэтому можно использовать функцию permutation_importance, чтобы определить, какие признаки обладают наибольшей предсказательной способностью:

>>> from sklearn.inspection import permutation_importance
>>> r = permutation_importance(model, X_val, y_val,
...                            n_repeats=30,
...                            random_state=0)
...
>>> for i in r.importances_mean.argsort()[::-1]:
...     if r.importances_mean[i] - 2 * r.importances_std[i] > 0:
...         print(f"{diabetes.feature_names[i]:<8}"
...               f"{r.importances_mean[i]:.3f}"
...               f" +/- {r.importances_std[i]:.3f}")
...
s5      0.204 +/- 0.050
bmi     0.176 +/- 0.048
bp      0.088 +/- 0.033
sex     0.056 +/- 0.023

Обратите внимание, что значения важности для наиболее значимых признаков составляют большую долю эталонной оценки 0.356.

Перестановочную важность можно вычислять как на обучающей выборке, так и на отложенной тестовой или проверочной выборке. Использование отложенной выборки позволяет выделить признаки, которые вносят наибольший вклад в способность исследуемой модели к обобщению. Признаки, важные на обучающей выборке, но не на отложенной, могут привести к переобучению модели.

Перестановочная важность признаков зависит от функции оценки, заданной аргументом scoring. Этот аргумент принимает несколько оценщиков, что вычислительно эффективнее, чем последовательные вызовы permutation_importance с разными оценщиками, поскольку при этом повторно используются предсказания модели.

Пример перестановочной важности признаков с использованием нескольких оценщиков

В примере ниже используется список метрик, однако возможны и другие форматы входных данных, как описано в разделе Использование оценки по нескольким метрикам.

>>> scoring = ['r2', 'neg_mean_absolute_percentage_error', 'neg_mean_squared_error']
>>> r_multi = permutation_importance(
...     model, X_val, y_val, n_repeats=30, random_state=0, scoring=scoring)
...
>>> for metric in r_multi:
...     print(f"{metric}")
...     r = r_multi[metric]
...     for i in r.importances_mean.argsort()[::-1]:
...         if r.importances_mean[i] - 2 * r.importances_std[i] > 0:
...             print(f"    {diabetes.feature_names[i]:<8}"
...                   f"{r.importances_mean[i]:.3f}"
...                   f" +/- {r.importances_std[i]:.3f}")
...
r2
    s5      0.204 +/- 0.050
    bmi     0.176 +/- 0.048
    bp      0.088 +/- 0.033
    sex     0.056 +/- 0.023
neg_mean_absolute_percentage_error
    s5      0.081 +/- 0.020
    bmi     0.064 +/- 0.015
    bp      0.029 +/- 0.010
neg_mean_squared_error
    s5      1013.866 +/- 246.445
    bmi     872.726 +/- 240.298
    bp      438.663 +/- 163.022
    sex     277.376 +/- 115.123

Ранжирование признаков для разных метрик примерно одинаково, даже если шкалы значений важности существенно различаются. Однако это не гарантируется: разные метрики могут приводить к существенно различающимся оценкам важности признаков, особенно для моделей, обученных для задач классификации с несбалансированными классами, где выбор метрики классификации может иметь решающее значение.

5.2.1. Общая схема алгоритма перестановочной важности

  • Входные данные: обученная предсказательная модель \(m\), табличный набор данных (обучающий или проверочный) \(D\).
  • Вычислить эталонную оценку \(s\) модели \(m\) на данных \(D\) (например, точность классификатора или \(R^2\) регрессора).
  • Для каждого признака \(j\) (столбца \(D\)):

    • Для каждого повторения \(k\) из \({1, ..., K}\):

      • Случайным образом перемешать столбец \(j\) набора данных \(D\), чтобы получить искажённую версию данных \(\tilde{D}_{k,j}\).
      • Вычислить оценку \(s_{k,j}\) модели \(m\) на искажённых данных \(\tilde{D}_{k,j}\).
    • Вычислить важность \(i_j\) признака \(f_j\) по формуле:

      \[i_j = s - \frac{1}{K} \sum_{k=1}^{K} s_{k,j}\]

5.2.2. Связь с важностью на основе неоднородности в деревьях

Модели на основе деревьев предоставляют альтернативную оценку важности признаков на основе среднего уменьшения неоднородности (MDI). Неоднородность определяется критерием разбиения деревьев решений (Gini, Log Loss или среднеквадратичная ошибка). Однако этот метод может придавать высокую важность признакам, которые не обладают предсказательной способностью на новых данных, если модель переобучена. В свою очередь, важность признаков на основе перестановок позволяет избежать этой проблемы, поскольку её можно вычислять на новых данных.

Кроме того, важность признаков на основе неоднородности для деревьев сильно смещена и отдаёт предпочтение признакам с высокой кардинальностью (обычно числовым признакам) перед признаками с низкой кардинальностью, такими как бинарные признаки или категориальные переменные с небольшим числом возможных категорий.

Важность признаков на основе перестановок не подвержена такому смещению. Кроме того, её можно вычислять с помощью любой метрики эффективности предсказаний модели и использовать для анализа моделей любого класса (не только моделей на основе деревьев).

В следующем примере показаны ограничения важности признаков на основе неоднородности в сравнении с важностью на основе перестановок: Перестановочная важность и важность признаков случайного леса (MDI).

5.2.3. Вводящие в заблуждение значения для сильно коррелирующих признаков

Если два признака коррелируют и один из них переставляется, модель всё ещё может использовать второй признак, коррелирующий с первым. В результате для обоих признаков сообщается более низкое значение важности, хотя на самом деле они могут быть важными.

На рисунке ниже показана перестановочная важность признаков для RandomForestClassifier, обученного на наборе данных о раке молочной железы Висконсина (диагностическом), содержащем сильно коррелирующие признаки. При наивной интерпретации можно сделать вывод, что все признаки неважны:

../_images/sphx_glr_plot_permutation_importance_multicollinear_002.png

Один из способов решить эту проблему — сгруппировать коррелирующие признаки и оставить только один признак из каждой группы.

../_images/sphx_glr_plot_permutation_importance_multicollinear_004.png

Подробнее об этой стратегии см. в примере Перестановочная важность для мультиколлинеарных или коррелирующих признаков.

Примеры

  • Перестановочная важность и важность признаков случайного леса (MDI)
  • Перестановочная важность для мультиколлинеарных или коррелирующих признаков

Литература

[1]

L. Breiman, «Случайные леса», Machine Learning, 45(1), 5-32, 2001.

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/permutation_importance.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API