Шепли оценивает за модель машинного обучения

Можно вычислить значения Шепли для модели машинного обучения при помощи shapley объект. Используйте значения, чтобы интерпретировать вклады отдельных функций в модели к предсказанию для точки запроса. Существует два способа вычислить значения Шепли:

  • Создайте shapley объект для модели машинного обучения с заданной точкой запроса при помощи shapley функция. Функция вычисляет значения Шепли всех функций в модели для точки запроса.

  • Создайте shapley объект для модели машинного обучения при помощи shapley функционируйте и, затем вычислите значения Шепли для заданной точки запроса при помощи fit функция.

Эта тема задает значения Шепли, описывает два доступных алгоритма для вычисления значений Шепли, предоставляет примеры каждому и показывает, как уменьшать стоимость вычисления значений Шепли.

Что такое значение Шепли?

В теории игр значение Шепли проигрывателя является средним крайним вкладом проигрывателя в совместной игре. Таким образом, значения Шепли являются справедливыми выделениями, индивидуальным игрокам, общего дохода, сгенерированного от совместной игры. В контексте предсказания машинного обучения значение Шепли функции точки запроса объясняет вклад функции к предсказанию (ответ для регрессии или счета каждого класса для классификации) в заданной точке запроса. Значение Шепли соответствует отклонению предсказания для точки запроса из среднего предсказания, из-за функции. Для каждой точки запроса сумма значений Шепли для всех функций соответствует общему отклонению предсказания от среднего значения.

Значение Шепли i th функция точки запроса x задано функцией ценности v:

φi(vx)=1MS\{i}vx(S{i})vx(S)(M1)!|S|!(M|S|1)!(1)
  • M является количеством всех функций.

  • набор всех функций.

  • |S | является кардинальностью набора S или число элементов в наборе S.

  • vx (S) является функцией ценности функций в наборе S для точки запроса x. Значение функции указывает на ожидаемый вклад функций в S к предсказанию для точки запроса x.

Алгоритмы расчета значения Шепли

shapley предложения два алгоритма: kernelSHAP [1], который использует интервенционистские распределения для функции ценности и расширение kernelSHAP [2], который использует условные распределения для функции ценности. Можно задать алгоритм, чтобы использовать путем установки 'Method' аргумент значения имени shapley функционируйте или fit функция.

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

i=1Mφi(vx)=f(x)E[f(x)].

Поэтому функция ценности vx (S) должна соответствовать ожидаемому вкладу функций в S к предсказанию (f) для точки запроса x. Эти два алгоритма вычисляют ожидаемый вклад при помощи искусственных выборок, созданных из заданных данных (X). Необходимо обеспечить X через вход модели машинного обучения или отдельный аргумент ввода данных, когда вы создаете shapley объект. В искусственных выборках значения для функций в S прибывают из точки запроса. Для остальной части функций (функции в Sc, дополнении S), kernelSHAP алгоритм генерирует выборки с помощью интервенционистских распределений, тогда как расширение kernelSHAP алгоритма генерирует выборки с помощью условных распределений.

KernelSHAP ('Method','interventional-kernel')

shapley использует kernelSHAP алгоритм по умолчанию.

kernelSHAP алгоритм задает функцию ценности функций в S в точке запроса x как ожидаемое предсказание относительно интервенционистского распределения D, который является совместным распределением функций в Sc:

vx(S)=ED[f(xS,XSc)],

где xS является значением точки запроса для функций в S, и XSc является функциями в Sc.

Оценивать функцию ценности vx (S) в точке запроса x, учитывая, что функции не высоко коррелируются, shapley использует значения в данных X как выборки интервенционистского распределения D для функций в Sc:

vx(S)=ED[f(xS,XSc)]1Nj=1Nf(xS,(XSc)j),

где N является количеством наблюдений и (XSc), j содержит значения функций в Sc для j th наблюдение.

Например, предположите, что у вас есть три функции в X и четыре наблюдения: (x11, x12, x13), (x21, x22, x23), (x31, x32, x33), и (x41, x42, x43). Примите, что S включает первую функцию, и Sc включает остальных. В этом случае функция ценности первой функции, оцененной в точке запроса (x41, x42, x43),

vx(S)=14[f(x41,x12,x13)+f(x41,x22,x23)+f(x41,x32,x33)+f(x41,x42,x43)].

kernelSHAP алгоритм является в вычислительном отношении менее дорогим, чем расширение kernelSHAP алгоритма, поддерживает упорядоченные категориальные предикторы и может обработать отсутствующие значения в X. Однако алгоритм требует предположения независимости функции и использует выборки из распределения [3]. Искусственные выборки, созданные с соединением точки запроса и данных X, могут содержать нереалистичные наблюдения. Например, (x41, x12, x13) может быть выборка, которая не происходит в полном совместном распределении трех функций.

