Постройте значения Шепли
plot(
создает горизонтальный столбчатый график значений Шепли explainer
)shapley
объект explainer
. Эти значения хранятся в ShapleyValues
объекта свойство. Каждая панель показывает значение Шепли каждой функции в модели черного ящика (
человек, который объясняет.
) для точки запроса (BlackboxModel
человек, который объясняет.
).QueryPoint
plot(
задает дополнительные опции с помощью одних или нескольких аргументов name-value. Например, задайте explainer
,Name,Value
)'NumImportantPredictors',5
построить значения Шепли пяти функций с самыми высокими абсолютными значениями Шепли.
b = plot(___)
возвращает объект b
столбчатого графика использование любой из комбинаций входных аргументов в предыдущих синтаксисах. Используйте
b
запросить или изменить Свойства панели столбчатого графика после того, как это создается.
Обучите модель классификации и создайте shapley
объект. Затем постройте значения Шепли при помощи объектного функционального plot
.
Загрузите CreditRating_Historical
набор данных. Набор данных содержит идентификаторы клиентов и их финансовые отношения, промышленные метки и кредитные рейтинги.
tbl = readtable('CreditRating_Historical.dat');
Отобразите первые три строки таблицы.
head(tbl,3)
ans=3×8 table
ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA Industry Rating
_____ _____ _____ _______ ________ _____ ________ ______
62394 0.013 0.104 0.036 0.447 0.142 3 {'BB'}
48608 0.232 0.335 0.062 1.969 0.281 8 {'A' }
42444 0.311 0.367 0.074 1.935 0.366 1 {'A' }
Обучите модель черного ящика кредитных рейтингов при помощи fitcecoc
функция. Используйте переменные от второго до седьмых столбцов в tbl
как переменные предикторы. Методические рекомендации должны задать имена классов, чтобы установить порядок классов.
blackbox = fitcecoc(tbl,'Rating', ... 'PredictorNames',tbl.Properties.VariableNames(2:7), ... 'CategoricalPredictors','Industry', ... 'ClassNames',{'AAA' 'AA' 'A' 'BBB' 'BB' 'B' 'CCC'});
Создайте shapley
объект, который объясняет предсказание для последнего наблюдения. Для более быстрого расчета, поддемонстрационные 25% наблюдений от tbl
со стратификацией и использованием выборки, чтобы вычислить значения Шепли.
queryPoint = tbl(end,:)
queryPoint=1×8 table
ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA Industry Rating
_____ _____ _____ _______ ________ ____ ________ ______
73104 0.239 0.463 0.065 2.924 0.34 2 {'AA'}
rng('default') % For reproducibility c = cvpartition(tbl.Rating,'Holdout',0.25); tbl_s = tbl(test(c),:); explainer = shapley(blackbox,tbl_s,'QueryPoint',queryPoint);
Для модели классификации, shapley
вычисляет значения Шепли с помощью предсказанного счета класса к каждому классу. Отобразите значения в ShapleyValues
свойство.
explainer.ShapleyValues
ans=6×8 table
Predictor AAA AA A BBB BB B CCC
__________ __________ __________ ___________ __________ ___________ ___________ ___________
"WC_TA" 0.014583 0.0064712 0.0027454 0.00045582 -0.0079591 -0.011812 -0.011279
"RE_TA" 0.047796 0.027069 0.015173 -0.0031936 -0.025054 -0.059564 -0.08344
"EBIT_TA" 0.00034325 0.00015238 0.00012385 3.5202e-05 -0.00019141 -0.00038252 -0.00033693
"MVE_BVTD" 0.38221 0.38228 0.19382 -0.0079011 -0.15755 -0.21522 -0.17022
"S_TA" -0.0035662 -0.0025999 -0.00021203 -0.0010166 -2.0954e-05 0.00041414 -0.00058886
"Industry" -0.028314 -0.013387 0.00088939 0.022877 0.025637 0.028474 0.044835
ShapleyValues
свойство содержит значения Шепли всех функций каждого класса.
Постройте значения Шепли для предсказанного класса при помощи plot
функция.
plot(explainer)
Горизонтальный столбчатый график показывает значения Шепли для всех переменных, отсортированных по их абсолютным значениям. Каждое значение Шепли объясняет отклонение счета к точке запроса от средней оценки предсказанного класса, из-за соответствующей переменной.
Постройте значения Шепли для всех классов путем определения всех имен классов в explainer.BlackboxModel
.
plot(explainer,'ClassNames',explainer.BlackboxModel.ClassNames)
Обучите модель регрессии и создайте shapley
объект. Используйте объектный функциональный fit
вычислить значения Шепли для заданной точки запроса. Затем постройте значения Шепли предикторов при помощи объектного функционального plot
. Задайте количество важных предикторов, чтобы построить, когда вы вызовете 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
функция. Задайте 'NumImportantPredictors',5
построить только пять самых важных предикторов для предсказанного ответа.
plot(explainer,'NumImportantPredictors',5)
Горизонтальный столбчатый график показывает значения Шепли для пяти самых важных предикторов, отсортированных по их абсолютным значениям. Каждое значение Шепли объясняет отклонение предсказания для точки запроса от среднего значения, из-за соответствующей переменной.
explainer
— Объект, объясняющий модель черного ящикаshapley
объектОбъект, объясняющий модель черного ящика в виде shapley
объект.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
plot(explainer,'NumImportantPredictors',5,'ClassNames',c)
создает столбчатый график, содержащий значения Шепли пяти самых важных предикторов для класса c
.NumImportantPredictors
— Количество важных предикторов, чтобы построитьmin(M,10)
где M
количество предикторов (значение по умолчанию) | положительное целое числоКоличество важных предикторов, чтобы построить в виде положительного целого числа. plot
графики функций значения Шепли конкретного количества предикторов с самыми высокими абсолютными значениями Шепли.
Пример: 'NumImportantPredictors',5
задает, чтобы построить пять самых важных предикторов. plot
функция определяет порядок важности при помощи абсолютных значений Шепли.
Типы данных: single
| double
ClassNames
— Класс помечает, чтобы построитьexplainer.BlackboxFitted
(значение по умолчанию) | категориальный массив | символьный массив | логический вектор | числовой вектор | массив ячеек из символьных векторовКласс помечает, чтобы построить в виде категориального или символьного массива, логического или числового вектора или массива ячеек из символьных векторов. Значения и типы данных в 'ClassNames'
значение должно совпадать с теми из имен классов в ClassNames
свойство модели машинного обучения в explainer
(explainer.BlackboxModel.ClassNames
).
Можно задать одну или несколько меток. Если вы задаете несколько меток класса, графики функций несколько панелей для каждой функции с различными цветами.
Значением по умолчанию является предсказанный класс для точки запроса (BlackboxFitted
свойство explainer
).
Этот аргумент допустим только когда модель машинного обучения (BlackboxModel
) в explainer
модель классификации.
Пример: 'ClassNames',{'red','blue'}
Пример: 'ClassNames',explainer.BlackboxModel.ClassNames
задает 'ClassNames'
как все классы в BlackboxModel
.
Типы данных: single
| double
| logical
| char
| cell
| categorical
В теории игр значение Шепли проигрывателя является средним крайним вкладом проигрывателя в совместной игре. В контексте предсказания машинного обучения значение Шепли функции точки запроса объясняет вклад функции к предсказанию (ответ для регрессии или счета каждого класса для классификации) в заданной точке запроса.
Значение Шепли функции точки запроса является вкладом функции к отклонению от среднего предсказания. Для точки запроса сумма значений Шепли для всех функций соответствует общему отклонению предсказания от среднего значения. Таким образом, сумма среднего предсказания и значений Шепли для всех функций соответствует предсказанию для точки запроса.
Для получения дополнительной информации смотрите Значения Шепли для Модели Машинного обучения.
[1] Лундберг, Скотт М. и С. Ли. "Объединенный подход к интерпретации предсказаний модели". Усовершенствования в нейронных системах обработки информации 30 (2017): 4765–774.
[2] Научный работник, Керсти, Мартин. Джаллум и Андерс Лылэнд. "Объясняя Отдельные Предсказания, Когда Функции Зависят: Более точные Приближения к Значениям Шепли". arXiv:1903.10464 (2019).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.