exponenta event banner

график

График значений Шейпли

    Описание

    пример

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

    пример

    plot(explainer,Name,Value) указывает дополнительные параметры, использующие один или несколько аргументов «имя-значение». Например, укажите 'NumImportantPredictors',5 для построения графика значений Shapley пяти элементов с самыми высокими абсолютными значениями Shapley.

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

    Примеры

    свернуть все

    Обучение модели классификации и создание shapley объект. Затем постройте график значений 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 вычисляет значения 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 содержит значения Shapley всех элементов для каждого класса.

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

    Постройте график значений 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 определяет для построения графика пять наиболее важных предикторов. 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