Вычислите данные ROC и AUROC
[
вычисляет область под кривой рабочей характеристики приемника (AUROC) и возвращает данные для соответствующей кривой ROC. DiscMeasure
,DiscData
] = modelDiscrimination(pdModel
,data
)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
, или Yea
r.
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')
pdModel
— Вероятность модели по умолчаниюLogisitic
возразите | Probit
объектВероятность модели по умолчанию в виде Logistic
или Probit
возразите ранее созданному использованию fitLifetimePDModel
.
Примечание
'ModelID'
свойство pdModel
объект используется в качестве идентификатора или тега для pdModel
.
Типы данных: object
data
данныеДанные в виде NumRows
- 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'
— Идентификатор для образца модели" "
(значение по умолчанию) | вектор символов | строкаИдентификатор для образца модели в виде разделенной запятой пары, состоящей из 'ReferenceID'
и вектор символов или строка. 'ReferenceID'
используется в modelDiscrimination
выведите для создания отчетов о целях.
Типы данных: char |
string
DiscMeasure
— Информация о AUROC для каждой модели и каждого сегментаИнформация о AUROC для каждой модели и каждого сегмента., возвратился как таблица. DiscMeasure
имеет отдельный столбец под названием 'AUROC'
и количество строк зависит от количества сегментов и используете ли вы ReferenceID
для образца модели и ReferencePD
для справочных данных. Имена строки DiscMeasure
сообщите о модели IDs, сегменте и ID данных.
DiscData
— Данные ROC для каждой модели и каждого сегментаДанные 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.
fitLifetimePDModel
| Logistic
| modelAccuracy
| predict
| predictLifetime
| Probit
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.