Вычислите значения Шепли для точки запроса
вычисляет значения Шепли для заданной точки запроса (newExplainer
= fit(explainer
,queryPoint
)queryPoint
) и хранит вычисленные значения Шепли в ShapleyValues
свойство newExplainer
. shapley
объект explainer
содержит модель машинного обучения и опции для вычисления значений Шепли.
fit
использует опции расчета значения Шепли, которые вы задаете, когда вы создаете explainer
. Можно изменить опции с помощью аргументов name-value fit
функция. Функция возвращает shapley
объект newExplainer
это содержит недавно вычисленные значения Шепли.
задает дополнительные опции с помощью одних или нескольких аргументов name-value. Например, задайте newExplainer
= fit(explainer
,queryPoint
,Name,Value
)'UseParallel',true
вычислить значения Шепли параллельно.
shapley
Возразите и вычислите значения Шепли Используя fit
Обучите модель регрессии и создайте shapley
объект. Когда вы создаете shapley
объект, если вы не задаете точку запроса, затем программное обеспечение, не вычисляет значения Шепли. Используйте объектный функциональный fit
вычислить значения Шепли для заданной точки запроса. Затем создайте столбчатый график значений Шепли при помощи объектного функционального plot
.
Загрузите carbig
набор данных, который содержит измерения автомобилей, сделанных в 1970-х и в начале 1980-х.
load carbig
Составьте таблицу, содержащую переменные предикторы Acceleration
, Cylinders
, и так далее, а также переменная отклика MPG
.
tbl = table(Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight,MPG);
Удаление отсутствующих значений в наборе обучающих данных может помочь уменьшать потребление памяти и ускорить обучение fitrkernel
функция. Удалите отсутствующие значения в tbl
.
tbl = rmmissing(tbl);
Обучите модель черного ящика 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' Intercept: 22.6202
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
вычисляет значения Шепли с помощью предсказанного ответа и хранит их в 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
Постройте значения Шепли для точки запроса при помощи plot
функция.
plot(explainer)
Горизонтальный столбчатый график показывает значения Шепли для всех переменных, отсортированных по их абсолютным значениям. Каждое значение Шепли объясняет отклонение предсказания для точки запроса от среднего значения, из-за соответствующей переменной.
Обучите модель классификации и создайте shapley
объект. Затем вычислите значения Шепли для нескольких точек запроса.
Загрузите CreditRating_Historical
набор данных. Набор данных содержит идентификаторы клиентов и их финансовые отношения, промышленные метки и кредитные рейтинги.
tbl = readtable('CreditRating_Historical.dat');
Обучите модель черного ящика кредитных рейтингов при помощи 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' }
Вычислите и постройте значения Шепли для первой точки запроса.
explainer1 = fit(explainer,queryPoint(1,:)); plot(explainer1)
Вычислите и постройте значения Шепли для второй точки запроса.
explainer2 = fit(explainer,queryPoint(2,:)); plot(explainer2)
Истинной оценкой для второй точки запроса является B
, но предсказанной оценкой является BB
. График показывает значения Шепли для предсказанной оценки.
explainer1
и explainer2
включайте значения Шепли для первой точки запроса и второй точки запроса, соответственно.
explainer
— Объект, объясняющий модель черного ящикаshapley
объектОбъект, объясняющий модель черного ящика в виде 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)
вычисляет значения Шепли для точки запроса q
использование расширения kernelSHAP алгоритма, и выполняет расчет параллельно.MaxNumSubsets
— Максимальное количество подмножеств предиктораexplainer.NumSubsets
(значение по умолчанию) | положительное целое числоМаксимальное количество подмножеств предиктора, чтобы использовать для расчета значения Шепли в виде положительного целого числа.
Для получения дополнительной информации, на как fit
выбирает подмножества, чтобы использовать, видеть Сложность Вычисления Значений Шепли.
Пример: 'MaxNumSubsets',100
Типы данных: single
| double
Method
— Алгоритм расчета значения Шеплиexplainer.Method
(значение по умолчанию) | 'interventional-kernel'
| 'conditional-kernel'
Алгоритм расчета значения Шепли в виде 'interventional-kernel'
или 'conditional-kernel'
.
Для получения дополнительной информации об этих алгоритмах, см. Алгоритмы Расчета Значения Шепли.
Пример: 'Method','conditional-kernel'
Типы данных: char |
string
UseParallel
— Отметьте, чтобы запуститься параллельноfalse
(значение по умолчанию) | true
Отметьте, чтобы запуститься параллельно в виде true
или false
. Если вы задаете 'UseParallel',true
, fit
функция выполняет обработки в цикле параллельно при помощи parfor
. Эта опция требует Parallel Computing Toolbox™.
Пример: 'UseParallel',true
Типы данных: логический
newExplainer
— Объект, объясняющий модель черного ящикаshapley
объектОбъект, объясняющий модель черного ящика, возвращенную как shapley
объект. ShapleyValues
свойство объекта содержит вычисленные значения Шепли.
Перезаписывать входной параметр explainer
, присвойте выход fit
к explainer
:
explainer = fit(explainer,queryPoint);
В теории игр значение Шепли проигрывателя является средним крайним вкладом проигрывателя в совместной игре. В контексте предсказания машинного обучения значение Шепли функции точки запроса объясняет вклад функции к предсказанию (ответ для регрессии или счета каждого класса для классификации) в заданной точке запроса.
Значение Шепли функции точки запроса является вкладом функции к отклонению от среднего предсказания. Для точки запроса сумма значений Шепли для всех функций соответствует общему отклонению предсказания от среднего значения. Таким образом, сумма среднего предсказания и значений Шепли для всех функций соответствует предсказанию для точки запроса.
Для получения дополнительной информации смотрите Значения Шепли для Модели Машинного обучения.
[1] Лундберг, Скотт М. и С. Ли. "Объединенный подход к интерпретации предсказаний модели". Усовершенствования в нейронных системах обработки информации 30 (2017): 4765–774.
[2] Научный работник, Керсти, Мартин. Джаллум и Андерс Лылэнд. "Объясняя Отдельные Предсказания, Когда Функции Зависят: Более точные Приближения к Значениям Шепли". arXiv:1903.10464 (2019).
Чтобы запуститься параллельно, установите UseParallel
аргумент значения имени к true
в вызове этой функции.
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Запуска с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.