Spec-Zone.ru › scikit-learn

5.1. Графики частичной зависимости и индивидуального условного математического ожидания

Графики частичной зависимости (PDP) и индивидуального условного математического ожидания (ICE) можно использовать для визуализации и анализа взаимодействия между целевой переменной [1] и набором интересующих входных признаков.

И PDP [H2009], и ICE [G2015] предполагают, что интересующие входные признаки независимы от остальных признаков, однако на практике это предположение часто не выполняется. Поэтому в случае коррелирующих признаков для вычисления PDP/ICE мы будем создавать абсурдные точки данных [M2019].

5.1.1. Графики частичной зависимости

Графики частичной зависимости (PDP) показывают зависимость между целевой переменной и набором интересующих входных признаков, усредняя по значениям всех остальных входных признаков (признаков «дополнения»). Интуитивно частичную зависимость можно интерпретировать как ожидаемое значение целевой переменной в зависимости от интересующих входных признаков.

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

На рисунке ниже показаны два одномерных и один двумерный график частичной зависимости для набора данных о совместном использовании велосипедов с использованием HistGradientBoostingRegressor:

../_images/sphx_glr_plot_partial_dependence_006.png

Одномерные PDP показывают взаимодействие между целевой переменной и интересующим входным признаком (например, линейное или нелинейное). На левом графике выше показано влияние температуры на количество аренд велосипедов; можно отчетливо видеть, что более высокая температура связана с большим количеством аренд велосипедов. Аналогичным образом можно проанализировать влияние влажности на количество аренд велосипедов (средний график). Таким образом, эти интерпретации являются маргинальными и рассматривают признаки по одному.

PDP с двумя интересующими входными признаками показывают взаимодействие между ними. Например, двумерный PDP на рисунке выше показывает зависимость количества аренд велосипедов от сочетаний температуры и влажности. Можно отчетливо увидеть взаимодействие между двумя признаками: при температуре выше 20 градусов Цельсия главным образом влажность оказывает сильное влияние на количество аренд велосипедов. При более низких температурах на количество аренд велосипедов влияют и температура, и влажность.

Модуль sklearn.inspection предоставляет удобную функцию from_estimator для создания одномерных и двумерных графиков частичной зависимости. В примере ниже показано, как создать сетку графиков частичной зависимости: два одномерных PDP для признаков 0 и 1 и двумерный PDP для этих двух признаков:

>>> from sklearn.datasets import make_hastie_10_2
>>> from sklearn.ensemble import GradientBoostingClassifier
>>> from sklearn.inspection import PartialDependenceDisplay

>>> X, y = make_hastie_10_2(random_state=0)
>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,
...     max_depth=1, random_state=0).fit(X, y)
>>> features = [0, 1, (0, 1)]
>>> PartialDependenceDisplay.from_estimator(clf, X, features)
<...>

Доступ к созданным объектам Figure и Axes можно получить с помощью plt.gcf() и plt.gca().

Чтобы построить график частичной зависимости для категориальных признаков, необходимо указать, какие признаки являются категориальными, с помощью параметра categorical_features. Этот параметр принимает список индексов, названий категориальных признаков или булеву маску. Для категориальных признаков частичная зависимость отображается в виде столбчатой диаграммы или двумерной тепловой карты.

PDP для многоклассовой классификации

Для многоклассовой классификации необходимо указать метку класса, для которого следует построить PDP, с помощью аргумента target:

>>> from sklearn.datasets import load_iris
>>> iris = load_iris()
>>> mc_clf = GradientBoostingClassifier(n_estimators=10,
...     max_depth=1).fit(iris.data, iris.target)
>>> features = [3, 2, (3, 2)]
>>> PartialDependenceDisplay.from_estimator(mc_clf, X, features, target=0)
<...>

Тот же параметр target используется для указания целевой переменной в задачах регрессии с несколькими выходами.

