Локальные интерпретируемые модели-агностические объяснения (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' | Измененное расстояние гудолла |
'ofd' | Частотное расстояние вхождения |
Определения см. в разделе Метрика расстояния.
Значение по умолчанию: 'euclidean' если данные предиктора включают только непрерывные переменные, или 'goodall3' если данные предиктора включают как непрерывные, так и категориальные переменные.
Пример: 'Distance','ofd'
Типы данных: char | string | function_handle
'Cov' - Ковариационная матрица для метрики расстояния МахаланобисаКовариационная матрица для метрики расстояния Махаланобиса, заданная как разделенная запятыми пара, состоящая из 'Cov' и положительную определенную матрицу 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
Вы можете определить следующие свойства, создавая a lime объект.
BlackboxModel - Интерпретируемая модель машинного обученияЭто свойство доступно только для чтения.
Интерпретируемая модель машинного обучения, заданная как объект регрессионной или классификационной модели или дескриптор функции.
blackbox аргумент задает это свойство.
CategoricalPredictors - Индексы категориального предиктора[]Это свойство доступно только для чтения.
Индексы категориального предиктора, указанные как вектор положительных целых чисел. CategoricalPredictors содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не категоричен, то это свойство пустое ([]).
При указании blackbox используя дескриптор функции, lime идентифицирует категориальные предикторы из данных предиктора X или customSyntheticData. При указании 'CategoricalPredictors' аргумент name-value, затем аргумент задает это свойство.
При указании blackbox в качестве объекта модели регрессии или классификации, затем lime определяет это свойство с помощью CategoricalPredictors свойства объекта модели.
lime не поддерживает упорядоченный категориальный предиктор.
Если 'SimpleModelType' является 'linear'(по умолчанию), то lime создает фиктивные переменные для каждого идентифицированного категориального предиктора. lime обрабатывает категорию указанной точки запроса как группу ссылок и создает на одну фиктивную переменную меньше числа категорий. Дополнительные сведения см. в разделе Фиктивные переменные с группой ссылок.
Типы данных: single | double
DataLocality - Локальность синтетических данных для формирования данных'global' | 'local'Это свойство доступно только для чтения.
Локальность синтетических данных для формирования данных, указанных как 'global' или 'local'.
'DataLocality' аргумент name-value задает это свойство.
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"]);
Обучение модели кредитных рейтингов 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
⋮
Обучение регрессионной модели и создание 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 поддерживает различные метрики расстояния для непрерывных переменных и сочетание непрерывных и категориальных переменных.
Метрики расстояния для непрерывных переменных
Учитывая матрицу X данных mx-на-n, которая обрабатывается как векторы строк mx (1-на-n) x1, x2,..., xmx и матрица данных my-на-n Y, которая обрабатывается как мои векторы строк y1, y2,..., ymy, различные расстояния между вектором xs и yt определяются следующим образом:
Евклидово расстояние
− yt) ′.
Евклидово расстояние - частный случай расстояния Минковского, где p = 2.
Стандартизированное евклидово расстояние
xs − yt) ′,
где V - диагональная матрица n-на-n, j-й диагональный элемент которой равен (S (j)) 2, где S - вектор масштабных коэффициентов для каждой размерности.
Расстояние Махаланобиса
xs − yt) ′,
где C - ковариационная матрица.
Расстояние между городскими кварталами
Расстояние городского блока - частный случай расстояния Минковского, где p = 1.
Минковская дистанция
Для особого случая p = 1 расстояние Минковского даёт расстояние городского блока. Для частного случая p = 2 расстояние Минковского даёт евклидово расстояние. Для частного случая p = ∞ дистанция Минковского даёт дистанцию Чебычева.
Чебычевская дистанция
ytj |}.
Дистанция Чебычева - частный случай дистанции Минковского, где p = ∞.
Расстояние косинуса
yty′t)).
Корреляционное расстояние
(yt−y¯t) ′,
где
и
Расстояние Спирмена
(rt−r¯t) ′,
где
Метрики расстояния для сочетания непрерывных и категориальных переменных
Измененное расстояние гудолла
Это расстояние является вариантом расстояния Гудолла, которое назначает небольшое расстояние, если совпадающие значения встречаются нечасто независимо от частот других значений. Для несовпадений вклад предиктора в расстояние равен 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, используя квадратную экспоненциальную (или гауссову) функцию ядра
) p λ) 2).
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 для классификации. Для многоклассовой модели программное обеспечение использует схему «один против всех» для создания задачи двоичной классификации. Положительный класс - это прогнозируемый класс для точки запроса из blackbox модель, а отрицательный класс относится к другим классам.
Если 'SimpleModelType' является 'tree', то программное обеспечение подходит для модели дерева решений с помощью fitrtree для регрессии или fitctree для классификации. Программное обеспечение определяет максимальное количество разделений решений (или узлов ветвления) как число важных предикторов, так что соответствующее дерево решений использует максимум заданное число предикторов.
[1] Рибейро, Марко Тулио, С. Сингх и К. Гестрин. "Почему я должен доверять вам?": Объяснение предсказаний любого классификатора. " В трудах 22-й Международной конференции ACM SIGKDD по открытию знаний и анализу данных, 1135-44. Сан-Франциско, Калифорния: ACM, 2016.
[2] Свирш, Гжегож, Наоки Абэ и Аурели Лосано. «Сгруппированное ортогональное совпадение для выбора и прогнозирования переменных». Достижения в системах обработки нейронной информации (2009): 1150-58.
[3] Лосано, Аурели К., Гжегож Свиршч и Наоки Абэ. «Поиск ортогонального соответствия группы для логистической регрессии». Материалы четырнадцатой Международной конференции по искусственному интеллекту и статистике (2011 год): 452-60.
plotPartialDependence | shapley
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.