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) задает дополнительные опции с помощью одних или нескольких аргументов name-value. Например, 'SimpleModelType','tree' задает тип простой модели как модель дерева принятия решения.

    Входные параметры

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

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

    • Объект полной или компактной модели — можно задать полную или компактную регрессию или объект модели классификации, который имеет a predict объектная функция. Программное обеспечение использует predict функция, чтобы вычислить предсказания для точки запроса и синтетического набора данных предиктора.

      • Если вы задаете объект модели, который не содержит данные о предикторе (например, компактная модель), то необходимо обеспечить данные о предикторе с помощью X или customSyntheticData.

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

      Объект модели регрессии

      Поддерживаемая модельПолный или компактный объект модели регрессии
      Ансамбль моделей регрессииRegressionEnsemble, RegressionBaggedEnsemble, CompactRegressionEnsemble
      Гауссова модель регрессии ядра использование случайного расширения функцииRegressionKernel
      Гауссова регрессия процессаRegressionGP, CompactRegressionGP
      Обобщенная аддитивная модельRegressionGAM, CompactRegressionGAM
      Линейная регрессия для высоко-размерных данныхRegressionLinear
      Модель регрессии нейронной сетиRegressionNeuralNetwork, CompactRegressionNeuralNetwork
      Дерево регрессииRegressionTree, CompactRegressionTree
      Регрессия машины опорных векторовRegressionSVM, CompactRegressionSVM

      Объект модели классификации

      Поддерживаемая модельПолный или компактный объект модели классификации
      Дерево выбора из двух альтернатив для классификации мультиклассовClassificationTree, CompactClassificationTree
      Классификатор дискриминантного анализаClassificationDiscriminant, CompactClassificationDiscriminant
      Ансамбль учеников для классификацииClassificationEnsemble, CompactClassificationEnsemble, ClassificationBaggedEnsemble
      Гауссова модель классификации ядер использование случайного расширения функцииClassificationKernel
      Обобщенная аддитивная модельClassificationGAM, CompactClassificationGAM
      k- соседняя модельClassificationKNN
      Линейная модель классификацииClassificationLinear
      Модель Multiclass для машин опорных векторов или других классификаторовClassificationECOC, CompactClassificationECOC
      Наивная модель BayesClassificationNaiveBayes, 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', 'дерево') задает точку запроса как 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' и положительное значение целочисленного скаляра.

    Пример: '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' значения не считают переменную отклика, переменную веса наблюдения или любые другие переменные, которые не использует функция.

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

    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'

      Расстояние 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

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

    Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    'DataLocality' аргумент значения имени устанавливает это свойство.

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

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

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

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

    Каждая строка 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"]);

    Обучите модель черного ящика кредитных рейтингов при помощи 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 object. The axes object 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 object. The axes object 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');

    Обучите модель черного ящика 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 object. The axes object 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);

    Обучите модель черного ящика MPG при помощи TreeBagger функция.

    rng('default') % For reproducibility
    Mdl = TreeBagger(100,tbl,MPG,'Method','regression','CategoricalPredictors',[2 5]);

    lime не поддерживает TreeBagger возразите непосредственно, таким образом, вы не можете задать первый входной параметр (модель черного ящика) lime как TreeBagger объект. Вместо этого можно использовать указатель на функцию для predict функция. Можно также задать опции predict функция с помощью аргументов name-value функции.

    Создайте указатель на функцию к predict функция TreeBagger объект Mdl. Задайте массив древовидных индексов, чтобы использовать в качестве 1:50.

    myPredict = @(tbl) predict(Mdl,tbl,'Trees',1:50);

    Создайте lime объект с помощью указателя на функцию myPredict. Когда вы задаете модель черного ящика как указатель на функцию, необходимо обеспечить данные о предикторе и задать 'Type' аргумент значения имени. tbl включает категориальные предикторы (Cylinder и Model_Year) с double тип данных. По умолчанию, lime не обрабатывает переменные с double тип данных как категориальные предикторы. Задайте второе (Cylinder) и пятый (Model_Year) переменные как категориальные предикторы.

    results = lime(myPredict,tbl,'Type','regression','CategoricalPredictors',[2 5]);

    Подбирайте линейную простую модель для первого наблюдения в tbl. Чтобы отобразить существующее подчеркивание на любое имя предиктора, измените TickLabelInterpreter значение осей к 'none'.

    results = fit(results,tbl(1,:),4);
    f = plot(results);
    f.CurrentAxes.TickLabelInterpreter = 'none';

    Figure contains an axes object. The axes object 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] Świrszcz, Гжегож, Наоки Абэ и Орели К. Лозано. "Сгруппированное ортогональное соответствие с преследованием для выбора переменной и предсказания". Усовершенствования в нейронных системах обработки информации (2009): 1150–58.

    [3] Лозано, Орели К., Гжегож Świrszcz и Наоки Абэ. "Группа ортогональное соответствие с преследованием для логистической регрессии". Продолжения четырнадцатой международной конференции по вопросам искусственного интеллекта и статистики (2011): 452–60.

    Введенный в R2020b