Графическое изображение значений Шепли
plot(
создает горизонтальный столбчатый график значений Шепли explainer
)shapley
explainer объекта
. Эти значения хранятся в ShapleyValues
объекта свойство. Каждая панель показывает значение Шепли каждой функции в модели blackbox (
explainer
) для точки запроса (BlackboxModel.
explainer.
).QueryPoint
plot(
задает дополнительные опции, используя один или несколько аргументов имя-значение. Для примера задайте 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' }
Обучите модель кредитных рейтингов blackbox при помощи 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.014584 0.0064698 0.0027468 0.00045585 -0.007959 -0.011812 -0.011279
"RE_TA" 0.047797 0.027083 0.015166 -0.0031936 -0.025054 -0.059563 -0.08344
"EBIT_TA" 0.00034326 0.0001524 0.00012384 3.5202e-05 -0.00019141 -0.00038252 -0.00033693
"MVE_BVTD" 0.38221 0.38229 0.19383 -0.007901 -0.15755 -0.2152 -0.17022
"S_TA" -0.0035663 -0.0025991 -0.00021177 -0.0010166 -2.1005e-05 0.00041421 -0.00058884
"Industry" -0.028313 -0.013392 0.00089644 0.022877 0.025636 0.028482 0.044832
The ShapleyValues
свойство содержит значения Shapley всех функций для каждого класса.
Постройте график значений Шепли для предсказанного класса с помощью plot
функция. Чтобы отобразить существующее подчеркивание в любом имени предиктора, измените TickLabelInterpreter
значение осей для 'none'
.
f = figure;
plot(explainer);
f.CurrentAxes.TickLabelInterpreter = 'none';
Горизонтальный столбчатый график показывает значения Шепли для всех переменных, отсортированные по их абсолютным значениям. Каждое значение Шепли объясняет отклонение счета для точки запроса от среднего счета предсказанного класса из-за соответствующей переменной.
Постройте график значений Shapley для всех классов путем определения всех имен классов в explainer.BlackboxModel
.
f = figure; plot(explainer,'ClassNames',explainer.BlackboxModel.ClassNames) f.CurrentAxes.TickLabelInterpreter = 'none';
Обучите регрессионую модель и создайте shapley
объект. Используйте функцию объекта fit
для вычисления значений Shapley для указанной точки запроса. Затем постройте график значений Шепли предикторов с помощью функции объекта 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);
Обучите модель 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'
. Задайте 'NumImportantPredictors',5
чтобы построить только пять наиболее важных предикторов для предсказанного отклика.
explainer.BlackboxFitted
ans = 21.0495
f = figure; plot(explainer,'NumImportantPredictors',5) f.CurrentAxes.TickLabelInterpreter = 'none';
Горизонтальный столбчатый график показывает значения Шепли для пяти наиболее важных предикторов, отсортированных по их абсолютным значениям. Каждое значение Шепли объясняет отклонение предсказания для точки запроса от среднего значения из-за соответствующей переменной.
explainer
- Объект, объясняющий модель blackboxshapley
объектОбъект, объясняющий модель blackbox, задается как 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
задает для построения графика пять наиболее важных предикторов. The 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
В теории игр значение Шепли игрока является средним предельным вкладом игрока в кооперативную игру. В контексте предсказания машинного обучения значение Шепли функции для точки запроса объясняет вклад функции в предсказание (ответ на регрессию или счет каждого класса для классификации) в заданной точке запроса.
Значение Шепли соответствует отклонению предсказания для точки запроса от среднего предсказания из-за функции. Для точки запроса сумма значений Shapley для всех функций соответствует общему отклонению предсказания от среднего значения.
Для получения дополнительной информации смотрите Значения Shapley для модели машинного обучения.
[1] Лундберг, Скотт М. и С. Ли. «Единый подход к интерпретации модельных Предсказаний». Усовершенствования в нейронных системах обработки информации 30 (2017): 4765-774.
[2] Аас, Кьерсти, Мартин. Джуллум и Андерс Лёланд. «Объяснение индивидуальных предсказаний, когда функции зависимы: более точные приближения к значениям Шепли». arXiv:1903.10464 (2019).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.