exponenta event banner

известь

Локальные интерпретируемые модели-агностические объяснения (LIME)

    Описание

    LIME объясняет прогноз модели машинного обучения (классификация или регрессия) для точки запроса, находя важные предикторы и подгоняя простую интерпретируемую модель.

    Можно создать lime объект для модели машинного обучения с указанной точкой запроса (queryPoint) и определенное количество важных предикторов (numImportantPredictors). Программное обеспечение генерирует синтетический набор данных и подходит под простую интерпретируемую модель важных предикторов, которая эффективно объясняет прогнозы для синтетических данных вокруг точки запроса. Простой моделью может быть линейная модель (по умолчанию) или модель дерева решений.

    Используйте подобранную простую модель, чтобы объяснить прогноз модели машинного обучения локально, в указанной точке запроса. Используйте plot функция для визуализации результатов LIME. На основе локальных объяснений можно решить, доверять ли модели машинного обучения.

    Подгонка новой простой модели для другой точки запроса с помощью fit функция.

    Создание

    Описание

    results = lime(blackbox) создает lime объект с использованием объекта модели машинного обучения blackbox содержит данные предиктора. lime функция генерирует выборки синтетического набора данных предиктора и вычисляет прогнозы для выборок. Чтобы подогнать простую модель, используйте fit функция с results.

    пример

    results = lime(blackbox,X) создает lime с использованием данных предиктора в X.

    results = lime(blackbox,'CustomSyntheticData',customSyntheticData) создает lime объект с использованием предварительно созданного пользовательского набора данных синтетического предиктора customSyntheticData. lime функция вычисляет прогнозы для выборок в customSyntheticData.

    пример

    results = lime(___,'QueryPoint',queryPoint,'NumImportantPredictors',numImportantPredictors) также находит указанное количество важных предикторов и подходит к линейной простой модели для точки запроса queryPoint. Можно указать queryPoint и numImportantPredictors в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах.

    пример

    results = lime(___,Name,Value) указывает дополнительные параметры, использующие один или несколько аргументов «имя-значение». Например, 'SimpleModelType','tree' указывает тип простой модели в качестве модели дерева решений.

    Входные аргументы

    развернуть все

    Модель машинного обучения, подлежащая интерпретации, заданная как объект полной или компактной регрессии или модели классификации или дескриптор функции.

    • Объект полной или компактной модели - можно указать объект полной или компактной регрессии или модели классификации, имеющий 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 должны соответствовать данным предиктора, которые прошли обучение blackbox, хранится в blackbox.X. Указанное значение не должно содержать переменную ответа.

    • X должны иметь те же типы данных, что и переменные предиктора (например, trainX), прошедшего обучение blackbox. Переменные, составляющие столбцы X должны иметь тот же номер и порядок, что и в trainX.

      • Если вы тренируетесь blackbox используя числовую матрицу, затем X должен быть числовой матрицей.

      • Если вы тренируетесь blackbox используя таблицу, затем X должен быть таблицей. Все переменные предиктора в X должны иметь те же имена переменных и типы данных, что и в trainX.

    • lime не поддерживает разреженную матрицу.

    Если blackbox объект модели, не содержащий данных предиктора или дескриптора функции, необходимо указать X или customSyntheticData. Если blackbox является полным объектом модели машинного обучения, и вы указываете этот аргумент, затем lime не использует данные предиктора в blackbox. Он использует только указанные данные предиктора.

    Типы данных: single | double | table

    Предварительно сгенерированный набор данных синтетического предиктора, указанный как числовая матрица или таблица.

    Если предоставляется предварительно созданный набор данных, то 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

    Точка запроса, в которой lime объясняет прогноз, заданный как вектор строки числовых значений или однострочная таблица. queryPoint должны иметь тот же тип данных и количество столбцов, что и X, customSyntheticDataили данные предиктора в blackbox.

    При указании numImportantPredictors и queryPoint, то lime функция подходит для простой модели при создании lime объект.

    queryPoint не должно содержать отсутствующих значений.

    Пример: blackbox.X(1,:) указывает точку запроса как первое наблюдение данных предиктора в модели полного машинного обучения blackbox.

    Типы данных: single | double | table

    Число важных предикторов, используемых в простой модели, указанных как положительное целое скалярное значение.

    • Если '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'.

    • 'global' - Программное обеспечение оценивает параметры распределения, используя весь набор данных предиктора (X или данные предиктора в blackbox). Программное обеспечение генерирует синтетический набор данных предиктора с оцененными параметрами и использует набор данных для простой подгонки модели любой точки запроса.

    • 'local' - Программное обеспечение оценивает параметры распределения с использованием k-ближайших соседей точки запроса, где k - 'NumNeighbors' значение. Программа генерирует новый набор данных синтетического предиктора каждый раз, когда он подходит к простой модели для указанной точки запроса.

    Дополнительные сведения см. в разделе LIME.

    Пример: 'DataLocality','local'

    Типы данных: char | string

    Число соседей точки запроса, указанное как разделенная запятыми пара, состоящая из 'NumNeighbors' и положительное целое скалярное значение. Этот аргумент допустим только в том случае, если 'DataLocality' является 'local'.

    Если указать значение, превышающее количество наблюдений в наборе данных предиктора (X или данные предиктора в blackbox), то lime использует все наблюдения.

    Пример: 'NumNeighbors',2000

    Типы данных: single | double

    Количество образцов, генерируемых для набора синтетических данных, указанных как пара, разделенная запятыми, состоящая из 'NumSyntheticData' и положительное целое скалярное значение. Этот аргумент допустим только в том случае, если 'DataLocality' является 'local'.

    Пример: 'NumSyntheticData',2500

    Типы данных: single | double

    Опции для простой модели

    развернуть все

    Ширина ядра квадратной экспоненциальной (или гауссовой) функции ядра, определяемая как разделенная запятыми пара, состоящая из 'KernelWidth' и числовое скалярное значение.

    lime функция вычисляет расстояния между точкой запроса и выборками в наборе данных синтетического предиктора, а затем преобразует расстояния в веса с помощью возведенной в квадрат экспоненциальной функции ядра. Если опустить 'KernelWidth' значение, затем lime использует веса, которые более сфокусированы на выборках вблизи точки запроса. Для получения более подробной информации см. LIME.

    Пример: 'KernelWidth',0.5

    Типы данных: single | double

    Тип простой модели, указанный как разделенная запятыми пара, состоящая из 'SimpleModelType' и 'linear' или 'tree'.

    • 'linear' - Программное обеспечение подходит для линейной модели с помощью fitrlinear для регрессии или fitclinear для классификации.

    • 'tree' - Программное обеспечение подходит для модели дерева принятия решений с помощью fitrtree для регрессии или fitctree для классификации.

    Пример: 'SimpleModelType','tree'

    Типы данных: char | string

    Параметры модели машинного обучения

    развернуть все

    Список категориальных предикторов, указанный как пара, разделенная запятыми, состоящая из 'CategoricalPredictors' и одно из значений в этой таблице.

    СтоимостьОписание
    Вектор положительных целых чисел

    Каждая запись в векторе представляет собой значение индекса, соответствующее столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся в диапазоне от 1 до p, где p - количество предикторов, используемых для обучения модели.

    Если blackbox использует подмножество входных переменных в качестве предикторов, затем программное обеспечение индексирует предикторы, используя только подмножество. 'CategoricalPredictors' значения не подсчитывают переменную отклика, переменную веса наблюдения и любые другие переменные, которые функция не использует.

    Логический вектор

    A true ввод означает, что соответствующий столбец данных предиктора является категориальной переменной. Длина вектора равна p.

    Символьная матрицаКаждая строка матрицы является именем предикторной переменной. Имена должны совпадать с именами переменных данных предиктора в виде таблицы. Поместите имена с дополнительными пробелами, чтобы каждая строка символьной матрицы имела одинаковую длину.
    Строковый массив или массив ячеек символьных векторовКаждый элемент массива является именем переменной предиктора. Имена должны совпадать с именами переменных данных предиктора в виде таблицы.
    'all'Все предикторы категоричны.

    • При указании blackbox в качестве дескриптора функции, затем lime идентифицирует категориальные предикторы из данных предиктора X или customSyntheticData. Если данные предиктора находятся в таблице, lime предполагает, что переменная категорична, если она является логическим вектором, неупорядоченным категориальным вектором, символьным массивом, строковым массивом или массивом ячеек символьных векторов. Если данные предиктора являются матрицей, lime предполагает, что все предикторы непрерывны.

    • При указании blackbox в качестве объекта модели регрессии или классификации, затем lime идентифицирует категориальные предикторы с помощью CategoricalPredictors свойства объекта модели.

    lime не поддерживает упорядоченный категориальный предиктор.

    Пример: 'CategoricalPredictors','all'

    Типы данных: single | double | logical | char | string | cell

    Тип модели машинного обучения, определяемый как разделенная запятыми пара, состоящая из 'Type' и 'regression или 'classification'.

    Необходимо указать этот аргумент при указании blackbox как дескриптор функции. При указании blackbox в качестве объекта модели регрессии или классификации, затем lime определяет 'Type' значение в зависимости от типа модели.

    Пример: 'Type','classification'

    Типы данных: char | string

    Параметры вычисления расстояний

    развернуть все

    Метрика расстояния, заданная как разделенная запятыми пара, состоящая из 'Distance' и символьный вектор, строковый скаляр или дескриптор функции.

    • Если данные предиктора включают только непрерывные переменные, то lime поддерживает эти метрики расстояния.

      СтоимостьОписание
      'euclidean'

      Евклидово расстояние.

      'seuclidean'

      Стандартизированное евклидово расстояние. Каждая разность координат между наблюдениями масштабируется делением на соответствующий элемент стандартного отклонения, S = std(PD,'omitnan'), где PD является данными предиктора или синтетическими данными предиктора. Чтобы задать другое масштабирование, используйте 'Scale' аргумент «имя-значение».

      'mahalanobis'

      Расстояние Махаланобиса с использованием ковариации образца PD, C = cov(PD,'omitrows'). Чтобы изменить значение ковариационной матрицы, используйте 'Cov' аргумент «имя-значение».

      'cityblock'

      Расстояние между городскими кварталами.

      'minkowski'

      Минковская дистанция. Степень по умолчанию равна 2. Чтобы указать другую степень, используйте 'P' аргумент «имя-значение».

      'chebychev'

      Расстояние Чебычева (максимальная разность координат).

      'cosine'

      Один минус косинус включенного угла между точками (обрабатываемый как векторы).

      'correlation'

      Один минус выборочная корреляция между точками (обрабатываемая как последовательности значений).

      'spearman'

      Один минус выборка ранговой корреляции Спирмена между наблюдениями (обрабатываемыми как последовательности значений).

      @distfun

      Пользовательский дескриптор функции расстояния. Функция расстояния имеет вид

      function D2 = distfun(ZI,ZJ)
      % calculation of distance
      ...
      где

      • ZI является 1около-t вектор, содержащий одно наблюдение.

      • ZJ является sоколо-t матрица, содержащая несколько наблюдений. distfun должен принять матрицу ZJ с произвольным числом наблюдений.

      • D2 является sоколо-1 вектор расстояний, и D2(k) - расстояние между наблюдениями ZI и ZJ(k,:).

      Если данные не разрежены, можно, как правило, быстрее вычислять расстояние, используя встроенную метрику расстояния вместо дескриптора функции.

    • Если данные предиктора включают как непрерывные, так и категориальные переменные, то lime поддерживает эти метрики расстояния.

      СтоимостьОписание
      'goodall3'

      Измененное расстояние гудолла

      'ofd'

      Частотное расстояние вхождения

    Определения см. в разделе Метрика расстояния.

    Значение по умолчанию: 'euclidean' если данные предиктора включают только непрерывные переменные, или 'goodall3' если данные предиктора включают как непрерывные, так и категориальные переменные.

    Пример: 'Distance','ofd'

    Типы данных: char | string | function_handle

    Ковариационная матрица для метрики расстояния Махаланобиса, заданная как разделенная запятыми пара, состоящая из 'Cov' и положительную определенную матрицу K-by-K, где K - число предикторов.

    Этот аргумент допустим только в том случае, если 'Distance' является 'mahalanobis'.

    Дефолт 'Cov' значение равно cov(PD,'omitrows'), где PD является данными предиктора или синтетическими данными предиктора. Если не указать 'Cov' затем программное обеспечение использует различные ковариационные матрицы при вычислении расстояний как для данных предиктора, так и для синтетических данных предиктора.

    Пример: 'Cov',eye(3)

    Типы данных: single | double

    Экспонента для метрики расстояния Минковского, заданная как разделенная запятыми пара, состоящая из 'P' и положительный скаляр.

    Этот аргумент допустим только в том случае, если 'Distance' является 'minkowski'.

    Пример: 'P',3

    Типы данных: single | double

    Значение параметра масштабирования для стандартизированной евклидовой метрики расстояния, определяемой как разделенная запятыми пара, состоящая из 'Scale' и неотрицательный числовой вектор длины K, где K - число предикторов.

    Этот аргумент допустим только в том случае, если 'Distance' является 'seuclidean'.

    Дефолт 'Scale' значение равно std(PD,'omitnan'), где PD является данными предиктора или синтетическими данными предиктора. Если не указать 'Scale' затем программное обеспечение использует различные параметры масштаба при вычислении расстояний как для данных предиктора, так и для синтетических данных предиктора.

    Пример: 'Scale',quantile(X,0.75) - quantile(X,0.25)

    Типы данных: single | double

    Свойства

    развернуть все

    Указанные свойства

    Вы можете определить следующие свойства, создавая a lime объект.

    Это свойство доступно только для чтения.

    Интерпретируемая модель машинного обучения, заданная как объект регрессионной или классификационной модели или дескриптор функции.

    blackbox аргумент задает это свойство.

    Это свойство доступно только для чтения.

    Индексы категориального предиктора, указанные как вектор положительных целых чисел. CategoricalPredictors содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не категоричен, то это свойство пустое ([]).

    • При указании blackbox используя дескриптор функции, lime идентифицирует категориальные предикторы из данных предиктора X или customSyntheticData. При указании 'CategoricalPredictors' аргумент name-value, затем аргумент задает это свойство.

    • При указании blackbox в качестве объекта модели регрессии или классификации, затем lime определяет это свойство с помощью CategoricalPredictors свойства объекта модели.

    lime не поддерживает упорядоченный категориальный предиктор.

    Если 'SimpleModelType' является 'linear'(по умолчанию), то lime создает фиктивные переменные для каждого идентифицированного категориального предиктора. lime обрабатывает категорию указанной точки запроса как группу ссылок и создает на одну фиктивную переменную меньше числа категорий. Дополнительные сведения см. в разделе Фиктивные переменные с группой ссылок.

    Типы данных: single | double

    Это свойство доступно только для чтения.

    Локальность синтетических данных для формирования данных, указанных как 'global' или 'local'.

    'DataLocality' аргумент name-value задает это свойство.

    Это свойство доступно только для чтения.

    Количество важных предикторов для использования в простой модели (SimpleModel), указанное как положительное целое скалярное значение.

    numImportantPredictors аргумент lime или numImportantPredictors аргумент fit задает это свойство.

    Типы данных: single | double

    Это свойство доступно только для чтения.

    Число выборок в наборе синтетических данных, указанное как положительное целое скалярное значение.

    • При указании customSyntheticData, то количество образцов в пользовательском наборе синтетических данных задает это свойство.

    • В противном случае 'NumSyntheticData' аргумент «имя-значение» lime или 'NumSyntheticData' аргумент «имя-значение» fit задает это свойство.

    Типы данных: single | double

    Это свойство доступно только для чтения.

    Точка запроса, в которой lime объясняет прогноз, используя простую модель (SimpleModel), указанный как вектор строки числовых значений или однострочная таблица.

    queryPoint аргумент lime или queryPoint аргумент fit задает это свойство.

    Типы данных: single | double | table

    Это свойство доступно только для чтения.

    Тип модели машинного обучения (BlackboxModel), указано как 'regression или 'classification'.

    • При указании blackbox в качестве объекта модели регрессии или классификации, затем lime определяет это свойство в зависимости от типа модели.

    • При указании blackbox используя дескриптор функции, затем 'Type' аргумент name-value задает это свойство.

    Это свойство доступно только для чтения.

    Данные предиктора, указанные как числовая матрица или таблица.

    Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной.

    • При указании X аргумент, то аргумент задает это свойство.

    • При указании customSyntheticData аргумент, то это свойство пустое.

    • При указании blackbox как полный объект модели машинного обучения и не указывать X или customSyntheticData, то это значение свойства является данными предиктора, используемыми для обучения blackbox.

    lime не использует строки, содержащие отсутствующие значения, и не сохраняет строки в X.

    Типы данных: single | double | table

    Вычисленные свойства

    Программа вычисляет следующие свойства.

    Это свойство доступно только для чтения.

    Прогноз для точки запроса, вычисленной по модели машинного обучения (BlackboxModel), указанный как скаляр. Прогноз является прогнозируемым ответом на регрессию или классифицированной меткой для классификации.

    Типы данных: single | double | categorical | logical | char | string | cell

    Это свойство доступно только для чтения.

    Прогнозы для синтетических данных предиктора, вычисленных по модели машинного обучения (BlackboxModel), указанный как вектор.

    Типы данных: single | double | categorical | logical | char | string | cell

    Это свойство доступно только для чтения.

    Важные предикторные индексы, определяемые как вектор положительных целых чисел. ImportantPredictors содержит значения индекса, соответствующие столбцам предикторов, используемых в простой модели (SimpleModel).

    Типы данных: single | double

    Это свойство доступно только для чтения.

    Простая модель, заданная как RegressionLinear, RegressionTree, ClassificationLinear, или ClassificationTree объект модели. lime определяет тип простого объекта модели в зависимости от типа модели машинного обучения (Type) и тип простой модели ('SimpleModelType').

    Это свойство доступно только для чтения.

    Прогноз для точки запроса, вычисленной простой моделью (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

    Это свойство доступно только для чтения.

    Синтетические данные предиктора, указанные как числовая матрица или таблица.

    • При указании customSyntheticData входной аргумент, затем аргумент задает это свойство.

    • В противном случае lime оценивает параметры распределения из данных предиктора X и генерирует синтетический набор данных предиктора.

    Типы данных: single | double | table

    Функции объекта

    fitПодгонка простой модели локальных интерпретируемых моделей-агностических объяснений (LIME)
    plotРезультаты графика локальных интерпретируемых модельно-агностических объяснений (LIME)

    Примеры

    свернуть все

    Обучение модели классификации и создание 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';

    Figure contains an axes. The axes with title LIME with Decision Tree Model contains an object of type bar.

    График отображает два прогноза для точки запроса, которые соответствуют свойству 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))

    Figure contains an axes. The axes with title LIME with Decision Tree Model contains 3 objects of type bar, text.

    Можно также отобразить значения коэффициентов в таблице с именами переменных предиктора.

    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';

    Figure contains an axes. The axes with title LIME with Linear Model contains an object of type bar.

    График отображает два прогноза для точки запроса, которые соответствуют свойству 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';

    Figure contains an axes. The axes with title LIME with Linear Model contains an object of type bar.

    lime находит Horsepower, Displacement, Cylinders, и Model_Year как важные предикторы.

    Подробнее

    развернуть все

    Алгоритмы

    развернуть все

    Ссылки

    [1] Рибейро, Марко Тулио, С. Сингх и К. Гестрин. "Почему я должен доверять вам?": Объяснение предсказаний любого классификатора. " В трудах 22-й Международной конференции ACM SIGKDD по открытию знаний и анализу данных, 1135-44. Сан-Франциско, Калифорния: ACM, 2016.

    [2] Свирш, Гжегож, Наоки Абэ и Аурели Лосано. «Сгруппированное ортогональное совпадение для выбора и прогнозирования переменных». Достижения в системах обработки нейронной информации (2009): 1150-58.

    [3] Лосано, Аурели К., Гжегож Свиршч и Наоки Абэ. «Поиск ортогонального соответствия группы для логистической регрессии». Материалы четырнадцатой Международной конференции по искусственному интеллекту и статистике (2011 год): 452-60.

    Представлен в R2020b