lime

Локальные интерпретируемые модели-агностические объяснения (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 использует подмножество входа переменных в качестве предикторов, затем программа индексирует предикторы, используя только подмножество. The '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-by- t вектор, содержащий одно наблюдение.

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

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

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

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

      ЗначениеОписание
      'goodall3'

      Измененное расстояние Goodall

      'ofd'

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

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

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

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

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

    Ковариационная матрица для метрики расстояния Махаланобиса, заданная как разделенная разделенными запятой парами, состоящая из 'Cov' и a 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

    Свойства

    расширить все

    Заданные свойства

    При создании lime можно задать следующие свойства объект.

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

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

    The blackbox аргумент устанавливает это свойство.

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

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

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

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

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

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

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

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

    Локальность синтетических данных для генерации данных, заданная как 'global' или 'local'.

    The 'DataLocality' аргумент name-value устанавливает это свойство.

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

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

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

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

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

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

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

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

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

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

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

    The 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.

    • The SimpleModelFitted значение равно 1, если предсказание из простой модели то же, что и BlackboxFitted (предсказание из модели машинного обучения).

    • The 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.

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

    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 содержит сгенерированный синтетический набор данных. 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';

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

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

    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] Swirszcz, Grzegorz, Naoki Abe, and Aurélie C. Lozano. Сгруппированное ортогональное совпадение для выбора переменных и предсказания. Усовершенствования в нейронных системах обработки информации (2009): 1150-58.

    [3] Lozano, Aurélie C., Grzegorz Swirszcz и Naoki Abe. «Групповое ортогональное сопоставление для логистической регрессии». Материалы четырнадцатой Международной конференции по искусственному интеллекту и статистике (2011 год): 452-60.

    Введенный в R2020b