modelDiscrimination

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

Загрузка данных

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

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 выходные параметры, чтобы определить, есть ли у клиентов с выше предсказанными ФУНТАМИ на самом деле более высокий риск в наблюдаемых данных.

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

DiscMeasure = modelDiscrimination (pdModel, данные (TrainDataInd, :),'DataID', DataSetChoice);
disp (DiscMeasure)
                           AUROC 
                          _______

    Logistic, Training    0.69377

Визуализируйте ROC для Logistic модель с помощью modelDiscriminationPlot.

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

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

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

SegmentVar = "YOB";
DiscMeasure = modelDiscrimination (pdModel, данные (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 object. The axes object 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, или Cox возразите ранее созданному использованию fitLifetimePDModel.

Примечание

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

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

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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 сообщите о модели IDs, сегменте и ID данных.

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

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

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

Больше о

свернуть все

Дискриминация модели

Model discrimination измеряет рейтинг риска.

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

Для получения дополнительной информации о кривой Характеристики оператора приемника (ROC), смотрите Дискриминацию Модели и Кривые производительности.

Ссылки

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

[2] Беллини, Тициано. МСФО 9 и моделирование кредитного риска CECL и валидация: практическое руководство с примерами работало в R и SAS. Сан-Диего, CA: Elsevier, 2019.

[3] Breeden, Джозеф. Проживание с CECL: словарь моделирования. Санта-Фе, NM: наделенный даром предвидения LLC моделей, 2018.

[4] Roesch, Дэниел и Харальд Шойле. Глубокий Кредитный риск: Машинное обучение с Python. Независимо опубликованный, 2020.

Введенный в R2020b