exponenta event banner

modelDiscrimination

Вычисление данных AUROC и ROC

Описание

пример

DiscMeasure = modelDiscrimination(pdModel,data) вычисляет площадь под кривой рабочих характеристик приемника (AUROC). modelDiscrimination поддерживает сегментацию и сравнение с ссылочной моделью.

пример

[DiscMeasure,DiscData] = modelDiscrimination(___,Name,Value) указывает параметры, использующие один или несколько аргументов пары имя-значение в дополнение к входным аргументам в предыдущем синтаксисе.

Примеры

свернуть все

В этом примере показано, как использовать fitLifetimePDModel для совмещения данных с Logistic и затем создать область под кривой рабочих характеристик приемника (AUROC) и кривой ROC.

Загрузить данные

Загрузите данные кредитного портфеля.

load RetailCreditPanelData.mat
disp(head(data))
    ID    ScoreGroup    YOB    Default    Year
    __    __________    ___    _______    ____

    1      Low Risk      1        0       1997
    1      Low Risk      2        0       1998
    1      Low Risk      3        0       1999
    1      Low Risk      4        0       2000
    1      Low Risk      5        0       2001
    1      Low Risk      6        0       2002
    1      Low Risk      7        0       2003
    1      Low Risk      8        0       2004
disp(head(dataMacro))
    Year     GDP     Market
    ____    _____    ______

    1997     2.72      7.61
    1998     3.57     26.24
    1999     2.86      18.1
    2000     2.43      3.19
    2001     1.26    -10.51
    2002    -0.59    -22.95
    2003     0.63      2.78
    2004     1.85      9.48

Объединение двух компонентов данных в один набор данных.

data = join(data,dataMacro);
disp(head(data))
    ID    ScoreGroup    YOB    Default    Year     GDP     Market
    __    __________    ___    _______    ____    _____    ______

    1      Low Risk      1        0       1997     2.72      7.61
    1      Low Risk      2        0       1998     3.57     26.24
    1      Low Risk      3        0       1999     2.86      18.1
    1      Low Risk      4        0       2000     2.43      3.19
    1      Low Risk      5        0       2001     1.26    -10.51
    1      Low Risk      6        0       2002    -0.59    -22.95
    1      Low Risk      7        0       2003     0.63      2.78
    1      Low Risk      8        0       2004     1.85      9.48

Данные раздела

Разделите данные на разделы обучения и тестирования.

nIDs = max(data.ID);
uniqueIDs = unique(data.ID);

rng('default'); % for reproducibility
c = cvpartition(nIDs,'HoldOut',0.4);

TrainIDInd = training(c);
TestIDInd = test(c);

TrainDataInd = ismember(data.ID,uniqueIDs(TrainIDInd));
TestDataInd = ismember(data.ID,uniqueIDs(TestIDInd));

Создать Logistic Модель жизненного цикла PD

Использовать fitLifetimePDModel для создания Logistic модель.

pdModel = fitLifetimePDModel(data(TrainDataInd,:),"Logistic",...
    'AgeVar','YOB',...
    'IDVar','ID',...
    'LoanVars','ScoreGroup',...
    'MacroVars',{'GDP','Market'},...
    'ResponseVar','Default');
 disp(pdModel)
  Logistic with properties:

        ModelID: "Logistic"
    Description: ""
          Model: [1x1 classreg.regr.CompactGeneralizedLinearModel]
          IDVar: "ID"
         AgeVar: "YOB"
       LoanVars: "ScoreGroup"
      MacroVars: ["GDP"    "Market"]
    ResponseVar: "Default"

Отображение базовой модели.

disp(pdModel.Model)
Compact generalized linear regression model:
    logit(Default) ~ 1 + ScoreGroup + YOB + GDP + Market
    Distribution = Binomial

Estimated Coefficients:
                               Estimate        SE         tStat       pValue   
                              __________    _________    _______    ___________

    (Intercept)                  -2.7422      0.10136    -27.054     3.408e-161
    ScoreGroup_Medium Risk      -0.68968     0.037286    -18.497     2.1894e-76
    ScoreGroup_Low Risk          -1.2587     0.045451    -27.693    8.4736e-169
    YOB                         -0.30894     0.013587    -22.738    1.8738e-114
    GDP                         -0.11111     0.039673    -2.8006      0.0051008
    Market                    -0.0083659    0.0028358    -2.9502      0.0031761


388097 observations, 388091 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 1.85e+03, p-value = 0
disp(pdModel.Model.Coefficients)
                               Estimate        SE         tStat       pValue   
                              __________    _________    _______    ___________

    (Intercept)                  -2.7422      0.10136    -27.054     3.408e-161
    ScoreGroup_Medium Risk      -0.68968     0.037286    -18.497     2.1894e-76
    ScoreGroup_Low Risk          -1.2587     0.045451    -27.693    8.4736e-169
    YOB                         -0.30894     0.013587    -22.738    1.8738e-114
    GDP                         -0.11111     0.039673    -2.8006      0.0051008
    Market                    -0.0083659    0.0028358    -2.9502      0.0031761

Типовая дискриминация для создания AUROC и ROC

Модель «дискриминации» измеряет, насколько эффективно модель ранжирует клиентов по риску. Выходные данные AUROC и ROC можно использовать для определения того, действительно ли клиенты с более высокими прогнозируемыми PD имеют более высокий риск в наблюдаемых данных.

DataSetChoice = "Training";
if DataSetChoice=="Training"
    Ind = TrainDataInd;
 else
    Ind = TestDataInd;
 end

DiscMeasure = modelDiscrimination(pdModel,data(TrainDataInd,:),'DataID',DataSetChoice);
disp(DiscMeasure)
                           AUROC 
                          _______

    Logistic, Training    0.69377

