exponenta event banner

подгонка

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

    Описание

    пример

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

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

    пример

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

    Примеры

    свернуть все

    Обучение регрессионной модели и создание shapley объект. При создании shapley если точка запроса не указана, то программа не вычисляет значения Shapley. Использовать функцию объекта fit для вычисления значений Shapley для указанной точки запроса. Затем создайте гистограмму значений Shapley с помощью функции object plot.

    Загрузить carbig набор данных, содержащий замеры автомобилей, сделанные в 1970-х и начале 1980-х годов.

    load carbig

    Создание таблицы, содержащей переменные предиктора Acceleration, Cylindersи так далее, а также переменная ответа MPG.

    tbl = table(Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight,MPG);

    Удаление отсутствующих значений в обучающем наборе может помочь сократить потребление памяти и ускорить обучение для fitrkernel функция. Удалить отсутствующие значения в tbl.

    tbl = rmmissing(tbl);

    Тренировка модели blackbox 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 вычисляет значения 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  
    
    

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

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

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

    tbl = readtable('CreditRating_Historical.dat');

    Обучение модели кредитных рейтингов blackbox с помощью 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'  }
    
    

    Вычислите и постройте график значений Shapley для первой точки запроса. Чтобы отобразить существующее подчеркивание в любом имени предиктора, измените 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.

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

    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 для первой точки запроса и второй точки запроса соответственно.

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

    свернуть все

    Объект, объясняющий модель blackbox, указанный как 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) в возвращенном объекте: NaNс. В противном случае 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) вычисляет значения Shapley для точки запроса q использование расширения к алгоритму kernelSHAP и параллельное выполнение вычислений.

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

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

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

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

    Алгоритм вычисления значения Shapley, указанный как 'interventional-kernel' или 'conditional-kernel'.

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

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

    Дополнительные сведения об этих алгоритмах см. в разделе Алгоритмы вычисления значений Shapley.

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

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

    Флаг для параллельного выполнения, указанный как true или false. При указании 'UseParallel',true, fit функция выполняет для итераций цикла параллельно с помощью parfor. Для этого параметра требуется Toolbox™ параллельных вычислений.

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

    Типы данных: logical

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

    свернуть все

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

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

    explainer = fit(explainer,queryPoint);

    Подробнее

    свернуть все

    Значения Шапли

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

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

    Дополнительные сведения см. в разделе Значения Shapley для модели машинного обучения.

    Ссылки

    [1] Лундберг, Скотт М. и С. Ли. «Единый подход к интерпретации предсказаний модели». Достижения в системах обработки нейронной информации 30 (2017): 4765-774.

    [2] Аас, Кьерсти, Мартин. Джуллум и Андерс Лёланд. «Объяснение индивидуальных предсказаний, когда особенности зависимы: более точные приближения к значениям Шепли». arXiv:1903.10464 (2019).

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

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