Если вместо графиков вам нужны исходные значения функции частичной зависимости, можно использовать функцию sklearn.inspection.partial_dependence:

>>> from sklearn.inspection import partial_dependence

>>> results = partial_dependence(clf, X, [0])
>>> results["average"]
array([[ 2.466...,  2.466..., ...
>>> results["grid_values"]
[array([-1.624..., -1.592..., ...

Значения, для которых следует вычислить частичную зависимость, генерируются непосредственно из X. Для двумерной частичной зависимости создается двумерная сетка значений. Поле values, возвращаемое функцией sklearn.inspection.partial_dependence, содержит фактические значения, использованные в сетке для каждого интересующего входного признака. Они также соответствуют осям графиков.

5.1.2. График индивидуального условного математического ожидания (ICE)

Как и PDP, график индивидуального условного математического ожидания (ICE) показывает зависимость целевой функции от интересующего входного признака. Однако в отличие от PDP, отображающего средний эффект входного признака, график ICE визуализирует зависимость предсказания от признака отдельно для каждого образца, используя одну линию на образец. Из-за ограничений человеческого восприятия для графиков ICE поддерживается только один интересующий входной признак.

На рисунках ниже показаны два графика ICE для набора данных о совместном использовании велосипедов с использованием HistGradientBoostingRegressor. На графиках соответствующая линия PD наложена на линии ICE.

../_images/sphx_glr_plot_partial_dependence_004.png

PDP хорошо показывают средний эффект целевых признаков, но могут скрывать неоднородную зависимость, возникающую из-за взаимодействий. При наличии взаимодействий график ICE дает гораздо больше информации. Например, ICE для признака температуры дает дополнительные сведения: некоторые линии ICE горизонтальны, тогда как на других наблюдается снижение зависимости при температуре выше 35 градусов Цельсия. Аналогичная картина наблюдается для признака влажности: некоторые линии ICE резко снижаются при влажности выше 80%.

Удобную функцию PartialDependenceDisplay.from_estimator модуля sklearn.inspection можно использовать для создания графиков ICE, задав kind='individual'. В примере ниже показано, как создать сетку графиков ICE:

>>> from sklearn.datasets import make_hastie_10_2
>>> from sklearn.ensemble import GradientBoostingClassifier
>>> from sklearn.inspection import PartialDependenceDisplay
>>> X, y = make_hastie_10_2(random_state=0)
>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,
...     max_depth=1, random_state=0).fit(X, y)
>>> features = [0, 1]
>>> PartialDependenceDisplay.from_estimator(clf, X, features,
...     kind='individual')
<...>

На графиках ICE может быть трудно увидеть средний эффект интересующего входного признака. Поэтому рекомендуется использовать графики ICE вместе с PDP. Их можно строить совместно с помощью kind='both'.

>>> PartialDependenceDisplay.from_estimator(clf, X, features,
...     kind='both')
<...>

Если на графике ICE слишком много линий, бывает трудно увидеть различия между отдельными образцами и интерпретировать модель. Центрирование ICE относительно первого значения на оси x дает центрированные графики индивидуального условного математического ожидания (cICE) [G2015]. Это подчеркивает отклонение индивидуальных условных математических ожиданий от средней линии и упрощает исследование неоднородных зависимостей. Для построения графиков cICE задайте centered=True:

>>> PartialDependenceDisplay.from_estimator(clf, X, features,
...     kind='both', centered=True)
<...>

5.1.3. Математическое определение

Пусть \(X_S\) — набор интересующих входных признаков (то есть параметр features), а \(X_C\) — его дополнение.

Частичная зависимость отклика \(f\) в точке \(x_S\) определяется следующим образом:

\[\begin{split}pd_{X_S}(x_S) &\overset{def}{=} \mathbb{E}_{X_C}\left[ f(x_S, X_C) \right]\\ &= \int f(x_S, x_C) p(x_C) dx_C,\end{split}\]

где \(f(x_S, x_C)\) — функция отклика (predict, predict_proba или decision_function) для заданного образца, значения признаков которого определяются через \(x_S\) для признаков из \(X_S\) и через \(x_C\) для признаков из \(X_C\). Обратите внимание, что \(x_S\) и \(x_C\) могут быть кортежами.

Вычисление этого интеграла для различных значений \(x_S\) дает график PDP, как показано выше. Линия ICE определяется как одна функция \(f(x_{S}, x_{C}^{(i)})\), вычисленная в точке \(x_{S}\).

5.1.4. Методы вычисления

Существует два основных метода приближенного вычисления приведенного выше интеграла: 'brute' и 'recursion'. Параметр method задает используемый метод.

Метод 'brute' — универсальный метод, работающий с любым оценивателем. Обратите внимание, что вычисление графиков ICE поддерживается только методом 'brute'. Он приближает приведенный выше интеграл, вычисляя среднее по данным X:

\[pd_{X_S}(x_S) \approx \frac{1}{n_\text{samples}} \sum_{i=1}^n f(x_S, x_C^{(i)}),\]

где \(x_C^{(i)}\) — значение признаков из \(X_C\) для i-го образца. Для каждого значения \(x_S\) этому методу требуется полный проход по набору данных X, что требует значительных вычислительных ресурсов.

Каждое значение \(f(x_{S}, x_{C}^{(i)})\) соответствует одной линии ICE, вычисленной в точке \(x_{S}\). Вычисляя эту функцию для нескольких значений \(x_{S}\), получаем полную линию ICE. Как видно, среднее значение линий ICE соответствует линии частичной зависимости.

Метод 'recursion' быстрее метода 'brute', но поддерживается только для графиков PDP некоторыми оценивателями на основе деревьев. Вычисление выполняется следующим образом. Для заданной точки \(x_S\) выполняется взвешенный обход дерева: если узел разбиения использует интересующий входной признак, выбирается соответствующая левая или правая ветвь; в противном случае обходятся обе ветви, причем вес каждой ветви равен доле обучающих образцов, попавших в нее. В итоге частичная зависимость определяется как взвешенное среднее значений всех посещенных листьев.

При использовании метода 'brute' параметр X применяется и для генерации сетки значений \(x_S\), и для значений дополнительных признаков \(x_C\). Однако при использовании метода «recursion» параметр X применяется только для значений сетки: неявно значения \(x_C\) берутся из обучающих данных.

По умолчанию метод 'recursion' используется для построения PDP с оценивателями на основе деревьев, которые его поддерживают; в остальных случаях используется метод «brute».

Примечание

Хотя в целом результаты обоих методов должны быть близкими, в некоторых случаях они могут различаться. Метод 'brute' предполагает существование точек данных \((x_S, x_C^{(i)})\). При коррелирующих признаках вероятность таких искусственных образцов может быть очень низкой. Методы 'brute' и 'recursion', вероятно, дадут разные значения частичной зависимости, поскольку по-разному обработают эти маловероятные образцы. Однако помните, что основное предположение для интерпретации PDP заключается в независимости признаков.

Примеры

  • Графики частичной зависимости и индивидуального условного математического ожидания

Сноски

[1]

В задаче классификации целевой переменной может быть вероятность класса (положительного класса в случае бинарной классификации) или функция принятия решения.

Список литературы

[H2009]

T. Hastie, R. Tibshirani and J. Friedman, The Elements of Statistical Learning, Second Edition, Section 10.13.2, Springer, 2009.

[M2019]

C. Molnar, Interpretable Machine Learning, Section 5.1, 2019.

[G2015] (1,2)

A. Goldstein, A. Kapelner, J. Bleich, and E. Pitkin, “Peeking Inside the Black Box: Visualizing Statistical Learning With Plots of Individual Conditional Expectation” Journal of Computational and Graphical Statistics, 24(1): 44-65, Springer, 2015.

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

Spec-Zone.ru

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