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 объект, затем программное обеспечение генерирует выборки синтетического набора данных и подбирает простую поддающуюся толкованию модель к синтетическому набору данных. Ваши результаты могут варьироваться от показанных из-за случайности lime. Можно установить случайный seed при помощи rng для воспроизводимости.

    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    
    
    
    results = lime(blackbox,'QueryPoint',queryPoint,'NumImportantPredictors',6, ...
        'CategoricalPredictors','Industry','SimpleModelType','tree')
    results = 
      lime with properties:
    
                 BlackboxModel: [1×1 ClassificationECOC]
                  DataLocality: 'global'
         CategoricalPredictors: 6
                          Type: 'classification'
                             X: [3932×6 table]
                    QueryPoint: [1×6 table]
        NumImportantPredictors: 6
              NumSyntheticData: 5000
                 SyntheticData: [5000×6 table]
                        Fitted: {5000×1 cell}
                   SimpleModel: [1×1 ClassificationTree]
           ImportantPredictors: [2 4]
                BlackboxFitted: {'AA'}
             SimpleModelFitted: {'AA'}
    
    

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

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

    График отображает два предсказания для точки запроса, которые соответствуют свойству 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))

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

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

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

    mdl = fitrkernel(tblX,tbl.MPG,'CategoricalPredictors',[2 5]);
    results = lime(mdl,tblX,'CategoricalPredictors',[2 5])
    results = 
      lime with properties:
    
                 BlackboxModel: [1×1 RegressionKernel]
                  DataLocality: 'global'
         CategoricalPredictors: [2 5]
                          Type: 'regression'
                             X: [392×6 table]
                    QueryPoint: []
        NumImportantPredictors: []
              NumSyntheticData: 5000
                 SyntheticData: [5000×6 table]
                        Fitted: [5000×1 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';

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

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

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

    свернуть все

    LIME заканчивается в виде lime объект. SimpleModel свойство results должен содержать подбиравшую простую модель.

    Ссылки

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

    Смотрите также

    | |

    Введенный в R2020b