modelDiscrimination

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

Описание

пример

[DiscMeasure,DiscData] = modelDiscrimination(pdModel,data) вычисляет область под кривой рабочей характеристики приемника (AUROC) и возвращает данные для соответствующей кривой ROC. 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, DiscData] = modelDiscrimination (pdModel, данные (TrainDataInd, :),'DataID', DataSetChoice);
disp (DiscMeasure)
                           AUROC 
                          _______

    Logistic, Training    0.69377
head(DiscData)
ans=8×3 table
       X           Y           T    
    ________    ________    ________

           0           0    0.031768
    0.017911    0.056014    0.031768
    0.032942     0.10119     0.02874
    0.047368     0.13681    0.025167
    0.063755     0.18121    0.024909
    0.077122     0.21373    0.023651
    0.090851     0.24755    0.023636
     0.10685     0.27904    0.021264

Визуализируйте ROC для Logistic модель.

plot(DiscData.X,DiscData.Y)
title(strcat("ROC ",pdModel.ModelID))
xlabel('Fraction of nondefaulters')
ylabel('Fraction of defaulters')
legend(strcat(DiscMeasure.Properties.RowNames,", AUROC = ",num2str(DiscMeasure.AUROC)),'Location','southeast')

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

SegmentVar = "YOB";
[DiscMeasure, DiscData] = 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
head(DiscData)
ans=8×4 table
    YOB       X          Y           T    
    ___    _______    _______    _________

     1           0          0     0.031768
     1     0.12057    0.21443     0.031768
     1     0.22174    0.38735      0.02874
     1     0.33204    0.55731     0.024909
     1     0.45065    0.67391     0.016196
     1     0.55484    0.75593     0.014629
     1     0.66645    0.84091     0.012655
     1     0.79128    0.90119    0.0092331

Визуализируйте ROC, сегментированный YOB, ScoreGroup, или Year.

UniqueSegmentValues = unique(DiscData.(SegmentVar));
figure;
hold on
for ii=1:length(UniqueSegmentValues)
   IndSegment = DiscData.(SegmentVar)==UniqueSegmentValues(ii);
   plot(DiscData.X(IndSegment),DiscData.Y(IndSegment))
end
hold off
title(strcat("ROC ",pdModel.ModelID,", Segmented By ",SegmentVar))
xlabel('Fraction of non-defaulters')
ylabel('Fraction of defaulters')
legend(strcat(DiscMeasure.Properties.RowNames,", AUROC = ",num2str(DiscMeasure.AUROC)),'Location','southeast')

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

свернуть все

Вероятность модели по умолчанию в виде 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 возразите и образец модели.

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

Идентификатор для образца модели в виде разделенной запятой пары, состоящей из '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) является параметрической кривой, которая строит:

  • Пропорция нарушителей с PD выше, чем или равный ссылочному значению PD p

  • Пропорция ненарушителей с PD выше, чем или равный тому же ссылочному значению PD p

Ссылочное значение PD p parametizes кривая и программное обеспечение развертывается через уникальные предсказанные значения PD, наблюдаемые в наборе данных. Пропорция фактических нарушителей присвоена, PD выше, чем или равный p является "Истинным Положительным Уровнем". Пропорция фактических ненарушителей, которые присвоены PD выше, чем или равные p, является "Ложным Положительным Уровнем". Для получения дополнительной информации о кривых ROC, см. Кривые производительности.

Ссылки

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

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

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

Введенный в R2020b
Для просмотра документации необходимо авторизоваться на сайте