Spec-Zone.ru › scikit-learn

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

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

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

4.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)
<...>

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

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

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

Для многоклассовой классификации необходимо установить метку класса, для которой должны быть созданы 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, содержит фактические значения, используемые в сетке для каждого входного признака, представляющего интерес. Они также соответствуют оси графиков.

4.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%.

Удобная функция модуля sklearn.inspection PartialDependenceDisplay.from_estimator может быть использована для создания графиков 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)
<...>

4.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}\).

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

Существует два основных метода приближения интеграла выше, а именно методы «грубого» и «рекурсии». Параметр method управляет выбором метода.

Метод «грубого» — это общий метод, который работает с любым оценщиком. Обратите внимание, что вычисление графиков ICE поддерживается только с методом «грубый». Он приближает указанный выше интеграл, вычисляя среднее значение по данным 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)}\) — значение i-й выборки для признаков в \(X_C\). Для каждого значения \(x_S\) этот метод требует полного прохода по набору данных X , что является вычислительно интенсивной операцией.

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

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

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

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

Примечание

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

Примеры

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

Примечания

[1]

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

Ссылки

[H2009]

T. Hastie, R. Tibshirani и J. Friedman, The Elements of Statistical Learning, Второе издание, Раздел 10.13.2, Springer, 2009.

[M2019]

C. Molnar, Interpretable Machine Learning, Раздел 5.1, 2019.

[G2015] (1,2)

A. Goldstein, A. Kapelner, J. Bleich и 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–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/partial_dependence.html

Spec-Zone.ru

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