exponenta event banner

график

Результаты графика локальных интерпретируемых модельно-агностических объяснений (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.

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

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