Постройте результаты локальных поддающихся толкованию объяснений модели агностических (LIME)
визуализирует результаты LIME в f
= plot(results
)lime
объект results
. Функция возвращает Figure
объект f
. Используйте f
запросить или изменить Figure Properties фигуры после того, как это создается.
Фигура содержит горизонтальный столбчатый график, который показывает содействующие значения линейной простой модели или значения важности предиктора дерева решений простая модель, в зависимости от простой модели в results
(SimpleModel
свойство results
).
Фигура отображает два предсказания для точки запроса, вычисленной с помощью модели машинного обучения и простой модели, соответственно. Эти значения соответствуют BlackboxFitted
свойство и SimpleModelFitted
свойство results
.
Обучите модель классификации и создайте lime
возразите, что использует дерево решений простая модель. Когда вы создаете lime
возразите, задайте точку запроса и количество важных предикторов так, чтобы программное обеспечение сгенерировало выборки синтетического набора данных и подбирало простую модель для точки запроса с важными предикторами. Затем отобразите предполагаемую важность предиктора в простой модели при помощи объектного функционального 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' }
Составьте таблицу переменных предикторов путем удаления столбцов идентификаторов клиентов и оценок от tbl
.
tblX = removevars(tbl,["ID","Rating"]);
Обучите модель черного ящика кредитных рейтингов при помощи fitcecoc
функция.
blackbox = fitcecoc(tblX,tbl.Rating,'CategoricalPredictors','Industry');
Создайте lime
объект, который объясняет предсказание для последнего наблюдения с помощью дерева решений простая модель. Задайте 'NumImportantPredictors'
как шесть, чтобы найти самое большее 6 важных предикторов. Если вы задаете 'QueryPoint'
и 'NumImportantPredictors'
значения, когда вы создаете lime
объект, затем программное обеспечение генерирует выборки синтетического набора данных и подбирает простую поддающуюся толкованию модель к синтетическому набору данных. Ваши результаты могут варьироваться от показанных из-за случайности lime
. Можно установить случайный seed при помощи rng
для воспроизводимости.
queryPoint = tblX(end,:)
queryPoint=1×6 table
WC_TA RE_TA EBIT_TA MVE_BVTD S_TA Industry
_____ _____ _______ ________ ____ ________
0.239 0.463 0.065 2.924 0.34 2
results = lime(blackbox,'QueryPoint',queryPoint,'NumImportantPredictors',6, ... 'CategoricalPredictors','Industry','SimpleModelType','tree')
results = lime with properties: BlackboxModel: [1×1 ClassificationECOC] DataLocality: 'global' CategoricalPredictors: 6 Type: 'classification' X: [3932×6 table] QueryPoint: [1×6 table] NumImportantPredictors: 6 NumSyntheticData: 5000 SyntheticData: [5000×6 table] Fitted: {5000×1 cell} SimpleModel: [1×1 ClassificationTree] ImportantPredictors: [2 4] BlackboxFitted: {'AA'} SimpleModelFitted: {'AA'}
Постройте lime
объект results
при помощи объектного функционального plot
. Чтобы отобразить существующее подчеркивание на любое имя предиктора, измените TickLabelInterpreter
значение осей к 'none'
.
f = plot(results);
f.CurrentAxes.TickLabelInterpreter = 'none';
График отображает два предсказания для точки запроса, которые соответствуют свойству BlackboxFitted и свойству SimpleModelFitted results
.
Горизонтальный столбчатый график показывает отсортированные значения важности предиктора. lime
находит финансовые переменные EBIT_TA
отношения и
WC_TA
как важные предикторы для точки запроса.
Можно считать длины панели при помощи всплывающих подсказок или Свойств панели. Например, можно найти Bar
объекты при помощи findobj
функционируйте и добавьте метки в концы панелей при помощи text
функция.
b = findobj(f,'Type','bar'); text(b.YEndPoints+0.001,b.XEndPoints,string(b.YData))
В качестве альтернативы можно отобразить содействующие значения в таблице с именами переменного предиктора.
imp = b.YData; flipud(array2table(imp', ... 'RowNames',f.CurrentAxes.YTickLabel,'VariableNames',{'Predictor Importance'}))
ans=2×1 table
Predictor Importance
____________________
MVE_BVTD 0.088695
RE_TA 0.0018228
Обучите модель регрессии и создайте lime
возразите, что использует линейную простую модель. Когда вы создаете lime
объект, если вы не задаете точку запроса и количество важных предикторов, затем программное обеспечение, генерирует выборки синтетического набора данных, но не подбирает простую модель. Используйте объектный функциональный 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);
Составьте таблицу переменных предикторов путем удаления переменной отклика из tbl
.
tblX = removevars(tbl,'MPG');
Обучите модель черного ящика MPG
при помощи fitrkernel
функция, и создает lime
объект. Задайте набор данных предиктора потому что mdl
не содержит данные о предикторе. Ваши результаты могут варьироваться от показанных из-за случайности fitrkernel
и lime
. Можно установить случайный seed при помощи rng
для воспроизводимости.
mdl = fitrkernel(tblX,tbl.MPG,'CategoricalPredictors',[2 5]); results = lime(mdl,tblX,'CategoricalPredictors',[2 5])
results = lime with properties: BlackboxModel: [1×1 RegressionKernel] DataLocality: 'global' CategoricalPredictors: [2 5] Type: 'regression' X: [392×6 table] QueryPoint: [] NumImportantPredictors: [] NumSyntheticData: 5000 SyntheticData: [5000×6 table] Fitted: [5000×1 double] SimpleModel: [] ImportantPredictors: [] BlackboxFitted: [] SimpleModelFitted: []
results
содержит сгенерированный синтетический набор данных. SimpleModel
свойство пусто ([]
).
Подбирайте линейную простую модель для первого наблюдения в tblX
. Задайте количество важных предикторов, чтобы найти как 3.
queryPoint = tblX(1,:)
queryPoint=1×6 table
Acceleration Cylinders Displacement Horsepower Model_Year Weight
____________ _________ ____________ __________ __________ ______
12 8 307 130 70 3504
results = fit(results,queryPoint,3);
Постройте lime
объект results
при помощи объектного функционального plot
. Чтобы отобразить существующее подчеркивание на любое имя предиктора, измените TickLabelInterpreter
значение осей к 'none'
.
f = plot(results);
f.CurrentAxes.TickLabelInterpreter = 'none';
График отображает два предсказания для точки запроса, которые соответствуют свойству BlackboxFitted и свойству SimpleModelFitted results
.
Горизонтальный столбчатый график показывает содействующие значения простой модели, отсортированной по их абсолютным значениям. LIME находит Horsepower
, Model_Year
, и Cylinders
как важные предикторы для точки запроса.
results
— Результаты LIMElime
объектLIME заканчивается в виде lime
объект. SimpleModel
свойство results
должен содержать подбиравшую простую модель.
[1] Рибейру, Марко Тулио, С. Сингх и К. Гуестрин. "'Почему я должен Доверять Вам?': Объяснение Предсказаний Любого Классификатора". В Продолжениях 22-й Международной конференции ACM SIGKDD по вопросам Открытия Знаний и Анализа данных, 1135–44. Сан-Франциско Калифорнийские США: ACM, 2016.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.