Локальные интерпретируемые модели-агностические объяснения (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
в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах.
задает дополнительные опции, используя один или несколько аргументов имя-значение. Для примера, results
= lime(___,Name,Value
)'SimpleModelType','tree'
задает тип простой модели как модели дерева решений.
blackbox
- Интерпретируемая модель машинного обученияМодель машинного обучения, которая будет интерпретирована, заданная как полная или компактная регрессия или классификация объект модели или указатель на функцию.
Полный или компактный объект модели - можно задать полный или компактный объект регрессии или классификации модели, который имеет 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 |
Многоклассовая модель для машин опорных векторов или других классификаторов | ClassificationECOC , CompactClassificationECOC |
Наивная модель Байеса | 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', 'tree')
задает точку запроса следующим 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'
и положительное целое скалярное значение. Этот аргумент действителен только при 'DataLocality'
является 'local'
.
Пример: '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 и Если |
Логический вектор | A |
Матрица символов | Каждая строка матрицы является именем переменной. Имена должны совпадать с именами переменных данных предиктора в форме таблицы. Дополните имена дополнительными пробелами, чтобы каждая строка матрицы символов имела одинаковую длину. |
Строковые массивы или массив ячеек векторов символов | Каждый элемент массива является именем переменной. Имена должны совпадать с именами переменных данных предиктора в форме таблицы. |
'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' | Расстояние Махаланобиса с помощью выборочной ковариации |
'cityblock' | Расстояние между блоками. |
'minkowski' | Расстояние Минковского. Экспонента по умолчанию является 2. Чтобы задать другую экспоненту, используйте |
'chebychev' | Расстояние Чебычева (максимальное различие координат). |
'cosine' | Один минус косинус включенного угла между точками (рассматривается как векторы). |
'correlation' | Один минус корреляция выборки между точками (рассматривается как последовательности значений). |
'spearman' | Один минус выборки корреляции ранга Спирмана между наблюдениями (рассматриваются как последовательности значений). |
| Пользовательский указатель на функцию расстояния. Функция расстояния имеет вид function D2 = distfun(ZI,ZJ) % calculation of distance ...
Если ваши данные не разрежены, вы обычно можете вычислить расстояние быстрее, используя встроенную метрику расстояния вместо указателя на функцию. |
Если данные предиктора включают как непрерывные, так и категориальные переменные, то lime
поддерживает эти метрики расстояния.
Значение | Описание |
---|---|
'goodall3' | Измененное расстояние Goodall |
'ofd' | Частотное расстояние вхождения |
Определения см. в разделе Метрики расстояния.
Значение по умолчанию 'euclidean'
если данные предиктора включают только непрерывные переменные, или 'goodall3'
если данные предиктора включают как непрерывные, так и категориальные переменные.
Пример: 'Distance','ofd'
Типы данных: char
| string
| function_handle
'Cov'
- Ковариационная матрица для метрики расстояния МахаланобисаКовариационная матрица для метрики расстояния Махаланобиса, заданная как разделенная разделенными запятой парами, состоящая из 'Cov'
и a K -by K положительно определенная матрица, где K - количество предикторов.
Этот аргумент действителен только в том случае, если 'Distance'
является 'mahalanobis'
.
Значение по умолчанию 'Cov'
значение cov(PD,'omitrows')
, где PD
- данные предиктора или синтетические данные предиктора. Если вы не задаете 'Cov'
тогда программное обеспечение использует различные ковариационные матрицы при вычислении расстояний как для данных предиктора, так и для синтетических данных предиктора.
Пример: 'Cov',eye(3)
Типы данных: single
| double
'P'
- Экспонента для метрики расстояния Минковского2
(по умолчанию) | положительная скалярная величинаЭкспонента для метрики расстояния Минковского, заданная как разделенная разделенными запятой парами, состоящая из '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
- Интерпретируемая модель машинного обученияЭто свойство доступно только для чтения.
Модель машинного обучения, которая будет интерпретирована, задается как объект регрессионной или классификационной модели или указатель на функцию.
The blackbox
аргумент устанавливает это свойство.
CategoricalPredictors
- Категориальные индексы предиктора[]
Это свойство доступно только для чтения.
Категориальные индексы предиктора, заданные как вектор положительных целых чисел. CategoricalPredictors
содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пустое ([]
).
Если вы задаете blackbox
использование указателя на функцию, затем lime
определяет категориальные предикторы из данных предиктора X
или customSyntheticData
. Если вы задаете 'CategoricalPredictors'
аргумент имя-значение, затем аргумент устанавливает это свойство.
Если вы задаете blackbox
как объект регрессионной или классификационной модели, затем lime
определяет это свойство при помощи CategoricalPredictors
свойство объекта модели.
lime
не поддерживает упорядоченный категориальный предиктор.
Если 'SimpleModelType'
является 'linear'
(по умолчанию), затем lime
создает фиктивные переменные для каждого идентифицированного категориального предиктора. lime
рассматривает категорию указанной точки запроса как группу ссылки и создает на одну переменную с меньшим количеством категорий. Для получения дополнительной информации смотрите Переменные Dummy with Ссылки Group.
Типы данных: single
| double
DataLocality
- Локальность синтетических данных для генерации данных'global'
| 'local'
Это свойство доступно только для чтения.
Локальность синтетических данных для генерации данных, заданная как 'global'
или 'local'
.
The 'DataLocality'
аргумент name-value устанавливает это свойство.
NumImportantPredictors
- Количество важных предикторов для использования в простой моделиЭто свойство доступно только для чтения.
Количество важных предикторов для использования в простой модели (SimpleModel
), заданная как положительное целое скалярное значение.
The numImportantPredictors
аргумент lime
или numImportantPredictors
аргумент fit
устанавливает это свойство.
Типы данных: single
| double
NumSyntheticData
- Количество выборок в синтетическом наборе данныхЭто свойство доступно только для чтения.
Количество выборок в синтетическом наборе данных, заданное как положительное целочисленное скалярное значение.
Если вы задаете customSyntheticData
, затем количество выборок в пользовательском синтетическом наборе данных устанавливает это свойство.
В противном случае 'NumSyntheticData'
аргумент имя-значение lime
или 'NumSyntheticData'
аргумент имя-значение fit
устанавливает это свойство.
Типы данных: single
| double
QueryPoint
- Точка запросаЭто свойство доступно только для чтения.
Точка запроса, в которой lime
объясняет предсказание с помощью простой модели (SimpleModel
), заданная как вектор-строка числовых значений или таблица с одной строкой.
The 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.
The SimpleModelFitted
значение равно 1, если предсказание из простой модели то же, что и BlackboxFitted
(предсказание из модели машинного обучения).
The 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"]);
Обучите модель кредитных рейтингов 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';
График отображает два предсказаний для точки запроса, которые соответствуют свойству 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');
Обучите модель 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
содержит сгенерированный синтетический набор данных. The 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);
Обучите модель blackbox MPG
при помощи TreeBagger
функция.
rng('default') % For reproducibility Mdl = TreeBagger(100,tbl,MPG,'Method','regression','CategoricalPredictors',[2 5]);
lime
не поддерживает TreeBagger
объект непосредственно, поэтому вы не можете задать первый входной параметр (модель blackbox) lime
как TreeBagger
объект. Вместо этого можно использовать указатель на функцию для predict
функция. Можно также задать опции predict
функция, использующая аргументы имя-значение функции.
Создайте указатель на функцию для predict
функция TreeBagger
Mdl объекта
. Задайте массив древовидных индексов, которые будут использоваться в качестве 1:50
.
myPredict = @(tbl) predict(Mdl,tbl,'Trees',1:50);
Создайте lime
объект с помощью указателя на функцию myPredict
. Когда вы задаете модель blackbox как указатель на функцию, вы должны предоставить данные предиктора и задать '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 n матрицей данных X, который рассматривает как mx (1-by-<reservedrangesplaceholder13>) векторы - строки x1, x2..., xmx, и my n матрица данных Y, который рассматривают как my (1-by-<reservedrangesplaceholder5>) векторы - строки y1, y2..., ymy, различные расстояния между вектором xs и yt определены следующим образом:
Евклидово расстояние
Евклидово расстояние является частным случаем расстояния Минковского, где p = 2.
Стандартизированное Евклидово расстояние
где V - n -by n диагональная матрица, j-й диагональный элемент которой (S (j))2, где S является вектором масштабирующих коэффициентов для каждой размерности.
Расстояние Махаланобиса
где C - ковариационная матрица.
Расстояние между блоками
Расстояние городского блока является частным случаем расстояния Минковского, где p = 1.
Расстояние Минковского
Для особого случая p = 1 расстояние Минковского даёт городскую блочную дистанцию. Для особого случая p = 2 расстояние Минковского даёт евклидово расстояние. Для особого случая p = ∞ дистанция Минковского даёт дистанцию Чебычева.
Чебычевская дистанция
Дистанция Чебычева является частным случаем дистанции Минковского, где p = ∞.
Косинусоидальное расстояние
Расстояние корреляции
где
и
Расстояние копьеносца
где
rsj - это ранг xsj, занятый x 1 j, x 2 j,... xmx,j, как вычисляетсяtiedrank
.
rtj - это ранг ytj, занятый y 1 j, y 2 j,... ymy,j, как вычисляетсяtiedrank
.
rs и rt являются координатно-ранговыми векторами xs и yt, то есть rs = (rs 1, rs 2,... rsn) и rt = (r t 1, r t 2,... rtn).
.
.
Метрики расстояния для смеси непрерывных и категориальных переменных
Измененное расстояние Goodall
Это расстояние является вариантом расстояния Goodall, которое присваивает небольшое расстояние, если совпадающие значения нечасты независимо от частот других значений. Для несоответствий вклад предиктора в расстояние равен 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, и затем оно сходится к нулю, когда значение расстояния увеличивается. The 'KernelWidth'
значение управляет тем, как быстро значение веса сходится к нулю. Чем ниже 'KernelWidth'
тем быстрее значение веса сходится к нулю. Поэтому алгоритм дает больше веса выборкам около точки запроса. Поскольку этот алгоритм использует такие значения веса, выбранные важные предикторы и подобранная простая модель эффективно объясняют предсказания для синтетических данных локально, вокруг точки запроса.
Подгонка простой модели.
Если 'SimpleModelType'
является 'linear'
(по умолчанию), затем программное обеспечение выбирает важные предикторы и подходит для линейной модели выбранных важных предикторов.
Выберите n важных предикторов () при помощи группового алгоритма ортогонального соответствия (OMP) [2][3], где n является numImportantPredictors
значение. Этот алгоритм использует набор данных синтетического предиктора (Xs), предсказания (Ys) и значения веса (wq).
Подгонка линейной модели выбранных важных предикторов () к предсказаниям (Ys) с использованием значений веса (wq). Программное обеспечение использует fitrlinear
для регрессии или fitclinear
для классификации. Для многоклассовой модели программное обеспечение использует схему один от всех, чтобы создать двоичную задачу классификации. Положительный класс является предсказанным классом для точки запроса из blackbox
модель, и отрицательный класс относится к другим классам.
Если 'SimpleModelType'
является 'tree'
, затем программное обеспечение подходит для модели дерева решений при помощи fitrtree
для регрессии или fitctree
для классификации. Программа задает максимальное количество разделений решений (или узлов ветви) как количество важных предикторов, так что подобранное дерево решений использует самое большее заданное количество предикторов.
[1] Рибейро, Марко Тулио, С. Сингх и К. Гестрин. "Почему я должен доверять вам?": Объяснение предсказаний любого классификатора ". В Трудах 22-й Международной конференции ACM SIGKDD по открытию знаний и майнингу данных, 1135-44. Сан-Франциско, Калифорния: ACM, 2016.
[2] Swirszcz, Grzegorz, Naoki Abe, and Aurélie C. Lozano. Сгруппированное ортогональное совпадение для выбора переменных и предсказания. Усовершенствования в нейронных системах обработки информации (2009): 1150-58.
[3] Lozano, Aurélie C., Grzegorz Swirszcz и Naoki Abe. «Групповое ортогональное сопоставление для логистической регрессии». Материалы четырнадцатой Международной конференции по искусственному интеллекту и статистике (2011 год): 452-60.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.