Визуализация ROC для Logistic модель с использованием modelDiscriminationPlot.

modelDiscriminationPlot(pdModel,data(TrainDataInd,:)); 

Figure contains an axes. The axes with title ROC Logistic, AUROC = 0.69377 contains an object of type line. This object represents Logistic.

Данные могут быть сегментированы для получения AUROC для каждого сегмента и соответствующих данных ROC.

SegmentVar = "YOB";
DiscMeasure = modelDiscrimination(pdModel,data(Ind,:),'SegmentBy',SegmentVar,'DataID',DataSetChoice);
disp(DiscMeasure)
                                  AUROC 
                                 _______

    Logistic, YOB=1, Training    0.63989
    Logistic, YOB=2, Training    0.64709
    Logistic, YOB=3, Training     0.6534
    Logistic, YOB=4, Training     0.6494
    Logistic, YOB=5, Training    0.63479
    Logistic, YOB=6, Training    0.66174
    Logistic, YOB=7, Training    0.64328
    Logistic, YOB=8, Training    0.63424

Визуализация ROC, сегментированного YOB, ScoreGroup, или Year с использованием modelDiscriminationPlot.

modelDiscriminationPlot(pdModel,data(Ind,:),'SegmentBy',SegmentVar,'DataID',DataSetChoice);

Figure contains an axes. The axes with title ROC Training Segmented by YOB contains 8 objects of type line. These objects represent Logistic, 1, AUROC = 0.63989, Logistic, 2, AUROC = 0.64709, Logistic, 3, AUROC = 0.6534, Logistic, 4, AUROC = 0.6494, Logistic, 5, AUROC = 0.63479, Logistic, 6, AUROC = 0.66174, Logistic, 7, AUROC = 0.64328, Logistic, 8, AUROC = 0.63424.

Входные аргументы

свернуть все

Вероятность модели по умолчанию, указанная как Logistic или Probit объект, ранее созданный с помощью fitLifetimePDModel.

Примечание

'ModelID' имущества pdModel объект используется в качестве идентификатора или тега для pdModel.

Типы данных: object

Данные, указанные как NumRowsоколо-NumCols таблица с спроецированными предикторными значениями для прогнозирования срока службы. Имена предикторов и типы данных должны соответствовать базовой модели.

Типы данных: table

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: [PerfMeasure,PerfData] = modelDiscrimination(pdModel,data(Ind,:),'DataID',DataSetChoice)

Идентификатор набора данных, указанный как разделенная запятыми пара, состоящая из 'DataID' и символьный вектор или строку.

Типы данных: char | string

Имя столбца на входе данных, необязательно переменной модели, которая будет использоваться для сегментации набора данных, указанного как пара, разделенная запятыми, состоящая из 'SegmentBy' и символьный вектор или строку.

Для каждого сегмента выводится одно значение AUROC, и соответствующие данные ROC для каждого сегмента возвращаются в PerfData необязательный вывод.

Типы данных: char | string

Условные значения PD, прогнозируемые для data ссылочной моделью, указанной как разделенная запятыми пара, состоящая из 'ReferencePD' и NumRowsоколо-1 числовой вектор. modelDiscrimination выводимая информация выводится для обоих pdModel объект и ссылочная модель.

Типы данных: double

Идентификатор ссылочной модели, указанный как разделенная запятыми пара, состоящая из 'ReferenceID' и символьный вектор или строку. 'ReferenceID' используется в modelDiscrimination выходные данные для целей отчетности.

Типы данных: char | string

Выходные аргументы

свернуть все

Информация AUROC для каждой модели и каждого сегмента возвращается в виде таблицы. DiscMeasure имеет один столбец с именем 'AUROC' и количество строк зависит от количества сегментов и от того, используется ли ReferenceID для ссылочной модели и ReferencePD для справочных данных. Имена строк DiscMeasure сообщите идентификаторы модели, сегмента и данных.

Данные ROC для каждой модели и каждого сегмента возвращаются в виде таблицы. Существует три столбца для данных ROC с именами столбцов 'X', 'Y', и 'T', где первые два являются координатами X и Y кривой ROC, а T содержит соответствующие пороги.

Если вы используете SegmentBy, функция накапливает данные ROC для всех сегментов и DiscData содержит столбец со значениями сегментации для указания места начала и окончания каждого сегмента.

Если данные ссылочной модели приведены с помощью ReferenceID и ReferencePD, DiscData выходы для основной и ссылочной моделей сложены в стопку, с дополнительным столбцом 'ModelID' указывает, где начинается и заканчивается каждая модель.

Подробнее

свернуть все

Типовая дискриминация

Типовая дискриминация измеряет ранжирование риска.

Кредиты с более высоким риском должны получить более высокую прогнозируемую вероятность дефолта (PD), чем кредиты с более низким риском. modelDiscrimination функция вычисляет характеристическую кривую оператора приемника (AUROC), иногда называемую просто областью под кривой (AUC). Эта метрика в диапазоне от 0 до 1 и выше указывает на лучшее различение.

Дополнительные сведения о кривой характеристики оператора приемника (ROC) см. в разделе Дискриминация модели и кривые производительности.

Ссылки

[1] Бэзенс, Барт, Даниэль Рош и Харальд Шиле. Анализ кредитных рисков: методы измерения, приложения и примеры в SAS. Уайли, 2016.

[2] Беллини, Тициано. МСФО (IFRS) 9 и CECL «Моделирование и валидация кредитных рисков: практическое руководство с примерами, работающими в R и SAS». Сан-Диего, Калифорния: Elsevier, 2019.

[3] Бриден, Иосиф. Жизнь с CECL: The Modeling Dictionary. Santa Fe, NM: Prescient Models LLC, 2018.

Представлен в R2020b