Перейти к основному содержимому

Значения Шепли

Значения Шепли (Shapley values [1]) позволяют объяснить для выбранного объекта x\mathbf{x} вклад значения каждого признака в прогноз модели f(x)f\left(\mathbf{x}\right). Оценка производится для конкретного объекта и конкретного значения выбранного признака. Вклад значений всех признаков и обеспечивает результирующий прогноз.

Рассмотрим в качестве примера задачу Titanic [2], в которой по описанию каждого пассажира (включающему класс билета, пол, возраст и т.д.) нужно предсказать, выжил он в результате кораблекрушения или нет. На рисунке ниже [3] показано объяснение прогнозируемой вероятности выживания для одного из пассажиров:

Shapley-values.png

Видно, что высокая вероятность прогнозируемого выживания 0.93 обеспечивается тем, что пассажир - женщина, которая не путешествовала третьим классом. Однако то, что она не путешествовала первым классом (в one-hot кодировании индикаторы класса - разные признаки) несколько снизило оцениваемую вероятность выжить.

Псевдокод для приближённого расчёта значения Шепли, измеряющего вклад jj-го признака в прогноз приведён ниже.

Результат: значение Шепли для значения jj-го признака

Параметры: количество итераций MM, исследуемый объект x\mathbf{x}, индекс признака jj, матрица данных X\mathbf{X}, модель машинного обучения ff.

  1. Для всех m=1,,Mm = 1, \ldots, M:

    • Выбрать случайный объект z\mathbf{z} из матрицы данных X\mathbf{X}

    • Случайным образом выбрать перестановку p\mathbf{p} признаков

    • Упорядочить объект x\mathbf{x}: xp=(x(1),,x(j),,x(D))\mathbf{x}_{\mathbf{p}} = (x_{(1)}, \ldots, x_{(j)}, \ldots, x_{(D)})

    • Упорядочить объект z\mathbf{z}: zp=(z(1),,z(j),,z(D))\mathbf{z}_{\mathbf{p}} = (z_{(1)}, \ldots, z_{(j)}, \ldots, z_{(D)})

    • Построить два новых объекта:

      • С признаком jj: x+j=(x(1),,x(j1),x(j),z(j+1),,z(D))\mathbf{x}_{+j} = (x_{(1)}, \ldots, x_{(j-1)}, x_{(j)}, z_{(j+1)}, \ldots, z_{(D)})
      • Без признака jj: xj=(x(1),,x(j1),z(j),z(j+1),,z(D))\mathbf{x}_{-j} = (x_{(1)}, \ldots, x_{(j-1)}, z_{(j)}, z_{(j+1)}, \ldots, z_{(D)})
    • Вычислить маржинальный вклад:

      ϕj(m)=f(x+j)f(xj)\phi_j^{(m)} = f(\mathbf{x}_{+j}) - f(\mathbf{x}_{-j})
  2. Вычислить значение Шепли как среднее маржинальных вкладов:

    ϕj(x)=1Mm=1Mϕj(m)\phi_j(\mathbf{x}) = \frac{1}{M} \sum_{m=1}^M \phi_j^{(m)}

Число повторов MM определяет точность полученной оценки: чем выше - тем она получится точнее.

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

Таким образом, значения Шепли оценивают важность признаков в контексте заданного объекта x\mathbf{x}, а сумма их значений равна отклонению прогноза f(x)f(\mathbf{x}) от среднего прогноза по всем объектам.

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

Глобальная важность признака

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

Importance(j)=1Nn=1Nϕj(xn)\text{Importance}(j)=\frac{1}{N}\sum_{n=1}^N |\phi_j(\mathbf{x}_n)|

Детальнее о значениях Шепли, их теоретическом обосновании и свойствах можно прочитать в [4] и [5]. Пример практического расчёта этих значений в python, используя библиотеку shap, доступен в [6].

Литература

  1. Wikipedia: Shapley value.

  2. openml.org: Titanic dataset.

  3. Gosiewska A., Biecek P. IBreakDown: Uncertainty of model explanations for non-additive predictive models //arXiv preprint arXiv:1903.11420. – 2019.

  4. Molnar C. Interpretable machine learning. – Lulu. com, 2020: Shapley values.

  5. Molnar C. Interpretable machine learning. – Lulu. com, 2020: SHAP.

  6. Документация shap: an introduction to explainable AI with Shapley values.