Вычислите значения 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 содержит NaNs для непрерывных предикторов и 'Method' является 'conditional-kernel', затем значения Шепли (ShapleyValues) в возвращаемом объекте NaNs. В противном случае, 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.