plot

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

    Синтаксис

    Описание

    пример

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

    • Фигура содержит горизонтальный столбчатый график, который показывает содействующие значения линейной простой модели или значения важности предиктора дерева решений простая модель, в зависимости от простой модели в 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"]);

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

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

    Ссылки

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

    Введенный в R2020b