Вычисление данных AUROC и ROC
вычисляет площадь под приемник кривой рабочей характеристики (AUROC). DiscMeasure
= modelDiscrimination(pdModel
,data
)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 = modelDiscription (pdModel, данные (TrainDataInd,:),'DataID', DataSetChoice); диск (DiscMeasure)
AUROC _______ Logistic, Training 0.69377
Визуализация ROC для Logistic
моделировать с использованием modelDiscriminationPlot
.
modelDiscriminationPlot(pdModel,data(TrainDataInd,:));
Данные могут быть сегментированы, чтобы получить AUROC по сегментам и соответствующие данные ROC.
SegmentVar = "YOB"; DiscMeasure = modelDiscription (pdModel, данные (Ind,:),'SegmentBy', SegmentVar,'DataID', DataSetChoice); диск (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
, или Yea
r использование modelDiscriminationPlot
.
modelDiscriminationPlot(pdModel,data(Ind,:),'SegmentBy',SegmentVar,'DataID',DataSetChoice);
pdModel
- Вероятность дефолтной моделиLogisitic
| объекта Probit
объектВероятность модели по умолчанию, заданная как Logistic
или Probit
объект, ранее созданный с использованием fitLifetimePDModel
.
Примечание
The 'ModelID'
свойство pdModel
объект используется в качестве идентификатора или тега для pdModel
.
Типы данных: object
data
- ДанныеДанные, заданные как NumRows
-by- NumCols
таблица с проецируемыми значениями предиктора для создания пожизненных предсказаний. Имена предикторов и типы данных должны быть согласованы с базовой моделью.
Типы данных: table
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
[PerfMeasure,PerfData] = modelDiscrimination(pdModel,data(Ind,:),'DataID',DataSetChoice)
'DataID'
- Идентификатор набора данных""
(по умолчанию) | вектор символов | строкаИдентификатор набора данных, заданный как разделенная разделенными запятой парами, состоящая из 'DataID'
и вектор символов или строка.
Типы данных: char
| string
'SegmentBy'
- Имя столбца в data
вход, используемый для сегментации набора данных""
(по умолчанию) | вектор символов | строкаИмя столбца во входных данных, не обязательно переменная модели, которая должна использоваться для сегментации набора данных, заданного как разделенная разделенными запятой парами, состоящая из 'SegmentBy'
и вектор символов или строка.
Для каждого сегмента указывается одно значение AUROC, и соответствующие данные ROC для каждого сегмента возвращаются в PerfData
необязательный выход.
Типы данных: char
| string
'ReferencePD'
- Условные значения PD, предсказанные для data
по образцу модели[ ]
(по умолчанию) | числовой вектор'ReferenceID'
- Идентификатор для образца модели'Reference'
(по умолчанию) | вектор символов | строкаИдентификатор образца модели, заданный как разделенная запятой пара, состоящий из 'ReferenceID'
и вектор символов или строка. 'ReferenceID'
используется в modelDiscrimination
выходы для целей отчетности.
Типы данных: char
| string
DiscMeasure
- Информация AUROC для каждой модели и каждого сегментаИнформация AUROC для каждой модели и каждого сегмента., возвращенная как таблица. DiscMeasure
имеет один столбец с именем 'AUROC'
и количество строк зависит от количества сегментов и от того, используете ли вы ReferenceID
для образца модели и ReferencePD
для справочных данных. Имена строк DiscMeasure
сообщить идентификаторы модели, сегменты и данные.
DiscData
- данные ROC для каждой модели и каждого сегментаДанные ROC для каждой модели и каждого сегмента, возвращенные как таблица. Существует три столбца данных ROC с именами столбцов 'X'
, 'Y'
, и 'T'
, где первые два являются координатами X и Y кривой ROC, а T содержит соответствующие пороги.
Если вы используете SegmentBy
функция складывает данные ROC для всех сегментов и DiscData
имеет столбец со значениями сегментации, чтобы указать, где начала и концы каждый сегмент.
Если данные образца модели даны с помощью ReferenceID
и ReferencePD
, а DiscData
выходы для основной и опорной моделей сложены, с дополнительным столбцом 'ModelID'
указывает, где начала и концы каждая модель.
Model discrimination измеряет рейтинг рисков.
Кредиты с более высоким риском должны получить более высокую прогнозируемую вероятность дефолта (PD), чем кредиты с более низким риском. The modelDiscrimination
функция вычисляет Область под кривой характеристики оператора приемника (AUROC), иногда называемую просто Областью под кривой (AUC). Эта метрика находится между 0 и 1, и более высокие значения указывают на лучшую дискриминацию.
Для получения дополнительной информации о кривой характеристики оператора приемника (ROC), см. Модель дискриминации и кривую эффективность.
[1] Baesens, Bart, Daniel Roesch, and Harald Scheule. Аналитика кредитных рисков: методы измерения, приложения и примеры в SAS. Уайли, 2016.
[2] Беллини, Тициано. МСФО (IFRS) 9 и CECL «Моделирование и валидация кредитных рисков: практическое руководство с примерами, используемыми в R и SAS». Сан-Диего, Калифорния: Elsevier, 2019.
[3] Бриден, Джозеф. Жизнь с CECL: Словарь моделирования. Santa Fe, NM: Prescient Models LLC, 2018.
fitLifetimePDModel
| Logistic
| modelAccuracy
| modelAccuracyPlot
| modelDiscriminationPlot
| predict
| predictLifetime
| Probit
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.