plot

Графическое изображение значений Шепли

    Описание

    пример

    plot(explainer) создает горизонтальный столбчатый график значений Шепли shapley explainer объекта. Эти значения хранятся в ShapleyValues объекта свойство. Каждая панель показывает значение Шепли каждой функции в модели blackbox (explainer BlackboxModel.) для точки запроса (explainer. QueryPoint).

    пример

    plot(explainer,Name,Value) задает дополнительные опции, используя один или несколько аргументов имя-значение. Для примера задайте 'NumImportantPredictors',5 для построения графика значений Шепли пяти функций с наивысшими абсолютными значениями Шепли.

    b = plot(___) возвращает объект гистограммы b использование любой комбинации входных аргументов в предыдущих синтаксисах. Использование b запрос или изменение свойств панели гистограммы после ее создания.

    Примеры

    свернуть все

    Обучите классификационную модель и создайте shapley объект. Затем постройте график значений Шепли с помощью функции объекта 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' }
    
    

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

    blackbox = fitcecoc(tbl,'Rating', ...
        'PredictorNames',tbl.Properties.VariableNames(2:7), ...
        'CategoricalPredictors','Industry', ...
        'ClassNames',{'AAA' 'AA' 'A' 'BBB' 'BB' 'B' 'CCC'});

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

    queryPoint = tbl(end,:)
    queryPoint=1×8 table
         ID      WC_TA    RE_TA    EBIT_TA    MVE_BVTD    S_TA    Industry    Rating
        _____    _____    _____    _______    ________    ____    ________    ______
    
        73104    0.239    0.463     0.065      2.924      0.34       2        {'AA'}
    
    
    rng('default') % For reproducibility
    c = cvpartition(tbl.Rating,'Holdout',0.25);
    tbl_s = tbl(test(c),:);
    explainer = shapley(blackbox,tbl_s,'QueryPoint',queryPoint);

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

    explainer.ShapleyValues
    ans=6×8 table
        Predictor        AAA            AA             A            BBB            BB              B             CCC    
        __________    __________    __________    ___________    __________    ___________    ___________    ___________
    
        "WC_TA"         0.014584     0.0064698      0.0027468    0.00045585      -0.007959      -0.011812      -0.011279
        "RE_TA"         0.047797      0.027083       0.015166    -0.0031936      -0.025054      -0.059563       -0.08344
        "EBIT_TA"     0.00034326     0.0001524     0.00012384    3.5202e-05    -0.00019141    -0.00038252    -0.00033693
        "MVE_BVTD"       0.38221       0.38229        0.19383     -0.007901       -0.15755        -0.2152       -0.17022
        "S_TA"        -0.0035663    -0.0025991    -0.00021177    -0.0010166    -2.1005e-05     0.00041421    -0.00058884
        "Industry"     -0.028313     -0.013392     0.00089644      0.022877       0.025636       0.028482       0.044832
    
    

    The ShapleyValues свойство содержит значения Shapley всех функций для каждого класса.

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

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

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

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

    Постройте график значений Shapley для всех классов путем определения всех имен классов в explainer.BlackboxModel.

    f = figure;
    plot(explainer,'ClassNames',explainer.BlackboxModel.ClassNames)
    f.CurrentAxes.TickLabelInterpreter = 'none';

    Figure contains an axes. The axes contains 7 objects of type bar. These objects represent AAA, AA, A, BBB, BB, B, CCC.

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

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

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

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

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

    свернуть все

    Объект, объясняющий модель blackbox, задается как shapley объект.

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

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

    Пример: plot(explainer,'NumImportantPredictors',5,'ClassNames',c) создает штриховой график, содержащий значения Шепли пяти наиболее важных предикторов для класса c.

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

    Пример: 'NumImportantPredictors',5 задает для построения графика пять наиболее важных предикторов. The plot функция определяет порядок важности при помощи абсолютных значений Шепли.

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

    Метки класса для построения, заданные как категориальный или символьный массив, логический или числовой вектор или массив ячеек векторов символов. Значения и типы данных в 'ClassNames' значение должно совпадать с именами классов в ClassNames свойство модели машинного обучения в explainer (explainer.BlackboxModel.ClassNames).

    Можно задать одну или несколько меток. Если вы задаете несколько меток классов, графики функций графиков для каждого элемента с различными цветами.

    Значение по умолчанию является предсказанным классом для точки запроса (BlackboxFitted свойство explainer).

    Этот аргумент действителен только, когда модель машинного обучения (BlackboxModel) в explainer является классификационной моделью.

    Пример: 'ClassNames',{'red','blue'}

    Пример: 'ClassNames',explainer.BlackboxModel.ClassNames задает 'ClassNames' как и все классы в BlackboxModel.

    Типы данных: single | double | logical | char | cell | categorical

    Подробнее о

    свернуть все

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

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

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

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

    Ссылки

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

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

    Введенный в R2021a