Вычислите данные 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, или 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')

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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.