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