fit

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

    Описание

    пример

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

    fit использует опции простой модели, которые вы задаете при создании lime results объекта. Можно изменить опции, используя аргументы пары "имя-значение" fit функция.

    пример

    newresults = fit(results,queryPoint,numImportantPredictors,Name,Value) задает дополнительные опции, используя один или несколько аргументы пары "имя-значение". Для примера можно задать 'SimpleModelType','tree' для соответствия модели дерева решений.

    Примеры

    свернуть все

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

    Загрузите CreditRating_Historical набор данных. Набор данных содержит идентификаторы клиентов и их финансовые коэффициенты, отраслевые метки и кредитные рейтинги.

    tbl = readtable('CreditRating_Historical.dat');

    Составьте таблицу переменных предиктора путем удаления столбцов идентификаторов клиентов и оценок из tbl.

    tblX = removevars(tbl,["ID","Rating"]);

    Обучите модель кредитных рейтингов blackbox при помощи fitcecoc функция.

    blackbox = fitcecoc(tblX,tbl.Rating,'CategoricalPredictors','Industry')
    blackbox = 
      ClassificationECOC
               PredictorNames: {1x6 cell}
                 ResponseName: 'Y'
        CategoricalPredictors: 6
                   ClassNames: {'A'  'AA'  'AAA'  'B'  'BB'  'BBB'  'CCC'}
               ScoreTransform: 'none'
               BinaryLearners: {21x1 cell}
                   CodingName: 'onevsone'
    
    
      Properties, Methods
    
    

    Создайте lime объект со blackbox модель.

    rng('default') % For reproducibility
    results = lime(blackbox);

    Найдите две точки запроса, истинные значения рейтинга которых AAA и B, соответственно.

    queryPoint(1,:) = tblX(find(strcmp(tbl.Rating,'AAA'),1),:);
    queryPoint(2,:) = tblX(find(strcmp(tbl.Rating,'B'),1),:)
    queryPoint=2×6 table
        WC_TA    RE_TA    EBIT_TA    MVE_BVTD    S_TA     Industry
        _____    _____    _______    ________    _____    ________
    
        0.121    0.413     0.057      3.647      0.466       12   
        0.019    0.009     0.042      0.257      0.119        1   
    
    

    Подбор линейной простой модели для первой точки запроса. Установите количество важных предикторов равным 4.

    newresults1 = fit(results,queryPoint(1,:),4);

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

    f1 = plot(newresults1);
    f1.CurrentAxes.TickLabelInterpreter = 'none';

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

    Подбор модели линейного дерева принятия решений для первой точки запроса.

    newresults2 = fit(results,queryPoint(1,:),6,'SimpleModelType','tree');
    f2 = plot(newresults2);
    f2.CurrentAxes.TickLabelInterpreter = 'none';

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

    Простые модели в newresults1 и newresults2 оба находят MVE_BVTD и RE_TA как важные предикторы.

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

    newresults3 = fit(results,queryPoint(2,:),4);
    f3 = plot(newresults3);
    f3.CurrentAxes.TickLabelInterpreter = 'none';

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

    Предсказание из blackbox модель B, но предсказание от простой модели не B. Когда два предсказаний не совпадают, можно задать меньшее 'KernelWidth' значение. Программное обеспечение подходит для простой модели с помощью весов, которые больше ориентированы на выборки около точки запроса. Если точка запроса является выбросами или находится вблизи контура принятия решения, то два значения предсказания могут быть различными, даже если вы задаете небольшую 'KernelWidth' значение. В таком случае можно изменить другие аргументы пары "имя-значение". Для примера можно сгенерировать локальный синтетический набор данных (задайте 'DataLocality' от lime как 'local') для точки запроса и увеличить количество выборок ('NumSyntheticData' от lime или fit) в синтетическом наборе данных. Можно также использовать другую метрику расстояния ('Distance' от lime или fit).

    Подбор линейной простой модели с небольшим 'KernelWidth' значение.

    newresults4 = fit(results,queryPoint(2,:),4,'KernelWidth',0.01);
    f4 = plot(newresults4);
    f4.CurrentAxes.TickLabelInterpreter = 'none';

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

    Кредитные рейтинги для первого и второго точек запроса AAA и B, соответственно. Простые модели в newresults1 и newresults4 оба находят MVE_BVTD, RE_TA, и WC_TA как важные предикторы. Однако их значения коэффициентов различаются. Графики показывают, что эти предикторы действуют по-разному в зависимости от кредитных рейтингов.

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

    свернуть все

    Результаты LIME, заданные как lime объект.

    Точка запроса, вокруг которой fit функция подходит для простой модели, заданной как вектор-строка с числовыми значениями или таблица с одной строкой. The queryPoint значение должно иметь совпадающий тип данных и одинаковое число столбцов, что и данные предиктора (результаты X. или результаты. SyntheticData) в lime results объекта.

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

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

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

    • Если 'SimpleModelType' является 'linear'затем программное обеспечение выбирает заданное количество важных предикторов и подбирает линейную модель выбранных предикторов.

    • Если 'SimpleModelType' является 'tree'затем программное обеспечение задает максимальное количество разделений решений (или узлов ветви) как количество важных предикторов, так что подобранное дерево решений использует самое большее заданное количество предикторов.

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

    Аргументы в виде пар имя-значение

    Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

    Пример: 'NumSyntheticData',2000,'SimpleModelType','tree' устанавливает количество выборок, генерируемых для набора синтетических данных, равное 2000, и задает простой тип модели как дерево решений.

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

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

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

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

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

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

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

      ЗначениеОписание
      '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,:).

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

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

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

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

      'ofd'

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

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

    Значение по умолчанию является 'Distance' значение, заданное при создании lime results объекта. Значение по умолчанию 'Distance' значение lime является 'euclidean' если данные предиктора включают только непрерывные переменные, или 'goodall3' если данные предиктора включают как непрерывные, так и категориальные переменные.

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

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

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

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

    Значение по умолчанию является 'KernelWidth' значение, заданное при создании lime results объекта. Значение по умолчанию 'KernelWidth' значение lime составляет 0,75.

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

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

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

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

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

    Значение по умолчанию является 'NumNeighbors' значение, заданное при создании lime results объекта. Значение по умолчанию 'NumNeighbors' значение lime - 1500.

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

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

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

    Значение по умолчанию является NumSyntheticData значение свойства results.

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

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

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

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

    Значение по умолчанию является 'P' значение, заданное при создании lime results объекта. Значение по умолчанию 'P' значение lime равен 2.

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

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

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

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

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

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

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

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

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

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

    Значение по умолчанию является 'SimpleModelType' значение, заданное при создании lime results объекта. Значение по умолчанию 'SimpleModelType' значение lime является 'linear'.

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

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

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

    свернуть все

    Результаты LIME, возвращенные как lime объект. newresults содержит новую простую модель.

    Чтобы перезаписать входной параметр results, присвойте выходные данные fit на results:

    results = fit(results,queryPoint,numImportantPredictors);

    Подробнее о

    свернуть все

    Метрики расстояния

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

    • Метрики расстояния для непрерывных переменных

      Учитывая mx n матрицей данных X, который рассматривает как mx (1-by-<reservedrangesplaceholder13>) векторы - строки x1, x2..., xmx, и my n матрица данных Y, который рассматривают как my (1-by-<reservedrangesplaceholder5>) векторы - строки y1, y2..., ymy, различные расстояния между вектором xs и yt определены следующим образом:

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

        dst2=(xsyt)(xsyt).

        Евклидово расстояние является частным случаем расстояния Минковского, где p = 2.

      • Стандартизированное Евклидово расстояние

        dst2=(xsyt)V1(xsyt),

        где V - n -by n диагональная матрица, j-й диагональный элемент которой (S (j))2, где S является вектором масштабирующих коэффициентов для каждой размерности.

      • Расстояние Махаланобиса

        dst2=(xsyt)C1(xsyt),

        где C - ковариационная матрица.

      • Расстояние между блоками

        dst=j=1n|xsjytj|.

        Расстояние городского блока является частным случаем расстояния Минковского, где p = 1.

      • Расстояние Минковского

        dst=j=1n|xsjytj|pp.

        Для особого случая p = 1 расстояние Минковского даёт городскую блочную дистанцию. Для особого случая p = 2 расстояние Минковского даёт евклидово расстояние. Для особого случая p = ∞ дистанция Минковского даёт дистанцию Чебычева.

      • Чебычевская дистанция

        dst=maxj{|xsjytj|}.

        Дистанция Чебычева является частным случаем дистанции Минковского, где p = ∞.

      • Косинусоидальное расстояние

        dst=(1xsyt(xsxs)(ytyt)).

      • Расстояние корреляции

        dst=1(xsx¯s)(yty¯t)(xsx¯s)(xsx¯s)(yty¯t)(yty¯t),

        где

        x¯s=1njxsj

        и

        y¯t=1njytj.

      • Расстояние копьеносца

        dst=1(rsr¯s)(rtr¯t)(rsr¯s)(rsr¯s)(rtr¯t)(rtr¯t),

        где

        • rsj - это ранг xsj, занятый x 1 j, x 2 j,... xmx,j, как вычисляетсяtiedrank.

        • rtj - это ранг ytj, занятый y 1 j, y 2 j,... ymy,j, как вычисляетсяtiedrank.

        • rs и rt являются координатно-ранговыми векторами xs и yt, то есть rs = (rs 1, rs 2,... rsn) и rt = (r t 1, r t 2,... rtn).

        • r¯s=1njrsj=(n+1)2.

        • r¯t=1njrtj=(n+1)2.

    • Метрики расстояния для смеси непрерывных и категориальных переменных

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

        Это расстояние является вариантом расстояния Goodall, которое присваивает небольшое расстояние, если совпадающие значения нечасты независимо от частот других значений. Для несоответствий вклад предиктора в расстояние равен 1/( количество переменных).

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

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

    Алгоритмы

    свернуть все

    ИЗВЕСТЬ

    Чтобы объяснить предсказание модели машинного обучения с помощью LIME [1], программное обеспечение генерирует синтетический набор данных и подбирает простую интерпретируемую модель к набору синтетических данных при помощи lime и fit, как описано на стадиях 1-5.

    • Если вы задаете queryPoint и numImportantPredictors значений lime, затем lime функция выполняет все шаги.

    • Если вы не задаете queryPoint и numImportantPredictors и задайте 'DataLocality' как 'global' (по умолчанию), затем lime функция генерирует синтетический набор данных (шаги 1-2), и fit функция подходит для простой модели (шаги 3-5).

    • Если вы не задаете queryPoint и numImportantPredictors и задайте 'DataLocality' как 'local', затем fit функция выполняет все шаги.

    lime и fit функции выполняют следующие шаги:

    1. Сгенерируйте синтетический набор данных предиктора Xs используя многомерное нормальное распределение для непрерывных переменных и полиномиальное распределение для каждой категориальной переменной. Можно задать количество выборок для генерации с помощью 'NumSyntheticData' аргумент имя-значение.

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

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

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

      В качестве альтернативы можно предоставить предварительно генерированный пользовательский набор синтетических данных предиктора при помощи customSyntheticData входной параметр lime.

    2. Вычислите предсказания Ys для Xs набора синтетических данных. Предсказания являются предсказанными ответами для регрессии или классифицированными метками для классификации. Программное обеспечение использует predict функция blackbox модель для вычисления предсказаний. Если вы задаете blackbox в качестве указателя на функцию, затем программа вычисляет предсказания с помощью указателя на функцию.

    3. Вычислите расстояния, d между точкой запроса и выборками в наборе данных синтетического предиктора, используя метрику расстояния, заданную 'Distance'.

    4. Вычислите wq значений веса из выборок в наборе данных синтетического предиктора относительно q точки запроса с помощью квадратной экспоненциальной (или Гауссовой) функции ядра

      wq(xs)=exp(12(d(xs,q)pσ)2).

      • xs является выборкой в Xs набора данных синтетического предиктора.

      • d (xs, q) - расстояние между выборочной xs и q точки запроса.

      • p - количество предикторов в Xs.

      • σ - ширина ядра, которую можно задать при помощи 'KernelWidth' аргумент имя-значение. Значение по умолчанию 'KernelWidth' значение составляет 0,75.

      Значение веса в точке запроса равняется 1, и затем оно сходится к нулю, когда значение расстояния увеличивается. The 'KernelWidth' значение управляет тем, как быстро значение веса сходится к нулю. Чем ниже 'KernelWidth' тем быстрее значение веса сходится к нулю. Поэтому алгоритм дает больше веса выборкам около точки запроса. Поскольку этот алгоритм использует такие значения веса, выбранные важные предикторы и подобранная простая модель эффективно объясняют предсказания для синтетических данных локально, вокруг точки запроса.

    5. Подгонка простой модели.

      • Если 'SimpleModelType' является 'linear' (по умолчанию), затем программное обеспечение выбирает важные предикторы и подходит для линейной модели выбранных важных предикторов.

        • Выберите n важных предикторов (X˜s) при помощи группового алгоритма ортогонального соответствия (OMP) [2][3], где n является numImportantPredictors значение. Этот алгоритм использует набор данных синтетического предиктора (Xs), предсказания (Ys) и значения веса (wq).

        • Подгонка линейной модели выбранных важных предикторов (X˜s) к предсказаниям (Ys) с использованием значений веса (wq). Программное обеспечение использует fitrlinear для регрессии или fitclinear для классификации. Для многоклассовой модели программное обеспечение использует схему один от всех, чтобы создать двоичную задачу классификации. Положительный класс является предсказанным классом для точки запроса из blackbox модель, и отрицательный класс относится к другим классам.

      • Если 'SimpleModelType' является 'tree', затем программное обеспечение подходит для модели дерева решений при помощи fitrtree для регрессии или fitctree для классификации. Программа задает максимальное количество разделений решений (или узлов ветви) как количество важных предикторов, так что подобранное дерево решений использует самое большее заданное количество предикторов.

    Ссылки

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

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

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

    Введенный в R2020b