Результаты графика локальных интерпретируемых модельно-агностических объяснений (LIME)
визуализирует результаты LIME в f = plot(results)lime объект results. Функция возвращает значение Figure объект f. Использовать f запрос или изменение свойств фигуры после ее создания.
Рисунок содержит горизонтальную гистограмму, которая показывает значения коэффициентов линейной простой модели или значения важности предиктора простой модели дерева решений, в зависимости от простой модели в 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"]);
Обучение модели кредитных рейтингов blackbox с помощью fitcecoc функция.
blackbox = fitcecoc(tblX,tbl.Rating,'CategoricalPredictors','Industry');
Создать lime объект, который объясняет прогноз для последнего наблюдения с использованием простой модели дерева решений. Определить 'NumImportantPredictors' как шесть, чтобы найти максимум 6 важных предикторов. При указании 'QueryPoint' и 'NumImportantPredictors' значения при создании lime затем программное обеспечение генерирует образцы синтетического набора данных и подгоняет простую интерпретируемую модель к синтетическому набору данных.
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
rng('default') % For reproducibility results = lime(blackbox,'QueryPoint',queryPoint,'NumImportantPredictors',6, ... 'SimpleModelType','tree')
results =
lime with properties:
BlackboxModel: [1x1 ClassificationECOC]
DataLocality: 'global'
CategoricalPredictors: 6
Type: 'classification'
X: [3932x6 table]
QueryPoint: [1x6 table]
NumImportantPredictors: 6
NumSyntheticData: 5000
SyntheticData: [5000x6 table]
Fitted: {5000x1 cell}
SimpleModel: [1x1 ClassificationTree]
ImportantPredictors: [2x1 double]
BlackboxFitted: {'AA'}
SimpleModelFitted: {'AA'}
Постройте график lime объект results с помощью функции объекта plot. Чтобы отобразить существующее подчеркивание в любом имени предиктора, измените TickLabelInterpreter значение осей для 'none'.
f = plot(results);
f.CurrentAxes.TickLabelInterpreter = 'none';
График отображает два прогноза для точки запроса, которые соответствуют свойству BlackaseFithed и свойству 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.088412
RE_TA 0.0018061
Обучение регрессионной модели и создание 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');Тренировка модели blackbox MPG с помощью fitrkernel функция.
rng('default') % For reproducibility mdl = fitrkernel(tblX,tbl.MPG,'CategoricalPredictors',[2 5]);
Создать lime объект. Укажите набор данных предиктора, поскольку mdl не содержит данных предиктора.
results = lime(mdl,tblX)
results =
lime with properties:
BlackboxModel: [1x1 RegressionKernel]
DataLocality: 'global'
CategoricalPredictors: [2 5]
Type: 'regression'
X: [392x6 table]
QueryPoint: []
NumImportantPredictors: []
NumSyntheticData: 5000
SyntheticData: [5000x6 table]
Fitted: [5000x1 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';
График отображает два прогноза для точки запроса, которые соответствуют свойству BlackaseFithed и свойству SimpleModelFitted results.
Горизонтальная гистограмма показывает значения коэффициентов простой модели, отсортированные по их абсолютным значениям. Поиск LIME Horsepower, Model_Year, и Cylinders в качестве важных предикторов для точки запроса.
Model_Year и Cylinders являются категориальными предикторами, имеющими несколько категорий. Для линейной простой модели программа создает одну меньшую фиктивную переменную, чем количество категорий для каждого категориального предиктора. На гистограмме отображается только самая важная фиктивная переменная. Можно проверить коэффициенты других фиктивных переменных с помощью SimpleModel имущество results. Отображение отсортированных значений коэффициентов, включая все категориальные фиктивные переменные.
[~,I] = sort(abs(results.SimpleModel.Beta),'descend'); table(results.SimpleModel.ExpandedPredictorNames(I)',results.SimpleModel.Beta(I), ... 'VariableNames',{'Exteded Predictor Name','Coefficient'})
ans=17×2 table
Exteded Predictor Name Coefficient
__________________________ ___________
{'Horsepower' } -3.4485e-05
{'Model_Year (74 vs. 70)'} -6.1279e-07
{'Model_Year (80 vs. 70)'} -4.015e-07
{'Model_Year (81 vs. 70)'} 3.4176e-07
{'Model_Year (82 vs. 70)'} -2.2483e-07
{'Cylinders (6 vs. 8)' } -1.9024e-07
{'Model_Year (76 vs. 70)'} 1.8136e-07
{'Cylinders (5 vs. 8)' } 1.7461e-07
{'Model_Year (71 vs. 70)'} 1.558e-07
{'Model_Year (75 vs. 70)'} 1.5456e-07
{'Model_Year (77 vs. 70)'} 1.521e-07
{'Model_Year (78 vs. 70)'} 1.4272e-07
{'Model_Year (72 vs. 70)'} 6.7001e-08
{'Model_Year (73 vs. 70)'} 4.7214e-08
{'Cylinders (4 vs. 8)' } 4.5118e-08
{'Model_Year (79 vs. 70)'} -2.2598e-08
⋮
results - Результаты LIMElime объектРезультаты LIME, указанные как lime объект. SimpleModel имущество results должен содержать встроенную простую модель.
[1] Рибейро, Марко Тулио, С. Сингх и К. Гестрин. "Почему я должен доверять вам?": Объяснение предсказаний любого классификатора. " В трудах 22-й Международной конференции ACM SIGKDD по открытию знаний и анализу данных, 1135-44. Сан-Франциско, Калифорния: ACM, 2016.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.