Расширение KernelSHAP ('Method','conditional-kernel')

Задайте 'Method','conditional-kernel' использовать расширение kernelSHAP алгоритма.

расширение kernelSHAP алгоритма задает функцию ценности функций в S в точке запроса x с помощью условного распределения XSc, учитывая, что XS имеет значения точки запроса:

vx(S)=EXSc|XS=xS[f(xS,XSc)].

Оценивать функцию ценности vx (S) в точке запроса x, shapley использует самых близких соседей точки запроса, которые соответствуют 10% наблюдений в данных X. Этот подход использует более реалистические выборки, чем kernelSHAP алгоритм и не требует предположения независимости функции. Однако этот алгоритм является в вычислительном отношении более дорогим, не поддерживает упорядоченные категориальные предикторы и не может обработать NaNs в непрерывных функциях. Кроме того, алгоритм может присвоить ненулевое значение Шепли фиктивной функции, которая не способствует предсказанию, если фиктивная функция коррелируется с важной функцией [3].

Задайте алгоритм расчета значения Шепли

Этот пример обучает линейную модель классификации и вычисляет значения Шепли с помощью обоих kernelSHAP алгоритм ('Method','interventional-kernel') и расширение kernelSHAP алгоритма ('Method','conditional-kernel').

Обучите линейную модель классификации

Загрузите ionosphere набор данных. Этот набор данных имеет 34 предиктора, и 351 бинарный ответ для радара возвращается, любой плохо ('b') или хороший ('g').

load ionosphere

Обучите линейную модель классификации. Задайте метод минимизации целевой функции ('Solver' аргумент значения имени) как ограниченная память алгоритм квазиньютона Бройдена Флетчера Голдфарба Шэнно ('lbfgs') для лучшей точности линейных коэффициентов.

Mdl = fitclinear(X,Y,'Solver','lbfgs')
Mdl = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: {'b'  'g'}
    ScoreTransform: 'none'
              Beta: [34x1 double]
              Bias: -3.7100
            Lambda: 0.0028
           Learner: 'svm'


  Properties, Methods

Шепли оценивает с интервенционистским распределением

Вычислите значения Шепли для первого наблюдения с помощью kernelSHAP алгоритма, который использует интервенционистское распределение для оценки функции ценности. Вы не должны задавать 'Method' значение, потому что 'interventional-kernel' значение по умолчанию.

queryPoint = X(1,:);
explainer1 = shapley(Mdl,X,'QueryPoint',queryPoint); 

Для модели классификации, shapley вычисляет значения Шепли с помощью предсказанного счета класса к каждому классу. Постройте значения Шепли для предсказанного класса при помощи plot функция.

plot(explainer1)

Figure contains an axes. The axes contains an object of type bar. This object represents g.

Горизонтальный столбчатый график показывает значения Шепли для этих 10 наиболее важных переменных, отсортированных по их абсолютным значениям. Каждое значение Шепли объясняет отклонение счета к точке запроса от средней оценки предсказанного класса, из-за соответствующей переменной.

Для линейной модели, где вы принимаете, функции независимы друг от друга, можно вычислить интервенционистские значения Шепли для положительного класса (или второй класс в Mdl.ClassNamesG) от предполагаемых коэффициентов (Mdl.Beta) [1].

