plot

Построение графиков результатов локальных интерпретируемых объяснений модели-агностики (LIME)

    Синтаксис

    Описание

    пример

    f = plot(results) визуализирует результаты LIME в lime results объекта. Функция возвращает Figure f объекта. Использование f запрос или изменение свойств рисунка после создания.

    • Рисунок содержит горизонтальный столбчатый график, которая показывает значения коэффициентов линейной простой модели или значения предикторной важности простой модели дерева решений, в зависимости от простой модели в results (SimpleModel свойство results).

    • Рисунок отображает два предсказаний для точки запроса, вычисленные с помощью модели машинного обучения и простой модели, соответственно. Эти значения соответствуют BlackboxFitted свойство и SimpleModelFitted свойство results.

    Примеры

    свернуть все

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

    Составьте таблицу переменных предиктора путем удаления столбцов идентификаторов клиентов и оценок из tbl.

    tblX = removevars(tbl,["ID","Rating"]);

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

    blackbox = fitcecoc(tblX,tbl.Rating,'CategoricalPredictors','Industry');

    Создайте lime объект, который объясняет предсказание для последнего наблюдения с помощью простой модели дерева решений. Задайте 'NumImportantPredictors' как шесть, чтобы найти самое большее 6 важных предикторов. Если вы задаете 'QueryPoint' и 'NumImportantPredictors' значения при создании lime затем программное обеспечение генерирует выборки синтетического набора данных и подгоняет простую интерпретируемую модель к синтетическому набору данных.

    queryPoint = tblX(end,:)
    queryPoint=1×6 table
        WC_TA    RE_TA    EBIT_TA    MVE_BVTD    S_TA    Industry
        _____    _____    _______    ________    ____    ________
    
        0.239    0.463     0.065      2.924      0.34       2    
    
    
    rng('default') % For reproducibility
    results = lime(blackbox,'QueryPoint',queryPoint,'NumImportantPredictors',6, ...
        'SimpleModelType','tree')
    results = 
      lime with properties:
    
                 BlackboxModel: [1x1 ClassificationECOC]
                  DataLocality: 'global'
         CategoricalPredictors: 6
                          Type: 'classification'
                             X: [3932x6 table]
                    QueryPoint: [1x6 table]
        NumImportantPredictors: 6
              NumSyntheticData: 5000
                 SyntheticData: [5000x6 table]
                        Fitted: {5000x1 cell}
                   SimpleModel: [1x1 ClassificationTree]
           ImportantPredictors: [2x1 double]
                BlackboxFitted: {'AA'}
             SimpleModelFitted: {'AA'}
    
    

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

    f = plot(results);
    f.CurrentAxes.TickLabelInterpreter = 'none';

    Figure contains an axes. The axes with title LIME with Decision Tree Model contains an object of type bar.

    График отображает два предсказаний для точки запроса, которые соответствуют свойству BlackboxFitted и свойству SimpleModelFitted results.

    Горизонтальный столбчатый график показывает отсортированные значения важности предиктора. lime находит переменные финансового коэффициента EBIT_TA и WC_TA как важные предикторы для точки запроса.

    Длину полосы можно считать с помощью всплывающих подсказок или свойств панели. Для примера можно найти Bar объекты при помощи findobj функции и добавления меток к концам полос при помощи text функция.

    b = findobj(f,'Type','bar');
    text(b.YEndPoints+0.001,b.XEndPoints,string(b.YData))

    Figure contains an axes. The axes with title LIME with Decision Tree Model contains 3 objects of type bar, text.

    Также можно отобразить значения коэффициентов в таблице с именами переменных-предикторов.

    imp = b.YData;
    flipud(array2table(imp', ...
        'RowNames',f.CurrentAxes.YTickLabel,'VariableNames',{'Predictor Importance'}))
    ans=2×1 table
                    Predictor Importance
                    ____________________
    
        MVE_BVTD          0.088412      
        RE_TA            0.0018061      
    
    

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

    Составьте таблицу переменных предиктора путем удаления переменной отклика из tbl.

    tblX = removevars(tbl,'MPG');

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

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

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

    results = lime(mdl,tblX)
    results = 
      lime with properties:
    
                 BlackboxModel: [1x1 RegressionKernel]
                  DataLocality: 'global'
         CategoricalPredictors: [2 5]
                          Type: 'regression'
                             X: [392x6 table]
                    QueryPoint: []
        NumImportantPredictors: []
              NumSyntheticData: 5000
                 SyntheticData: [5000x6 table]
                        Fitted: [5000x1 double]
                   SimpleModel: []
           ImportantPredictors: []
                BlackboxFitted: []
             SimpleModelFitted: []
    
    

    results содержит сгенерированный синтетический набор данных. The SimpleModel свойство пустое ([]).

    Подбор линейной простой модели для первого наблюдения в tblX. Укажите количество важных предикторов, которые нужно найти, как 3.

    queryPoint = tblX(1,:)
    queryPoint=1×6 table
        Acceleration    Cylinders    Displacement    Horsepower    Model_Year    Weight
        ____________    _________    ____________    __________    __________    ______
    
             12             8            307            130            70         3504 
    
    
    results = fit(results,queryPoint,3);

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

    f = plot(results);
    f.CurrentAxes.TickLabelInterpreter = 'none';

    Figure contains an axes. The axes with title LIME with Linear Model contains an object of type bar.

    График отображает два предсказаний для точки запроса, которые соответствуют свойству BlackboxFitted и свойству SimpleModelFitted results.

    Горизонтальный столбчатый график показывает значения коэффициентов простой модели, отсортированные по их абсолютным значениям. LIME находит Horsepower, Model_Year, и Cylinders как важные предикторы для точки запроса.

    Model_Year и Cylinders являются категориальными предикторами, которые имеют несколько категорий. Для линейной простой модели программное обеспечение создает на одну менее фиктивную переменную, чем количество категорий для каждого категориального предиктора. На гистограмме отображается только самая важная переменная манекена. Можно проверить коэффициенты других переменных манекена с помощью SimpleModel свойство results. Отображение значений отсортированных коэффициентов, включая все категориальные фиктивные переменные.

    [~,I] = sort(abs(results.SimpleModel.Beta),'descend');
    table(results.SimpleModel.ExpandedPredictorNames(I)',results.SimpleModel.Beta(I), ...
        'VariableNames',{'Exteded Predictor Name','Coefficient'})
    ans=17×2 table
          Exteded Predictor Name      Coefficient
        __________________________    ___________
    
        {'Horsepower'            }    -3.4485e-05
        {'Model_Year (74 vs. 70)'}    -6.1279e-07
        {'Model_Year (80 vs. 70)'}     -4.015e-07
        {'Model_Year (81 vs. 70)'}     3.4176e-07
        {'Model_Year (82 vs. 70)'}    -2.2483e-07
        {'Cylinders (6 vs. 8)'   }    -1.9024e-07
        {'Model_Year (76 vs. 70)'}     1.8136e-07
        {'Cylinders (5 vs. 8)'   }     1.7461e-07
        {'Model_Year (71 vs. 70)'}      1.558e-07
        {'Model_Year (75 vs. 70)'}     1.5456e-07
        {'Model_Year (77 vs. 70)'}      1.521e-07
        {'Model_Year (78 vs. 70)'}     1.4272e-07
        {'Model_Year (72 vs. 70)'}     6.7001e-08
        {'Model_Year (73 vs. 70)'}     4.7214e-08
        {'Cylinders (4 vs. 8)'   }     4.5118e-08
        {'Model_Year (79 vs. 70)'}    -2.2598e-08
          ⋮
    
    

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

    свернуть все

    Результаты LIME, заданные как lime объект. The SimpleModel свойство results должен содержать подобранную простую модель.

    Ссылки

    [1] Рибейро, Марко Тулио, С. Сингх и К. Гестрин. "Почему я должен доверять вам?": Объяснение предсказаний любого классификатора ". В Трудах 22-й Международной конференции ACM SIGKDD по открытию знаний и майнингу данных, 1135-44. Сан-Франциско, Калифорния: ACM, 2016.

    Введенный в R2020b