plot

Постройте значения Шепли

    Описание

    пример

    plot(explainer) создает горизонтальный столбчатый график значений Шепли shapley объект explainer. Эти значения хранятся в ShapleyValues объекта свойство. Каждая панель показывает значение Шепли каждой функции в модели черного ящика (человек, который объясняет. BlackboxModel) для точки запроса (человек, который объясняет. 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' }
    
    

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

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

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

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

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

    Обучите модель черного ящика 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'. Задайте '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.

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

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

    свернуть все

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

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

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

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

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

    Пример: 'NumImportantPredictors',5 задает, чтобы построить пять самых важных предикторов. 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

    Больше о

    свернуть все

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

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

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

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

    Ссылки

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

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

    Введенный в R2021a