Локальные поддающиеся толкованию объяснения модели агностические (LIME)
LIME объясняет предсказание модели машинного обучения (классификация или регрессия) для точки запроса, находя важные предикторы и подбирая простую поддающуюся толкованию модель.
Можно создать lime
объект для модели машинного обучения с заданной точкой запроса (queryPoint
) и конкретное количество важных предикторов (numImportantPredictors
). Программное обеспечение генерирует синтетический набор данных и подбирает простую поддающуюся толкованию модель важных предикторов, которая эффективно объясняет предсказания для синтетических данных вокруг точки запроса. Простая модель может быть линейной моделью (значение по умолчанию) или модель дерева принятия решения.
Используйте подбиравшую простую модель, чтобы объяснить предсказание модели машинного обучения локально в заданной точке запроса. Используйте plot
функция, чтобы визуализировать результаты LIME. На основе локальных объяснений можно решить, доверять ли модели машинного обучения.
Подбирайте новую простую модель для другой точки запроса при помощи fit
функция.
создает results
= lime(blackbox
)lime
объект с помощью объекта модели машинного обучения blackbox
это содержит данные о предикторе. lime
функция генерирует выборки синтетического набора данных предиктора и вычисляет предсказания для выборок. Чтобы подбирать простую модель, используйте fit
функция с results
.
создает results
= lime(blackbox
,'CustomSyntheticData',customSyntheticData
)lime
объект с помощью предсгенерированного, пользовательского синтетического набора данных предиктора customSyntheticData
. lime
функция вычисляет предсказания для выборок в customSyntheticData
.
также находит конкретное количество важных предикторов и подбирает линейную простую модель для точки запроса results
= lime(___,'QueryPoint',queryPoint
,'NumImportantPredictors',numImportantPredictors
)queryPoint
. Можно задать queryPoint
и numImportantPredictors
в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах.
задает дополнительные опции с помощью одних или нескольких аргументов name-value. Например, results
= lime(___,Name,Value
)'SimpleModelType','tree'
задает тип простой модели как модель дерева принятия решения.
blackbox
— Модель машинного обучения, которая будет интерпретированаМодель машинного обучения, которая будет интерпретирована в виде полной или компактной регрессии или объекта модели классификации или указателя на функцию.
Объект полной или компактной модели — можно задать полную или компактную регрессию или объект модели классификации, который имеет a predict
объектная функция. Программное обеспечение использует predict
функция, чтобы вычислить предсказания для точки запроса и синтетического набора данных предиктора.
Если вы задаете объект модели, который не содержит данные о предикторе (например, компактная модель), то необходимо обеспечить данные о предикторе с помощью X
или customSyntheticData
.
lime
не поддерживает объект модели, обученный с разреженной матрицей. Когда вы обучаете модель, используйте полную числовую матрицу или таблицу для данных о предикторе, где строки соответствуют отдельным наблюдениям.
Объект модели регрессии
Поддерживаемая модель | Полный или компактный объект модели регрессии |
---|---|
Ансамбль моделей регрессии | RegressionEnsemble , RegressionBaggedEnsemble , CompactRegressionEnsemble |
Гауссова модель регрессии ядра использование случайного расширения функции | RegressionKernel |
Гауссова регрессия процесса | RegressionGP , CompactRegressionGP |
Обобщенная аддитивная модель | RegressionGAM , CompactRegressionGAM |
Линейная регрессия для высоко-размерных данных | RegressionLinear |
Модель регрессии нейронной сети | RegressionNeuralNetwork , CompactRegressionNeuralNetwork |
Дерево регрессии | RegressionTree , CompactRegressionTree |
Регрессия машины опорных векторов | RegressionSVM , CompactRegressionSVM |
Объект модели классификации
Поддерживаемая модель | Полный или компактный объект модели классификации |
---|---|
Дерево выбора из двух альтернатив для классификации мультиклассов | ClassificationTree , CompactClassificationTree |
Классификатор дискриминантного анализа | ClassificationDiscriminant , CompactClassificationDiscriminant |
Ансамбль учеников для классификации | ClassificationEnsemble , CompactClassificationEnsemble , ClassificationBaggedEnsemble |
Гауссова модель классификации ядер использование случайного расширения функции | ClassificationKernel |
Обобщенная аддитивная модель | ClassificationGAM , CompactClassificationGAM |
k- соседняя модель | ClassificationKNN |
Линейная модель классификации | ClassificationLinear |
Модель Multiclass для машин опорных векторов или других классификаторов | ClassificationECOC , CompactClassificationECOC |
Наивная модель Bayes | ClassificationNaiveBayes , CompactClassificationNaiveBayes |
Классификатор нейронной сети | ClassificationNeuralNetwork , CompactClassificationNeuralNetwork |
Машина опорных векторов для бинарной классификации | ClassificationSVM , CompactClassificationSVM |
Указатель на функцию — можно задать указатель на функцию, который принимает данные о предикторе и возвращает вектор-столбец, содержащий предсказание для каждого наблюдения в данных о предикторе. Предсказание является предсказанным ответом для регрессии или классифицированной меткой для классификации. Необходимо обеспечить данные о предикторе с помощью X
или customSyntheticData
и задайте 'Type'
аргумент значения имени.
X
— Данные о предиктореДанные о предикторе в виде числовой матрицы или таблицы. Каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
X
должно быть сопоставимо с данными о предикторе, которые обучили blackbox
, сохраненный в blackbox.X
. Заданное значение не должно содержать переменную отклика.
X
должен иметь совпадающие типы данных как переменные предикторы (например, trainX
) это обучило blackbox
. Переменные, которые составляют столбцы X
должен иметь тот же номер и порядок как в trainX
.
Если вы обучаете blackbox
использование числовой матрицы, затем X
должна быть числовая матрица.
Если вы обучаете blackbox
использование таблицы, затем X
должна быть таблица. Все переменные предикторы в X
должен иметь те же имена переменных и типы данных как в trainX
.
lime
не поддерживает разреженную матрицу.
Если blackbox
объект модели, который не содержит данные о предикторе или указатель на функцию, необходимо обеспечить X
или customSyntheticData
. Если blackbox
полный объект модели машинного обучения, и вы задаете этот аргумент, затем lime
не использует данные о предикторе в blackbox
. Это использует заданные данные о предикторе только.
Типы данных: single
| double
| table
customSyntheticData
— Предсгенерированный, пользовательский синтетический набор данных предиктора[]
(значение по умолчанию) | числовая матрица | таблицаПредсгенерированный, пользовательский синтетический набор данных предиктора в виде числовой матрицы или таблицы.
Если вы обеспечиваете предсгенерированный набор данных, то lime
использует набор предоставленных данных вместо того, чтобы генерировать новый синтетический набор данных предиктора.
customSyntheticData
должно быть сопоставимо с данными о предикторе, которые обучили blackbox
, сохраненный в blackbox.X
. Заданное значение не должно содержать переменную отклика.
customSyntheticData
должен иметь совпадающие типы данных как переменные предикторы (например, trainX
) это обучило blackbox
. Переменные, которые составляют столбцы customSyntheticData
должен иметь тот же номер и порядок как в trainX
Если вы обучаете blackbox
использование числовой матрицы, затем customSyntheticData
должна быть числовая матрица.
Если вы обучаете blackbox
использование таблицы, затем customSyntheticData
должна быть таблица. Все переменные предикторы в customSyntheticData
должен иметь те же имена переменных и типы данных как в trainX
.
lime
не поддерживает разреженную матрицу.
Если blackbox
объект модели, который не содержит данные о предикторе или указатель на функцию, необходимо обеспечить X
или customSyntheticData
. Если blackbox
полный объект модели машинного обучения, и вы задаете этот аргумент, затем lime
не использует данные о предикторе в blackbox
; это использует заданные данные о предикторе только.
Типы данных: single
| double
| table
queryPoint
— Точка запросаТочка запроса, в который lime
объясняет предсказание в виде вектора-строки из числовых значений или таблицы одной строки. queryPoint
должен иметь совпадающий тип данных и количество столбцов как X
, customSyntheticData
, или данные о предикторе в blackbox
.
Если вы задаете numImportantPredictors
и queryPoint
, затем lime
функция подбирает простую модель при создании lime
объект.
queryPoint
не должен содержать отсутствующие значения.
Пример: blackbox.X(1,:)
задает точку запроса как первое наблюдение за данными о предикторе в полной модели blackbox
машинного обучения.
Типы данных: single
| double
| table
numImportantPredictors
— Количество важных предикторов, чтобы использовать в простой моделиКоличество важных предикторов, чтобы использовать в простой модели в виде положительного значения целочисленного скаляра.
Если 'SimpleModelType'
'linear'
, затем программное обеспечение выбирает конкретное количество важных предикторов и подбирает линейную модель выбранных предикторов.
Если 'SimpleModelType'
'tree'
, затем программное обеспечение задает максимальное количество разделений решения (или узлы ветви) как количество важных предикторов так, чтобы подходящее дерево решений использовало самое большее конкретное количество предикторов.
Если вы задаете numImportantPredictors
и queryPoint
, затем lime
функция подбирает простую модель при создании lime
объект.
Типы данных: single
| double
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
lime
(blackbox
, 'QueryPoint'
, q, 'NumImportantPredictors'
, n, 'SimpleModelType', 'дерево')
задает точку запроса как q
, количество важных предикторов, чтобы использовать для простой модели как n
, и тип простой модели как модель дерева принятия решения. lime
генерирует выборки синтетического набора данных предиктора, вычисляет предсказания для выборок и соответствует модели дерева принятия решения для точки запроса, использующей самое большее конкретное количество предикторов.DataLocality
— Местность синтетических данных для генерации данных'global'
(значение по умолчанию) | 'local'
Местность синтетических данных для генерации данных в виде разделенной запятой пары, состоящей из 'DataLocality'
и 'global'
или 'local'
.
'global'
— Программное обеспечение оценивает параметры распределения с помощью целого набора данных предиктора (X
или данные о предикторе в blackbox
). Программное обеспечение генерирует синтетический набор данных предиктора предполагаемыми параметрами и использует набор данных для простого подбора кривой модели любой точки запроса.
'local'
— Программное обеспечение оценивает параметры распределения с помощью k - самые близкие соседи точки запроса, где k является 'NumNeighbors'
значение. Программное обеспечение генерирует новый синтетический набор данных предиктора каждый раз, когда оно подбирает простую модель для заданной точки запроса.
Для получения дополнительной информации смотрите LIME.
Пример: 'DataLocality','local'
Типы данных: char |
string
NumNeighbors
— Количество соседей точки запросаКоличество соседей точки запроса в виде разделенной запятой пары, состоящей из 'NumNeighbors'
и положительное значение целочисленного скаляра. Этот аргумент допустим только когда 'DataLocality'
'local'
.
Если вы задаете значение, больше, чем количество наблюдений в наборе данных предиктора (X
или данные о предикторе в blackbox
), затем lime
использование все наблюдения.
Пример: 'NumNeighbors',2000
Типы данных: single
| double
NumSyntheticData
— Количество отсчетов, чтобы сгенерировать для синтетического набора данныхКоличество отсчетов, чтобы сгенерировать для синтетического набора данных в виде разделенной запятой пары, состоящей из 'NumSyntheticData'
и положительное значение целочисленного скаляра.
Пример: 'NumSyntheticData',2500
Типы данных: single
| double
KernelWidth
— Ширина ядраШирина ядра экспоненциала в квадрате (или Гауссов) ядро функционирует в виде разделенной запятой пары, состоящей из 'KernelWidth'
и значение числового скаляра.
lime
функция вычисляет расстояния между точкой запроса и выборками в синтетическом наборе данных предиктора, и затем преобразует расстояния до весов при помощи экспоненциальной функции ядра в квадрате. Если вы понижаете 'KernelWidth'
значение, затем lime
веса использования, которые более фокусируются на выборках около точки запроса. Для получения дополнительной информации смотрите LIME.
Пример: 'KernelWidth',0.5
Типы данных: single
| double
SimpleModelType
— Тип простой модели'linear'
(значение по умолчанию) | 'tree'
Тип простой модели в виде разделенной запятой пары, состоящей из 'SimpleModelType'
и 'linear'
или 'tree'
.
'linear'
— Программное обеспечение подбирает линейную модель при помощи fitrlinear
для регрессии или fitclinear
для классификации.
'tree'
— Программное обеспечение соответствует модели дерева принятия решения при помощи fitrtree
для регрессии или fitctree
для классификации.
Пример: 'SimpleModelType','tree'
Типы данных: char |
string
CategoricalPredictors
— Категориальный список предикторов'all'
Категориальные предикторы перечисляют в виде разделенной запятой пары, состоящей из 'CategoricalPredictors'
и одно из значений в этой таблице.
Значение | Описание |
---|---|
Вектор из положительных целых чисел | Каждая запись в векторе является значением индекса, указывающим, что соответствующий предиктор является категориальным. Значения индекса между 1 и Если |
Логический вектор |
|
Символьная матрица | Каждая строка матрицы является именем переменного предиктора. Имена должны совпадать с именами переменных данных о предикторе в форме таблицы. Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину. |
Массив строк или массив ячеек из символьных векторов | Каждым элементом в массиве является имя переменного предиктора. Имена должны совпадать с именами переменных данных о предикторе в форме таблицы. |
'all' | Все предикторы являются категориальными. |
Если вы задаете blackbox
как указатель на функцию, затем lime
идентифицирует категориальные предикторы из данных о предикторе X
или customSyntheticData
. Если данные о предикторе находятся в таблице, lime
принимает, что переменная является категориальной, если это - логический вектор, неупорядоченный категориальный вектор, символьный массив, массив строк или массив ячеек из символьных векторов. Если данные о предикторе являются матрицей, lime
принимает, что все предикторы непрерывны.
Если вы задаете blackbox
как регрессия или объект модели классификации, затем lime
идентифицирует категориальные предикторы при помощи CategoricalPredictors
свойство объекта модели.
lime
не поддерживает упорядоченный категориальный предиктор.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
Type
— Тип модели машинного обучения'regression
| 'classification'
Тип модели машинного обучения в виде разделенной запятой пары, состоящей из 'Type'
и 'regression
или 'classification'
.
Необходимо задать этот аргумент, когда вы задаете blackbox
как указатель на функцию. Если вы задаете blackbox
как регрессия или объект модели классификации, затем lime
определяет 'Type'
значение в зависимости от типа модели.
Пример: 'Type','classification'
Типы данных: char |
string
Distance
— Метрика расстоянияМетрика расстояния в виде разделенной запятой пары, состоящей из 'Distance'
и вектор символов, строковый скаляр или указатель на функцию.
Если данные о предикторе включают только непрерывные переменные, то lime
поддержки эти метрики расстояния.
Значение | Описание |
---|---|
'euclidean' | Евклидово расстояние. |
'seuclidean' | Стандартизированное Евклидово расстояние. Каждое координатное различие между наблюдениями масштабируется путем деления на соответствующий элемент стандартного отклонения, |
'mahalanobis' | Расстояние Mahalanobis с помощью выборочной ковариации |
'cityblock' | Расстояние городского квартала. |
'minkowski' | Расстояние Минковскего. Экспонента по умолчанию равняется 2. Чтобы задать различную экспоненту, используйте |
'chebychev' | Расстояние Чебычева (максимум координируют различие). |
'cosine' | Один минус косинус включенного угла между точками (обработанный как векторы). |
'correlation' | Один минус корреляция выборки между точками (обработанный как последовательности значений). |
'spearman' | Один минус порядковая корреляция демонстрационного Копьеносца между наблюдениями (обработанный как последовательности значений). |
@ | Пользовательский указатель на функцию расстояния. Функция расстояния имеет форму function D2 = distfun(ZI,ZJ) % calculation of distance ...
Если ваши данные не разреженны, можно обычно вычислять расстояние более быстро при помощи встроенной метрики расстояния вместо указателя на функцию. |
Если данные о предикторе включают и непрерывные и категориальные переменные, то lime
поддержки эти метрики расстояния.
Значение | Описание |
---|---|
'goodall3' | Модифицированное расстояние Гудолла |
'ofd' | Расстояние частоты вхождения |
Для определений смотрите Метрики Расстояния.
Значением по умолчанию является 'euclidean'
если данные о предикторе включают только непрерывные переменные или 'goodall3'
если данные о предикторе включают и непрерывные и категориальные переменные.
Пример: 'Distance','ofd'
Типы данных: char |
string
| function_handle
Cov
— Ковариационная матрица для метрики расстояния MahalanobisКовариационная матрица для метрики расстояния Mahalanobis в виде разделенной запятой пары, состоящей из 'Cov'
и K-by-K положительная определенная матрица, где K является количеством предикторов.
Этот аргумент допустим только если 'Distance'
'mahalanobis'
.
'Cov'
по умолчанию значением является
cov(PD,'omitrows')
, где PD
данные о предикторе или синтетические данные о предикторе. Если вы не задаете 'Cov'
значение, затем программное обеспечение использует различные ковариационные матрицы при вычислении расстояний и для данных о предикторе и для синтетических данных о предикторе.
Пример: 'Cov',eye(3)
Типы данных: single
| double
P
— Экспонента для метрики расстояния Минковскего
(значение по умолчанию) | положительная скалярная величинаЭкспонента для метрики расстояния Минковскего в виде разделенной запятой пары, состоящей из 'P'
и положительная скалярная величина.
Этот аргумент допустим только если 'Distance'
'minkowski'
.
Пример: 'P',3
Типы данных: single
| double
Scale
— Значение масштабного коэффициента для стандартизированной Евклидовой метрики расстоянияЗначение масштабного коэффициента для стандартизированной Евклидовой метрики расстояния в виде разделенной запятой пары, состоящей из 'Scale'
и неотрицательный числовой вектор из длины K, где K является количеством предикторов.
Этот аргумент допустим только если 'Distance'
'seuclidean'
.
'Scale'
по умолчанию значением является
std(PD,'omitnan')
, где PD
данные о предикторе или синтетические данные о предикторе. Если вы не задаете 'Scale'
значение, затем программное обеспечение использует различные масштабные коэффициенты при вычислении расстояний и для данных о предикторе и для синтетических данных о предикторе.
Пример: 'Scale',quantile(X,0.75) - quantile(X,0.25)
Типы данных: single
| double
Можно задать следующие свойства при создании lime
объект.
BlackboxModel
— Модель машинного обучения, которая будет интерпретированаЭто свойство доступно только для чтения.
Модель машинного обучения, которая будет интерпретирована в виде регрессии или объекта модели классификации или указателя на функцию.
blackbox
аргумент устанавливает это свойство.
CategoricalPredictors
— Категориальные индексы предиктора[]
Это свойство доступно только для чтения.
Категориальные индексы предиктора в виде вектора из положительных целых чисел. CategoricalPredictors
содержит значения индекса, указывающие, что соответствующие предикторы являются категориальными. Значения индекса между 1 и p
, где p
количество предикторов, используемых, чтобы обучить модель. Если ни один из предикторов не является категориальным, то это свойство пусто ([]
).
Если вы задаете blackbox
использование указателя на функцию, затем lime
идентифицирует категориальные предикторы из данных о предикторе X
или customSyntheticData
. Если вы задаете 'CategoricalPredictors'
аргумент значения имени, затем аргумент устанавливает это свойство.
Если вы задаете blackbox
как регрессия или объект модели классификации, затем lime
определяет это свойство при помощи CategoricalPredictors
свойство объекта модели.
lime
не поддерживает упорядоченный категориальный предиктор.
Если 'SimpleModelType'
'linear'
(значение по умолчанию), затем lime
создает фиктивные переменные для каждого идентифицированного категориального предиктора. lime
обрабатывает категорию заданной точки запроса как ссылочная группа и создает ту меньше фиктивной переменной, чем количество категорий. Для получения дополнительной информации смотрите Фиктивные Переменные с Reference Group.
Типы данных: single
| double
DataLocality
— Местность синтетических данных для генерации данных'global'
| 'local'
Это свойство доступно только для чтения.
Местность синтетических данных для генерации данных в виде 'global'
или 'local'
.
'DataLocality'
аргумент значения имени устанавливает это свойство.
NumImportantPredictors
— Количество важных предикторов, чтобы использовать в простой моделиЭто свойство доступно только для чтения.
Количество важных предикторов, чтобы использовать в простой модели (SimpleModel
) в виде положительного значения целочисленного скаляра.
numImportantPredictors
аргумент lime
или numImportantPredictors
аргумент fit
наборы это свойство.
Типы данных: single
| double
NumSyntheticData
— Количество отсчетов в синтетическом наборе данныхЭто свойство доступно только для чтения.
Количество отсчетов в синтетическом наборе данных в виде положительного значения целочисленного скаляра.
Если вы задаете customSyntheticData
, затем количество отсчетов в пользовательском синтетическом наборе данных устанавливает это свойство.
В противном случае, 'NumSyntheticData'
аргумент значения имени lime
или 'NumSyntheticData'
аргумент значения имени fit
наборы это свойство.
Типы данных: single
| double
QueryPoint
— Точка запросаЭто свойство доступно только для чтения.
Точка запроса, в который lime
объясняет предсказание с помощью простой модели (SimpleModel
) в виде вектора-строки из числовых значений или таблицы одной строки.
queryPoint
аргумент lime
или queryPoint
аргумент fit
наборы это свойство.
Типы данных: single
| double
| table
Type
— Тип модели машинного обучения'regression
| 'classification'
Это свойство доступно только для чтения.
Тип модели машинного обучения (BlackboxModel
) в виде 'regression
или 'classification'
.
X
— Данные о предиктореЭто свойство доступно только для чтения.
Данные о предикторе в виде числовой матрицы или таблицы.
Каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Если вы задаете X
аргумент, затем аргумент устанавливает это свойство.
Если вы задаете customSyntheticData
аргумент, затем это свойство пусто.
Если вы задаете blackbox
как полный объект модели машинного обучения и не задают X
или customSyntheticData
, затем это значение свойства является данными о предикторе, используемыми, чтобы обучить blackbox
.
lime
не использует строки, которые содержат отсутствующие значения, и не хранит строки в X
.
Типы данных: single
| double
| table
Программное обеспечение вычисляет следующие свойства.
BlackboxFitted
— Предсказание для точки запроса вычисляется моделью машинного обученияЭто свойство доступно только для чтения.
Предсказание для точки запроса, вычисленной моделью машинного обучения (BlackboxModel
) в виде скаляра. Предсказание является предсказанным ответом для регрессии или классифицированной меткой для классификации.
Типы данных: single
| double
| categorical
| logical
| char
| string
| cell
Fitted
— Предсказания для синтетических данных о предикторе вычисляются моделью машинного обученияЭто свойство доступно только для чтения.
Предсказания для синтетических данных о предикторе, вычисленных моделью машинного обучения (BlackboxModel
) в виде вектора.
Типы данных: single
| double
| categorical
| logical
| char
| string
| cell
ImportantPredictors
— Важные индексы предиктораЭто свойство доступно только для чтения.
Важные индексы предиктора в виде вектора из положительных целых чисел. ImportantPredictors
содержит значения индекса, соответствующие столбцам предикторов, используемых в простой модели (SimpleModel
).
Типы данных: single
| double
SimpleModel
— Простая модельRegressionLinear
объект модели | RegressionTree
объект модели | ClassificationLinear
объект модели | ClassificationTree
объект моделиЭто свойство доступно только для чтения.
Простая модель в виде RegressionLinear
, RegressionTree
, ClassificationLinear
, или ClassificationTree
объект модели. lime
определяет тип простого объекта модели в зависимости от типа модели машинного обучения (Type
) и тип простой модели ('SimpleModelType'
).
SimpleModelFitted
— Предсказание для точки запроса вычисляется простой модельюЭто свойство доступно только для чтения.
Предсказание для точки запроса, вычисленной простой моделью (SimpleModel
) в виде скаляра.
Если SimpleModel
ClassificationLinear
, затем SimpleModelFitted
значение равняется 1 или –1.
SimpleModelFitted
значение равняется 1, если предсказание из простой модели совпадает с BlackboxFitted
(предсказание из модели машинного обучения).
SimpleModelFitted
значение –1, если предсказание из простой модели отличается от BlackboxFitted
. Если BlackboxFitted
значением является A
, затем plot
функционируйте отображает SimpleModelFitted
значение как Not A
.
Типы данных: single
| double
| categorical
| logical
| char
| string
| cell
SyntheticData
— Синтетические данные о предиктореЭто свойство доступно только для чтения.
Синтетические данные о предикторе в виде числовой матрицы или таблицы.
Если вы задаете customSyntheticData
входной параметр, затем аргумент устанавливает это свойство.
В противном случае, lime
оценочные параметры распределения из данных о предикторе X
и генерирует синтетический набор данных предиктора.
Типы данных: single
| double
| table
Обучите модель классификации и создайте 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
объект, затем программное обеспечение генерирует выборки синтетического набора данных и подбирает простую поддающуюся толкованию модель к синтетическому набору данных.
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';
График отображает два предсказания для точки запроса, которые соответствуют свойству 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.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');
Обучите модель черного ящика 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';
График отображает два предсказания для точки запроса, которые соответствуют свойству BlackboxFitted и свойству 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
⋮
Обучите модель регрессии и создайте lime
объект с помощью указателя на функцию для predict
функция модели. Используйте объектный функциональный fit
подбирать простую модель для заданной точки запроса. Затем отобразите коэффициенты подбиравшей линейной простой модели при помощи объектного функционального plot
.
Загрузите carbig
набор данных, который содержит измерения автомобилей, сделанных в 1970-х и в начале 1980-х.
load carbig
Составьте таблицу, содержащую переменные предикторы Acceleration
, Cylinders
, и так далее.
tbl = table(Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight);
Обучите модель черного ящика MPG
при помощи TreeBagger
функция.
rng('default') % For reproducibility Mdl = TreeBagger(100,tbl,MPG,'Method','regression','CategoricalPredictors',[2 5]);
lime
не поддерживает TreeBagger
возразите непосредственно, таким образом, вы не можете задать первый входной параметр (модель черного ящика) lime
как TreeBagger
объект. Вместо этого можно использовать указатель на функцию для predict
функция. Можно также задать опции predict
функция с помощью аргументов name-value функции.
Создайте указатель на функцию к predict
функция TreeBagger
объект Mdl
. Задайте массив древовидных индексов, чтобы использовать в качестве 1:50
.
myPredict = @(tbl) predict(Mdl,tbl,'Trees',1:50);
Создайте lime
объект с помощью указателя на функцию myPredict
. Когда вы задаете модель черного ящика как указатель на функцию, необходимо обеспечить данные о предикторе и задать 'Type'
аргумент значения имени. tbl
включает категориальные предикторы (Cylinder
и Model_Year
) с double
тип данных. По умолчанию, lime
не обрабатывает переменные с double
тип данных как категориальные предикторы. Задайте второе (Cylinder
) и пятый (Model_Year
) переменные как категориальные предикторы.
results = lime(myPredict,tbl,'Type','regression','CategoricalPredictors',[2 5]);
Подбирайте линейную простую модель для первого наблюдения в tbl
. Чтобы отобразить существующее подчеркивание на любое имя предиктора, измените TickLabelInterpreter
значение осей к 'none'
.
results = fit(results,tbl(1,:),4);
f = plot(results);
f.CurrentAxes.TickLabelInterpreter = 'none';
lime
находит Horsepower
, Displacement
, Cylinders
, и Model_Year
как важные предикторы.
Метрика расстояния является функцией, которая задает расстояние между двумя наблюдениями. lime
поддерживает различные метрики расстояния для непрерывных переменных и соединения непрерывных и категориальных переменных.
Метрики расстояния для непрерывных переменных
Учитывая mx-by-n матрица данных X, который обработан как mx (1 n) векторы-строки x1, x2..., xmx и my-by-n матрица данных Y, который обработан как my (1 n) векторы-строки y1, y2..., ymy, определяются следующим образом различные расстояния между векторным xs и yt:
Евклидово расстояние
Евклидово расстояние является особым случаем расстояния Минковскего, где p = 2.
Стандартизированное Евклидово расстояние
где V является n-by-n диагональная матрица, j которой th диагональный элемент (S (j))2, где S является вектором из масштабных коэффициентов для каждой размерности.
Расстояние Mahalanobis
где C является ковариационной матрицей.
Расстояние городского квартала
Расстояние городского квартала является особым случаем расстояния Минковскего, где p = 1.
Расстояние Минковскего
Для особого случая p = 1, расстояние Минковскего дает расстояние городского квартала. Для особого случая p = 2, расстояние Минковскего дает Евклидово расстояние. Для особого случая p = ∞, расстояние Минковскего дает расстояние Чебычева.
Расстояние Чебычева
Расстояние Чебычева является особым случаем расстояния Минковскего, где p = ∞.
Расстояние косинуса
Расстояние корреляции
где
и
Расстояние копьеносца
где
Метрики расстояния для соединения непрерывных и категориальных переменных
Модифицированное расстояние Гудолла
Это расстояние является вариантом расстояния Гудолла, которое присваивает маленькое расстояние, если совпадающие значения являются нечастыми независимо от частот других значений. Для несоответствий вклад расстояния предиктора равняется 1 / (количество переменных).
Расстояние частоты вхождения
Для соответствия расстояние частоты вхождения присваивает нулевое расстояние. Для несоответствия расстояние частоты вхождения присваивает более высокое расстояние на менее частом значении и более низкое расстояние на более частом значении.
Чтобы объяснить предсказание модели машинного обучения использование LIME [1], программное обеспечение генерирует синтетический набор данных и подбирает простую поддающуюся толкованию модель к синтетическому набору данных при помощи lime
и fit
, как описано в шагах 1-5.
Если вы задаете queryPoint
и numImportantPredictors
значения lime
, затем lime
функция выполняет все шаги.
Если вы не задаете queryPoint
и numImportantPredictors
и задайте 'DataLocality'
как 'global'
(значение по умолчанию), затем lime
функция генерирует синтетический набор данных (шаги 1-2), и fit
функционируйте подбирает простую модель (шаги 3-5).
Если вы не задаете queryPoint
и numImportantPredictors
и задайте 'DataLocality'
как 'local'
, затем fit
функция выполняет все шаги.
lime
и fit
функции выполняют эти шаги:
Сгенерируйте синтетический набор данных предиктора Xs с помощью многомерного нормального распределения для непрерывных переменных и распределения многочлена для каждой категориальной переменной. Можно задать количество отсчетов, чтобы сгенерировать при помощи 'NumSyntheticData'
аргумент значения имени.
Если 'DataLocality'
'global'
(значение по умолчанию), затем программное обеспечение оценивает параметры распределения от целого набора данных предиктора (X
или данные о предикторе в blackbox
).
Если 'DataLocality'
'local'
, затем программное обеспечение оценивает параметры распределения с помощью k - самые близкие соседи точки запроса, где k является 'NumNeighbors'
значение. Можно задать метрику расстояния, чтобы найти самых близких соседей при помощи 'Distance'
аргумент значения имени.
Программное обеспечение игнорирует отсутствующие значения в наборе данных предиктора при оценке параметров распределения.
В качестве альтернативы можно обеспечить предсгенерированный, пользовательский синтетический набор данных предиктора при помощи customSyntheticData
входной параметр lime
.
Вычислите предсказания Ys для синтетического набора данных Xs. Предсказания являются предсказанными ответами для регрессии или классифицированными метками для классификации. Программное обеспечение использует predict
функция blackbox
модель, чтобы вычислить предсказания. Если вы задаете blackbox
как указатель на функцию, затем программное обеспечение вычисляет предсказания при помощи указателя на функцию.
Вычислите расстояния d между точкой запроса и выборками в синтетическом наборе данных предиктора с помощью метрики расстояния, заданной 'Distance'
.
Вычислите значения веса wq выборок в синтетическом наборе данных предиктора относительно точки запроса q с помощью экспоненциала в квадрате (или Гауссов) функция ядра
xs является выборкой в синтетическом наборе данных предиктора Xs.
d (xs, q) является расстоянием между демонстрационным xs и точкой запроса q.
p является количеством предикторов в Xs.
σ является шириной ядра, которую можно задать при помощи 'KernelWidth'
аргумент значения имени. 'KernelWidth'
по умолчанию значение 0.75.
Значение веса в точке запроса равняется 1, и затем это сходится, чтобы обнулить как повышения стоимости расстояния. 'KernelWidth'
значение управляет, как быстро значение веса сходится, чтобы обнулить. Ниже 'KernelWidth'
значение, быстрее значение веса сходится, чтобы обнулить. Поэтому алгоритм дает больше веса выборкам около точки запроса. Поскольку этот алгоритм использует такие значения веса, выбранные важные предикторы и подбирал простую модель, эффективно объясняют предсказания для синтетических данных локально, вокруг точки запроса.
Подбирайте простую модель.
Если 'SimpleModelType'
'linear'
(значение по умолчанию), затем программное обеспечение выбирает важные предикторы и подбирает линейную модель выбранных важных предикторов.
Выберите n важные предикторы () при помощи алгоритма ортогонального преследования соответствия (OMP) группы [2][3], где n является numImportantPredictors
значение. Этот алгоритм использует синтетический набор данных предиктора (Xs), предсказания (Ys) и значения веса (wq).
Подбирайте линейную модель выбранных важных предикторов () к предсказаниям (Ys) с помощью значений веса (wq). Использование программного обеспечения fitrlinear
для регрессии или fitclinear
для классификации. Для модели мультикласса программное обеспечение использует one-all схему создать бинарную проблему классификации. Положительный класс является предсказанным классом для точки запроса от blackbox
модель и отрицательный класс относятся к другим классам.
Если 'SimpleModelType'
'tree'
, затем программное обеспечение соответствует модели дерева принятия решения при помощи fitrtree
для регрессии или fitctree
для классификации. Программное обеспечение задает максимальное количество разделений решения (или узлы ветви) как количество важных предикторов так, чтобы подходящее дерево решений использовало самое большее конкретное количество предикторов.
[1] Рибейру, Марко Тулио, С. Сингх и К. Гуестрин. "'Почему я должен Доверять Вам?': Объяснение Предсказаний Любого Классификатора". В Продолжениях 22-й Международной конференции ACM SIGKDD по вопросам Открытия Знаний и Анализа данных, 1135–44. Сан-Франциско, Калифорния: ACM, 2016.
[2] Świrszcz, Гжегож, Наоки Абэ и Орели К. Лозано. "Сгруппированное ортогональное соответствие с преследованием для выбора переменной и предсказания". Усовершенствования в нейронных системах обработки информации (2009): 1150–58.
[3] Лозано, Орели К., Гжегож Świrszcz и Наоки Абэ. "Группа ортогональное соответствие с преследованием для логистической регрессии". Продолжения четырнадцатой международной конференции по вопросам искусственного интеллекта и статистики (2011): 452–60.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.