fit

Вычислите значения Шепли для точки запроса

    Описание

    пример

    newExplainer = fit(explainer,queryPoint) вычисляет значения Шепли для заданной точки запроса (queryPoint) и хранит вычисленные значения Шепли в ShapleyValues свойство newExplainer. shapley объект explainer содержит модель машинного обучения и опции для вычисления значений Шепли.

    fit использует опции расчета значения Шепли, которые вы задаете, когда вы создаете explainer. Можно изменить опции с помощью аргументов значения имени fit функция. Функция возвращает shapley объект newExplainer это содержит недавно вычисленные значения Шепли.

    пример

    newExplainer = fit(explainer,queryPoint,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов значения имени. Например, задайте 'UseParallel',true вычислить значения Шепли параллельно.

    Примеры

    свернуть все

    Обучите модель регрессии и создайте shapley объект. Когда вы создаете shapley объект, если вы не задаете точку запроса, затем программное обеспечение, не вычисляет значения Шепли. Используйте объектный функциональный 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);

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

    rng('default') % For reproducibility
    mdl = fitrkernel(tbl,'MPG','CategoricalPredictors',[2 5]);

    Создайте shapley объект. Задайте набор данных tbl, потому что mdl не содержит обучающие данные.

    explainer = shapley(mdl,tbl)
    explainer = 
      shapley with properties:
    
                BlackboxModel: [1x1 RegressionKernel]
                   QueryPoint: []
               BlackboxFitted: []
                ShapleyValues: []
                   NumSubsets: 64
                            X: [392x7 table]
        CategoricalPredictors: [2 5]
                       Method: 'interventional-kernel'
    
    

    explainer хранит обучающие данные tbl в X свойство.

    Вычислите значения Шепли всех переменных предикторов для первого наблюдения в tbl.

    queryPoint = tbl(1,:)
    queryPoint=1×7 table
        Acceleration    Cylinders    Displacement    Horsepower    Model_Year    Weight    MPG
        ____________    _________    ____________    __________    __________    ______    ___
    
             12             8            307            130            70         3504     18 
    
    
    explainer = fit(explainer,queryPoint);

    Для модели регрессии, shapley вычисляет значения Шепли с помощью предсказанного ответа и хранит их в ShapleyValues свойство. Отобразите значения в ShapleyValues свойство.

    explainer.ShapleyValues
    ans=6×2 table
          Predictor       ShapleyValue
        ______________    ____________
    
        "Acceleration"       -0.1561  
        "Cylinders"         -0.18306  
        "Displacement"      -0.34203  
        "Horsepower"        -0.27291  
        "Model_Year"         -0.2926  
        "Weight"            -0.32402  
    
    

    Отобразите предсказанный ответ для точки запроса и постройте значения Шепли для точки запроса при помощи plot функция. Чтобы отобразить существующее подчеркивание на любое имя предиктора, измените TickLabelInterpreter значение осей к 'none'.

    explainer.BlackboxFitted
    ans = 21.0495
    
    f = figure; 
    plot(explainer)
    f.CurrentAxes.TickLabelInterpreter = 'none';

    Figure contains an axes. The axes contains an object of type bar.

    Горизонтальный столбчатый график показывает значения Шепли для всех переменных, отсортированных по их абсолютным значениям. Каждое значение Шепли объясняет отклонение предсказания для точки запроса от среднего значения, из-за соответствующей переменной.

    Обучите модель классификации и создайте shapley объект. Затем вычислите значения Шепли для нескольких точек запроса.

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

    tbl = readtable('CreditRating_Historical.dat');

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

    blackbox = fitcecoc(tbl,'Rating', ...
        'PredictorNames',tbl.Properties.VariableNames(2:7), ...
        'CategoricalPredictors','Industry');

    Создайте shapley объект с blackbox модель. Для более быстрого расчета, поддемонстрационные 25% наблюдений от tbl со стратификацией и использованием выборки, чтобы вычислить значения Шепли. Задайте, чтобы использовать расширение kernelSHAP алгоритма.

    rng('default') % For reproducibility
    c = cvpartition(tbl.Rating,'Holdout',0.25);
    tbl_s = tbl(test(c),:);
    explainer = shapley(blackbox,tbl_s,'Method','conditional-kernel');

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

    queryPoint(1,:) = tbl_s(find(strcmp(tbl_s.Rating,'AAA'),1),:);
    queryPoint(2,:) = tbl_s(find(strcmp(tbl_s.Rating,'B'),1),:)
    queryPoint=2×8 table
         ID      WC_TA     RE_TA     EBIT_TA    MVE_BVTD    S_TA     Industry    Rating 
        _____    ______    ______    _______    ________    _____    ________    _______
    
        58258     0.511     0.869     0.106      8.538      0.732       2        {'AAA'}
        82367    -0.078    -0.042     0.011      0.262      0.167       7        {'B'  }
    
    

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

    explainer1 = fit(explainer,queryPoint(1,:));
    f1 = figure;
    plot(explainer1)
    f1.CurrentAxes.TickLabelInterpreter = 'none';

    Figure contains an axes. The axes contains an object of type bar. This object represents AAA.

    Вычислите и постройте значения Шепли для второй точки запроса.

    explainer2 = fit(explainer,queryPoint(2,:));
    f2 = figure;
    plot(explainer2)
    f2.CurrentAxes.TickLabelInterpreter = 'none';

    Figure contains an axes. The axes contains an object of type bar. This object represents BB.

    Истинной оценкой для второй точки запроса является B, но предсказанной оценкой является BB. График показывает значения Шепли для предсказанной оценки.

    explainer1 и explainer2 включайте значения Шепли для первой точки запроса и второй точки запроса, соответственно.

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

    свернуть все

    Объект, объясняющий модель черного ящика в виде shapley объект.

    Точка запроса, в который fit объясняет предсказание в виде вектора-строки из числовых значений или таблицы одной строки.

    • Для вектора-строки из числовых значений:

      • Переменные, который составляет столбцы queryPoint должен иметь тот же порядок как данные о предикторе X в explainer.

      • Если данные о предикторе explainer.X таблица, затем queryPoint может быть числовой вектор, если таблица содержит все числовые переменные.

    • Для таблицы одной строки:

      • Если данные о предикторе explainer.X таблица, затем все переменные предикторы в queryPoint должен иметь те же имена переменных и типы данных как те в explainer.X. Однако порядок следования столбцов queryPoint не должен соответствовать порядку следования столбцов explainer.X.

      • Если данные о предикторе explainer.X числовая матрица, затем имена предиктора в explainer.BlackboxModel.PredictorNames и соответствующий переменный предиктор называет в queryPoint должно быть то же самое. Чтобы задать имена предиктора во время обучения, используйте 'PredictorNames' аргумент значения имени. Все переменные предикторы в queryPoint должны быть числовые векторы.

      • queryPoint может содержать дополнительные переменные (переменные отклика, веса наблюдения, и так далее), но fit игнорирует их.

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

    Если queryPoint содержит NaNs для непрерывных предикторов и 'Method' 'conditional-kernel', затем значения Шепли (ShapleyValues) в возвращенном объекте NaNs. В противном случае, fit указатели NaN значения таким же образом как explainer.BlackboxModel (predict объектная функция explainer.BlackboxModel или указатель на функцию задан blackbox).

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

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

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

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

    Пример: fit(explainer,q,'Method','conditional-kernel','UseParallel',true) вычисляет значения Шепли для точки запроса q использование расширения kernelSHAP алгоритма, и выполняет расчет параллельно.

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

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

    Пример: 'MaxNumSubsets',100

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

    Алгоритм расчета значения Шепли в виде 'interventional-kernel' или 'conditional-kernel'.

    • 'interventional-kernel'fit использует kernelSHAP алгоритм [1] с интервенционистской функцией ценности.

    • 'conditional-kernel'fit использует расширение kernelSHAP алгоритма [2] с условной функцией ценности.

    Для получения дополнительной информации об этих алгоритмах, см. Алгоритмы Расчета Значения Шепли.

    Пример: 'Method','conditional-kernel'

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

    Отметьте, чтобы запуститься параллельно в виде true или false. Если вы задаете 'UseParallel',true, fit функция выполняет обработки в цикле параллельно при помощи parfor. Эта опция требует Parallel Computing Toolbox™.

    Пример: 'UseParallel',true

    Типы данных: логический

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

    свернуть все

    Объект, объясняющий модель черного ящика, возвращенную как shapley объект. ShapleyValues свойство объекта содержит вычисленные значения Шепли.

    Перезаписывать входной параметр explainer, присвойте выход fit к explainer:

    explainer = fit(explainer,queryPoint);

    Больше о

    свернуть все

    Шепли оценивает

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

    Значение Шепли соответствует отклонению предсказания для точки запроса из среднего предсказания, из-за функции. Для точки запроса сумма значений Шепли для всех функций соответствует общему отклонению предсказания от среднего значения.

    Для получения дополнительной информации смотрите Значения Шепли для Модели Машинного обучения.

    Ссылки

    [1] Лундберг, Скотт М. и С. Ли. "Объединенный подход к интерпретации предсказаний модели". Усовершенствования в нейронных системах обработки информации 30 (2017): 4765–774.

    [2] Научный работник, Керсти, Мартин. Джаллум и Андерс Лылэнд. "Объясняя Отдельные Предсказания, Когда Функции Зависят: Более точные Приближения к Значениям Шепли". arXiv:1903.10464 (2019).

    Расширенные возможности

    Введенный в R2021a