Вычислите значения Shapley для точки запроса
вычисляет значения Shapley для заданной точки запроса (newExplainer
= fit(explainer
,queryPoint
)queryPoint
) и хранит вычисленные значения Шепли в ShapleyValues
свойство newExplainer
. The shapley
explainer объекта
содержит модель машинного обучения и опции для вычисления значений Шепли.
fit
использует опции расчета значения Шепли, которые вы задаете при создании explainer
. Вы можете изменить опции, используя аргументы имя-значение fit
функция. Функция возвращает shapley
newExplainer объекта
который содержит новые вычисленные значения Шепли.
задает дополнительные опции, используя один или несколько аргументов имя-значение. Для примера задайте newExplainer
= fit(explainer
,queryPoint
,Name,Value
)'UseParallel',true
для параллельного вычисления значений Шепли.
shapley
Объект и вычисление значений Shapley с помощью fit
Обучите регрессионую модель и создайте shapley
объект. Когда вы создаете shapley
объект, если вы не задаете точку запроса, то программа не вычисляет значения Shapley. Используйте функцию объекта fit
для вычисления значений Shapley для указанной точки запроса. Затем создайте штриховой график значений Шепли с помощью функции объекта plot
.
Загрузите carbig
набор данных, содержащий измерения автомобилей 1970-х и начала 1980-х годов.
load carbig
Создайте таблицу, содержащую переменные предиктора Acceleration
, Cylinders
, и так далее, а также переменная отклика MPG
.
tbl = table(Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight,MPG);
Удаление отсутствующих значений в набор обучающих данных может помочь уменьшить потребление памяти и ускорить обучение для fitrkernel
функция. Удалите отсутствующие значения в tbl
.
tbl = rmmissing(tbl);
Обучите модель blackbox MPG
при помощи fitrkernel
функция
rng('default') % For reproducibility mdl = fitrkernel(tbl,'MPG','CategoricalPredictors',[2 5]);
Создайте shapley
объект. Задайте набор данных tbl
, потому что mdl
не содержит обучающих данных.
explainer = shapley(mdl,tbl)
explainer = shapley with properties: BlackboxModel: [1x1 RegressionKernel] QueryPoint: [] BlackboxFitted: [] ShapleyValues: [] NumSubsets: 64 X: [392x7 table] CategoricalPredictors: [2 5] Method: 'interventional-kernel'
explainer
сохраняет обучающие данные tbl
в X
свойство.
Вычислите значения Шепли всех переменных предиктора для первого наблюдения в tbl
.
queryPoint = tbl(1,:)
queryPoint=1×7 table
Acceleration Cylinders Displacement Horsepower Model_Year Weight MPG
____________ _________ ____________ __________ __________ ______ ___
12 8 307 130 70 3504 18
explainer = fit(explainer,queryPoint);
Для регрессионной модели shapley
вычисляет значения Shapley с помощью предсказанного отклика и сохраняет их в ShapleyValues
свойство. Отобразите значения в ShapleyValues
свойство.
explainer.ShapleyValues
ans=6×2 table
Predictor ShapleyValue
______________ ____________
"Acceleration" -0.1561
"Cylinders" -0.18306
"Displacement" -0.34203
"Horsepower" -0.27291
"Model_Year" -0.2926
"Weight" -0.32402
Отобразите предсказанный ответ для точки запроса и постройте график значений Shapley для точки запроса с помощью plot
функция. Чтобы отобразить существующее подчеркивание в любом имени предиктора, измените TickLabelInterpreter
значение осей для 'none'
.
explainer.BlackboxFitted
ans = 21.0495
f = figure;
plot(explainer)
f.CurrentAxes.TickLabelInterpreter = 'none';
Горизонтальный столбчатый график показывает значения Шепли для всех переменных, отсортированные по их абсолютным значениям. Каждое значение Шепли объясняет отклонение предсказания для точки запроса от среднего значения из-за соответствующей переменной.
Обучите классификационную модель и создайте shapley
объект. Затем вычислите значения Shapley для нескольких точек запроса.
Загрузите CreditRating_Historical
набор данных. Набор данных содержит идентификаторы клиентов и их финансовые коэффициенты, отраслевые метки и кредитные рейтинги.
tbl = readtable('CreditRating_Historical.dat');
Обучите модель кредитных рейтингов blackbox при помощи fitcecoc
функция. Используйте переменные со второго по седьмой столбцы в tbl
как переменные предиктора.
blackbox = fitcecoc(tbl,'Rating', ... 'PredictorNames',tbl.Properties.VariableNames(2:7), ... 'CategoricalPredictors','Industry');
Создайте shapley
объект со blackbox
модель. Для более быстрых расчетов выделите 25% наблюдений из tbl
с расслоением и используйте выборки для вычисления значений Шепли. Задайте, чтобы использовать расширение алгоритма kernelSHAP.
rng('default') % For reproducibility c = cvpartition(tbl.Rating,'Holdout',0.25); tbl_s = tbl(test(c),:); explainer = shapley(blackbox,tbl_s,'Method','conditional-kernel');
Найдите две точки запроса, истинные значения рейтинга которых AAA
и B
, соответственно.
queryPoint(1,:) = tbl_s(find(strcmp(tbl_s.Rating,'AAA'),1),:); queryPoint(2,:) = tbl_s(find(strcmp(tbl_s.Rating,'B'),1),:)
queryPoint=2×8 table
ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA Industry Rating
_____ ______ ______ _______ ________ _____ ________ _______
58258 0.511 0.869 0.106 8.538 0.732 2 {'AAA'}
82367 -0.078 -0.042 0.011 0.262 0.167 7 {'B' }
Вычислите и постройте график значений Shapley для первой точки запроса. Чтобы отобразить существующее подчеркивание в любом имени предиктора, измените TickLabelInterpreter
значение осей для 'none'
.
explainer1 = fit(explainer,queryPoint(1,:));
f1 = figure;
plot(explainer1)
f1.CurrentAxes.TickLabelInterpreter = 'none';
Вычислите и постройте график значений Shapley для второй точки запроса.
explainer2 = fit(explainer,queryPoint(2,:));
f2 = figure;
plot(explainer2)
f2.CurrentAxes.TickLabelInterpreter = 'none';
Истинный рейтинг для второй точки запроса B
, но предсказанный рейтинг BB
. На график показаны значения Шепли для предсказанного рейтинга.
explainer1
и explainer2
включить значения Shapley для первой точки запроса и второй точки запроса соответственно.
explainer
- Объект, объясняющий модель blackboxshapley
объектОбъект, объясняющий модель blackbox, задается как shapley
объект.
queryPoint
- Точка запросаТочка запроса, в которой fit
объясняет предсказание, заданное как вектор-строка с числовыми значениями или таблица с одной строкой.
Для вектора-строки с числовыми значениями:
Для таблицы с одной строкой:
Если данные предиктора explainer.X
является таблицей, затем все переменные предиктора в queryPoint
должны иметь те же имена переменных и типы данных, что и в explainer.X
. Однако порядок столбцов queryPoint
не должен соответствовать порядку столбцов explainer.X
.
Если данные предиктора explainer.X
является числовой матрицей, затем имена предикторов в explainer.BlackboxModel.PredictorNames
и соответствующие имена переменных предиктора в queryPoint
должно быть то же самое. Чтобы задать имена предикторов во время обучения, используйте 'PredictorNames'
аргумент имя-значение. Все переменные предиктора в queryPoint
должны быть числовыми векторами.
queryPoint
может содержать дополнительные переменные (переменные отклика, веса наблюдений и так далее), но fit
игнорирует их.
fit
не поддерживает многополюсные переменные или массивы ячеек, отличные от массивов ячеек векторов символов.
Если queryPoint
содержит NaN
s для непрерывных предикторов и 'Method'
является 'conditional-kernel'
, затем значения Шепли (ShapleyValues
) в возвращаемом объекте NaN
s. В противном случае, fit
указатели NaN
значения так же, как и explainer.BlackboxModel
(а predict
функция объекта от explainer.BlackboxModel
или указатель на функцию, заданный как blackbox
).
Пример: explainer.X(1,:)
задает точку запроса как первое наблюдение данных предиктора X
в explainer
.
Типы данных: single
| double
| table
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
fit(explainer,q,'Method','conditional-kernel','UseParallel',true)
вычисляет значения Shapley для точки запроса q
использование расширения к алгоритму kernelSHAP, и выполняет расчеты параллельно.'MaxNumSubsets'
- Максимальное количество подмножеств предикторовexplainer.NumSubsets
(по умолчанию) | положительное целое числоМаксимальное количество подмножеств предикторов для использования при расчете значения Шепли, заданное в виде положительного целого числа.
Для получения дополнительной информации о том, как fit
выбирает подмножества для использования, см. «Комплексность вычислений значений Шепли».
Пример: 'MaxNumSubsets',100
Типы данных: single
| double
'Method'
- алгоритм расчета значения Шеплиexplainer.Method
(по умолчанию) | 'interventional-kernel'
| 'conditional-kernel'
Алгоритм расчета значения Shapley, заданный как 'interventional-kernel'
или 'conditional-kernel'
.
Для получения дополнительной информации об этих алгоритмах см. «Алгоритмы расчета значения Шепли».
Пример: 'Method','conditional-kernel'
Типы данных: char
| string
'UseParallel'
- Флаг для параллельного запускаfalse
(по умолчанию) | true
Флаг для параллельного выполнения, заданный как true
или false
. Если вы задаете 'UseParallel',true
, fit
функция выполняет обработки в цикле параллельно при помощи parfor
. Для этой опции требуется Parallel Computing Toolbox™.
Пример: 'UseParallel',true
Типы данных: logical
newExplainer
- Объект, объясняющий модель blackboxshapley
объектОбъект, объясняющий модель blackbox, возвращенный как shapley
объект. The ShapleyValues
свойство объекта содержит вычисленные значения Шепли.
Чтобы перезаписать входной параметр explainer
, присвойте выходные данные fit
на explainer
:
explainer = fit(explainer,queryPoint);
В теории игр значение Шепли игрока является средним предельным вкладом игрока в кооперативную игру. В контексте предсказания машинного обучения значение Шепли функции для точки запроса объясняет вклад функции в предсказание (ответ на регрессию или счет каждого класса для классификации) в заданной точке запроса.
Значение Шепли соответствует отклонению предсказания для точки запроса от среднего предсказания из-за функции. Для точки запроса сумма значений Shapley для всех функций соответствует общему отклонению предсказания от среднего значения.
Для получения дополнительной информации смотрите Значения Shapley для модели машинного обучения.
[1] Лундберг, Скотт М. и С. Ли. «Единый подход к интерпретации модельных Предсказаний». Усовершенствования в нейронных системах обработки информации 30 (2017): 4765-774.
[2] Аас, Кьерсти, Мартин. Джуллум и Андерс Лёланд. «Объяснение индивидуальных предсказаний, когда функции зависимы: более точные приближения к значениям Шепли». arXiv:1903.10464 (2019).
Чтобы запустить параллельно, установите 'UseParallel'
аргумент имя-значение в true
в вызове этой функции.
Для получения дополнительной общей информации о параллельных вычислениях смотрите Запуск функций MATLAB с поддержкой автоматических параллелей (Parallel Computing Toolbox).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.