linearSHAPValues = (Mdl.Beta'.*(queryPoint-mean(X)))';

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

t = table(explainer1.ShapleyValues.Predictor,explainer1.ShapleyValues.g,linearSHAPValues, ...
    'VariableNames',{'Predictor','KernelSHAP Value','LinearSHAP Value'})
t=34×3 table
    Predictor    KernelSHAP Value    LinearSHAP Value
    _________    ________________    ________________

      "x1"             0.28789            0.28789    
      "x2"         -3.5258e-16                  0    
      "x3"             0.20822            0.20822    
      "x4"            -0.01998           -0.01998    
      "x5"             0.20872            0.20872    
      "x6"           -0.076991          -0.076991    
      "x7"             0.19188            0.19188    
      "x8"            -0.64386           -0.64386    
      "x9"             0.42348            0.42348    
      "x10"          -0.030049          -0.030049    
      "x11"           -0.23132           -0.23132    
      "x12"             0.1422             0.1422    
      "x13"          -0.045973          -0.045973    
      "x14"           -0.29022           -0.29022    
      "x15"            0.21051            0.21051    
      "x16"            0.13382            0.13382    
      ⋮

Шепли оценивает с условным распределением

Вычислите значения Шепли для первого наблюдения с помощью расширения kernelSHAP алгоритма, который использует условное распределение для оценки функции ценности.

explainer2 = shapley(Mdl,X,'QueryPoint',queryPoint,'Method','conditional-kernel');

Постройте значения Шепли.

plot(explainer2)

Figure contains an axes. The axes contains an object of type bar. This object represents g.

Эти два алгоритма идентифицируют различные наборы для этих 10 наиболее важных переменных. Только эти две переменные x8 и x22 характерны для обоих наборов.

Сложность вычисления значений Шепли

Вычислительная стоимость для значений Шепли увеличивается, если количество наблюдений или функций является большим.

Большое количество наблюдений

Вычисление функции ценности (v) может быть в вычислительном отношении дорогим, если у вас есть большое количество наблюдений, например, больше чем 1 000. Для более быстрого расчета используйте меньшую выборку наблюдений, когда вы создадите shapley объект, или вычисляют значения Шепли параллельно путем определения 'UseParallel' как true когда вы вычисляете значения с помощью shapley или fit функция. Вычисление параллельно требует Parallel Computing Toolbox™.

Большое количество функций

Вычисление слагаемого в  уравнении 1 для всех доступных подмножеств, S может быть в вычислительном отношении дорогим, когда M (количество функций) является большим. Общее количество подмножеств, чтобы рассмотреть 2M. Вместо того, чтобы вычислить слагаемое для всех подмножеств, можно задать максимальное количество подмножеств для расчета значения Шепли при помощи 'MaxNumSubsets' аргумент значения имени. shapley выбирает подмножества, чтобы использовать на основе их значений веса. Вес подмножества пропорционален 1 / (знаменатель слагаемого), который соответствует 1 по биномиальному коэффициенту: 1/(M1|S|). Поэтому подмножество с высокой или низкой стоимостью кардинальности имеет большое значение веса. shapley включает подмножества с самым высоким весом сначала, и затем включает другие подмножества в порядке убывания на основе их значений веса.

Уменьшайте вычислительную стоимость

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

Обучите ансамбль регрессии

Загрузите набор выборочных данных NYCHousing2015.

load NYCHousing2015

Набор данных включает 55 246 наблюдений за 10 переменными с информацией о продажах свойств в Нью-Йорке в 2 015. Этот пример использует эти переменные, чтобы анализировать отпускные цены (SALEPRICE).

Предварительно обработайте набор данных. Преобразуйте datetime массив (SALEDATE) к числам месяца.

NYCHousing2015.SALEDATE = month(NYCHousing2015.SALEDATE);

Обучите ансамбль регрессии.

Mdl = fitrensemble(NYCHousing2015,'SALEPRICE');

Вычислите значения Шепли с опциями по умолчанию

Вычислите значения Шепли всех переменных предикторов для первого наблюдения. Измерьте время, требуемое вычислить значения Шепли при помощи tic и toc.

tic
explainer1 = shapley(Mdl,'QueryPoint',NYCHousing2015(1,:));
Warning: Computation can be slow because the predictor data has over 1000 observations. Use a smaller sample of the training set or specify 'UseParallel' as true for faster computation.
toc
Elapsed time is 492.365307 seconds.

Как предупреждающее сообщение указывает, расчет может быть медленным, потому что данные о предикторе имеют более чем 1 000 наблюдений.

Задайте опции, чтобы уменьшать вычислительную стоимость

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

  • Большое количество наблюдений — Использование меньшая выборка обучающих данных и вычисляет значения Шепли параллельно путем определения 'UseParallel' как true.

  • Большое количество функций — Задает 'MaxNumSubsets' аргумент значения имени, чтобы ограничить количество подмножеств, включенных в расчет.

Вычислите значения Шепли снова с помощью меньшей выборки обучающих данных и опции параллельных вычислений. Кроме того, задайте максимальное количество подмножеств как 2^5.

NumSamples = 5e2;
Tbl = datasample(NYCHousing2015,NumSamples,'Replace',false);
tic
explainer2 = shapley(Mdl,Tbl,'QueryPoint',NYCHousing2015(1,:), ...
    'UseParallel',true,'MaxNumSubsets',2^5);
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).
toc
Elapsed time is 52.183287 seconds.

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

Ссылки

[1] Лундберг, Скотт М. и С. Ли. "Объединенный подход к интерпретации предсказаний модели". Усовершенствования в нейронных системах обработки информации 30 (2017): 4765–774.

[2] Научный работник, Керсти, Мартин. Джаллум и Андерс Лылэнд. "Объясняя Отдельные Предсказания, Когда Функции Зависят: Более точные Приближения к Значениям Шепли". arXiv:1903.10464 (2019).

[3] Кумар, я. Элизабет, Suresh Venkatasubramanian, Карлос Шейдеггер и Сорелл Фридлер. "Проблемы с Основанными на Шепли-значением Объяснениями как Меры по Важности Функции". arXiv:2002.11097 (2020).

Смотрите также

| |