Подтвердите качество модели протокола результатов кредита
Stats = validatemodel(sc)
Stats = validatemodel(sc,data)
[Stats,T]
= validatemodel(sc,Name,Value)
[Stats,T,hf]
= validatemodel(sc,Name,Value)
[
подтверждает качество модели Stats
,T
]
= validatemodel(sc
,Name,Value
)creditscorecard
с помощью дополнительных аргументов пары "имя-значение" и возвращает Stats
и T
выходные параметры.
Создайте объект creditscorecard
с помощью файла CreditCardData.mat
, чтобы загрузить data
(использующий набор данных от Refaat 2011).
load CreditCardData sc = creditscorecard(data, 'IDVar','CustID')
sc = creditscorecard with properties: GoodLabel: 0 ResponseVar: 'status' WeightsVar: '' VarNames: {1x11 cell} NumericPredictors: {1x6 cell} CategoricalPredictors: {'ResStatus' 'EmpStatus' 'OtherCC'} BinMissingData: 0 IDVar: 'CustID' PredictorVars: {1x9 cell} Data: [1200x11 table]
Выполните автоматическое раскладывание с помощью опций по умолчанию. По умолчанию autobinning
использует алгоритм Monotone
.
sc = autobinning(sc);
Соответствуйте модели.
sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08 2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06 3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601 4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257 5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306 6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078 7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769 Generalized linear regression model: status ~ [Linear formula with 8 terms in 7 predictors] Distribution = Binomial Estimated Coefficients: Estimate SE tStat pValue ________ ________ ______ __________ (Intercept) 0.70239 0.064001 10.975 5.0538e-28 CustAge 0.60833 0.24932 2.44 0.014687 ResStatus 1.377 0.65272 2.1097 0.034888 EmpStatus 0.88565 0.293 3.0227 0.0025055 CustIncome 0.70164 0.21844 3.2121 0.0013179 TmWBank 1.1074 0.23271 4.7589 1.9464e-06 OtherCC 1.0883 0.52912 2.0569 0.039696 AMBalance 1.045 0.32214 3.2439 0.0011792 1200 observations, 1192 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16
Отформатируйте немасштабированные точки.
sc = formatpoints(sc, 'PointsOddsAndPDO',[500,2,50]);
Выиграйте данные.
scores = score(sc);
Подтвердите модель протокола результатов кредита путем генерации ПРОПИСНОЙ БУКВЫ, ROC и графиков KS.
[Stats,T] = validatemodel(sc,'Plot',{'CAP','ROC','KS'});
disp(Stats)
Measure Value ______________________ _______ 'Accuracy Ratio' 0.32258 'Area under ROC curve' 0.66129 'KS statistic' 0.2246 'KS score' 499.62
disp(T(1:15,:))
Scores ProbDefault TrueBads FalseBads TrueGoods FalseGoods Sensitivity FalseAlarm PctObs ______ ___________ ________ _________ _________ __________ ___________ __________ __________ 369.54 0.75313 0 1 802 397 0 0.0012453 0.00083333 378.19 0.73016 1 1 802 396 0.0025189 0.0012453 0.0016667 380.28 0.72444 2 1 802 395 0.0050378 0.0012453 0.0025 391.49 0.69234 3 1 802 394 0.0075567 0.0012453 0.0033333 395.57 0.68017 4 1 802 393 0.010076 0.0012453 0.0041667 396.14 0.67846 4 2 801 393 0.010076 0.0024907 0.005 396.45 0.67752 5 2 801 392 0.012594 0.0024907 0.0058333 398.61 0.67094 6 2 801 391 0.015113 0.0024907 0.0066667 398.68 0.67072 7 2 801 390 0.017632 0.0024907 0.0075 401.33 0.66255 8 2 801 389 0.020151 0.0024907 0.0083333 402.66 0.65842 8 3 800 389 0.020151 0.003736 0.0091667 404.25 0.65346 9 3 800 388 0.02267 0.003736 0.01 404.73 0.65193 9 4 799 388 0.02267 0.0049813 0.010833 405.53 0.64941 11 4 799 386 0.027708 0.0049813 0.0125 405.7 0.64887 11 5 798 386 0.027708 0.0062267 0.013333
Используйте файл CreditCardData.mat
, чтобы загрузить данные (dataWeights
), который содержит столбец (RowWeights
) для весов (использующий набор данных от Refaat 2011).
load CreditCardData
Создайте объект creditscorecard
с помощью дополнительного аргумента пары "имя-значение" для 'WeightsVar'
.
sc = creditscorecard(dataWeights,'IDVar','CustID','WeightsVar','RowWeights')
sc = creditscorecard with properties: GoodLabel: 0 ResponseVar: 'status' WeightsVar: 'RowWeights' VarNames: {1x12 cell} NumericPredictors: {1x6 cell} CategoricalPredictors: {'ResStatus' 'EmpStatus' 'OtherCC'} BinMissingData: 0 IDVar: 'CustID' PredictorVars: {1x9 cell} Data: [1200x12 table]
Выполните автоматическое раскладывание.
sc = autobinning(sc)
sc = creditscorecard with properties: GoodLabel: 0 ResponseVar: 'status' WeightsVar: 'RowWeights' VarNames: {1x12 cell} NumericPredictors: {1x6 cell} CategoricalPredictors: {'ResStatus' 'EmpStatus' 'OtherCC'} BinMissingData: 0 IDVar: 'CustID' PredictorVars: {1x9 cell} Data: [1200x12 table]
Соответствуйте модели.
sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 764.3187, Chi2Stat = 15.81927, PValue = 6.968927e-05 2. Adding TmWBank, Deviance = 751.0215, Chi2Stat = 13.29726, PValue = 0.0002657942 3. Adding AMBalance, Deviance = 743.7581, Chi2Stat = 7.263384, PValue = 0.007037455 Generalized linear regression model: logit(status) ~ 1 + CustIncome + TmWBank + AMBalance Distribution = Binomial Estimated Coefficients: Estimate SE tStat pValue ________ ________ ______ __________ (Intercept) 0.70642 0.088702 7.964 1.6653e-15 CustIncome 1.0268 0.25758 3.9862 6.7132e-05 TmWBank 1.0973 0.31294 3.5063 0.0004543 AMBalance 1.0039 0.37576 2.6717 0.0075464 1200 observations, 1196 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 36.4, p-value = 6.22e-08
Отформатируйте немасштабированные точки.
sc = formatpoints(sc, 'PointsOddsAndPDO',[500,2,50]);
Выиграйте данные.
scores = score(sc);
Подтвердите модель протокола результатов кредита путем генерации ПРОПИСНОЙ БУКВЫ, ROC и графиков KS. Когда дополнительный аргумент пары "имя-значение" 'WeightsVar'
используется, чтобы задать наблюдение (выборка) веса, таблица T
использует статистику, суммы и совокупные суммы, которые взвешиваются количества.
[Stats,T] = validatemodel(sc,'Plot',{'CAP','ROC','KS'});
Stats
Stats=4×2 table
Measure Value
______________________ _______
'Accuracy Ratio' 0.28972
'Area under ROC curve' 0.64486
'KS statistic' 0.23215
'KS score' 505.41
T(1:10,:)
ans=10×9 table
Scores ProbDefault TrueBads FalseBads TrueGoods FalseGoods Sensitivity FalseAlarm PctObs
______ ___________ ________ _________ _________ __________ ___________ __________ _________
401.34 0.66253 1.0788 0 411.95 201.95 0.0053135 0 0.0017542
407.59 0.64289 4.8363 1.2768 410.67 198.19 0.023821 0.0030995 0.0099405
413.79 0.62292 6.9469 4.6942 407.25 196.08 0.034216 0.011395 0.018929
420.04 0.60236 18.459 9.3899 402.56 184.57 0.090918 0.022794 0.045285
437.27 0.544 18.459 10.514 401.43 184.57 0.090918 0.025523 0.047113
442.83 0.52481 18.973 12.794 399.15 184.06 0.093448 0.031057 0.051655
446.19 0.51319 22.396 14.15 397.8 180.64 0.11031 0.034349 0.059426
449.08 0.50317 24.325 14.405 397.54 178.71 0.11981 0.034968 0.062978
449.73 0.50095 28.246 18.049 393.9 174.78 0.13912 0.043813 0.075279
452.44 0.49153 31.511 23.565 388.38 171.52 0.1552 0.057204 0.089557
BinMissingData'
Этот пример описывает обоих присвоение точек для недостающих данных, когда опция 'BinMissingData'
установлена в true
и соответствующее вычисление статистики проверки допустимости модели.
Предикторы, которые имеют недостающие данные в наборе обучающих данных, имеют явный интервал для <missing>
с соответствующими точками в итоговом протоколе результатов. Эти точки вычисляются из значения Веса доказательства (WOE) для интервала <missing>
и логистических коэффициентов модели. Для выигрыша целей эти точки присвоены отсутствующим значениям и значениям из области значений, и итоговый счет используется, чтобы вычислить статистику проверки допустимости модели с validatemodel
.
Предикторы без недостающих данных в наборе обучающих данных не имеют никакого интервала <missing>
, поэтому никакое ГОРЕ не может быть оценено от данных тренировки. По умолчанию точки для того, чтобы избегать и значений из области значений установлены в NaN
, и это приводит к счету NaN
при выполнении score
. Для предикторов, которые не имеют никакого явного интервала <missing>
, используйте аргумент 'Missing'
значения имени в formatpoints
, чтобы указать, как недостающие данные нужно лечить от выигрыша целей. Итоговый счет используется, чтобы вычислить статистику проверки допустимости модели с validatemodel
.
Создайте объект creditscorecard
с помощью файла CreditCardData.mat
, чтобы загрузить dataMissing
с отсутствующими значениями.
load CreditCardData.mat
head(dataMissing,5)
ans=5×11 table
CustID CustAge TmAtAddress ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance UtilRate status
______ _______ ___________ ___________ _________ __________ _______ _______ _________ ________ ______
1 53 62 <undefined> Unknown 50000 55 Yes 1055.9 0.22 0
2 61 22 Home Owner Employed 52000 25 Yes 1161.6 0.24 0
3 47 30 Tenant Employed 37000 61 No 877.23 0.29 0
4 NaN 75 Home Owner Employed 53000 20 Yes 157.37 0.08 0
5 68 56 Home Owner Employed 53000 14 Yes 561.84 0.11 0
Используйте creditscorecard
с набором аргумента 'BinMissingData'
значения имени к true
к интервалу недостающие числовые или категориальные данные в отдельном интервале. Примените автоматическое раскладывание.
sc = creditscorecard(dataMissing,'IDVar','CustID','BinMissingData',true); sc = autobinning(sc); disp(sc)
creditscorecard with properties: GoodLabel: 0 ResponseVar: 'status' WeightsVar: '' VarNames: {1x11 cell} NumericPredictors: {1x6 cell} CategoricalPredictors: {'ResStatus' 'EmpStatus' 'OtherCC'} BinMissingData: 1 IDVar: 'CustID' PredictorVars: {1x9 cell} Data: [1200x11 table]
Установите минимальное значение нуля для CustAge
и CustIncome
. С этим, любым отрицательным возрастом или информацией о доходе становится недопустимым или "из области значений". Для выигрыша и вероятности вычислений по умолчанию, значениям из области значений дают те же точки как отсутствующие значения.
sc = modifybins(sc,'CustAge','MinValue',0); sc = modifybins(sc,'CustIncome','MinValue',0);
Отобразите информацию об интервале для числовых данных для 'CustAge'
, который включает недостающие данные в отдельный интервал, маркировал <missing>
.
bi = bininfo(sc,'CustAge');
disp(bi)
Bin Good Bad Odds WOE InfoValue ___________ ____ ___ ______ ________ __________ '[0,33)' 69 52 1.3269 -0.42156 0.018993 '[33,37)' 63 45 1.4 -0.36795 0.012839 '[37,40)' 72 47 1.5319 -0.2779 0.0079824 '[40,46)' 172 89 1.9326 -0.04556 0.0004549 '[46,48)' 59 25 2.36 0.15424 0.0016199 '[48,51)' 99 41 2.4146 0.17713 0.0035449 '[51,58)' 157 62 2.5323 0.22469 0.0088407 '[58,Inf]' 93 25 3.72 0.60931 0.032198 '<missing>' 19 11 1.7273 -0.15787 0.00063885 'Totals' 803 397 2.0227 NaN 0.087112
Отобразите информацию об интервале для категориальных данных для 'ResStatus'
, который включает недостающие данные в отдельный интервал, маркировал <missing>
.
bi = bininfo(sc,'ResStatus');
disp(bi)
Bin Good Bad Odds WOE InfoValue ____________ ____ ___ ______ _________ __________ 'Tenant' 296 161 1.8385 -0.095463 0.0035249 'Home Owner' 352 171 2.0585 0.017549 0.00013382 'Other' 128 52 2.4615 0.19637 0.0055808 '<missing>' 27 13 2.0769 0.026469 2.3248e-05 'Totals' 803 397 2.0227 NaN 0.0092627
Для 'CustAge'
и предикторов 'ResStatus'
, там пропускает данные (NaN
s и <undefined>
) в данных тренировки, и процесс раскладывания оценивает значение WOE -0.15787
и 0.026469
соответственно для недостающих данных в этих предикторах, как показано выше.
Для EmpStatus
и CustIncome
там не явный интервал для отсутствующих значений, потому что данные тренировки не имеют никаких отсутствующих значений для этих предикторов.
bi = bininfo(sc,'EmpStatus');
disp(bi)
Bin Good Bad Odds WOE InfoValue __________ ____ ___ ______ ________ _________ 'Unknown' 396 239 1.6569 -0.19947 0.021715 'Employed' 407 158 2.5759 0.2418 0.026323 'Totals' 803 397 2.0227 NaN 0.048038
bi = bininfo(sc,'CustIncome');
disp(bi)
Bin Good Bad Odds WOE InfoValue _______________ ____ ___ _______ _________ __________ '[0,29000)' 53 58 0.91379 -0.79457 0.06364 '[29000,33000)' 74 49 1.5102 -0.29217 0.0091366 '[33000,35000)' 68 36 1.8889 -0.06843 0.00041042 '[35000,40000)' 193 98 1.9694 -0.026696 0.00017359 '[40000,42000)' 68 34 2 -0.011271 1.0819e-05 '[42000,47000)' 164 66 2.4848 0.20579 0.0078175 '[47000,Inf]' 183 56 3.2679 0.47972 0.041657 'Totals' 803 397 2.0227 NaN 0.12285
Используйте fitmodel
, чтобы соответствовать модели логистической регрессии использование данных о Весе доказательства (WOE). fitmodel
внутренне преобразовывает все переменные прогноза в значения WOE, с помощью интервалов, найденных с автоматическим процессом раскладывания. fitmodel
затем соответствует модели логистической регрессии использование пошагового метода (по умолчанию). Для предикторов, которые имеют недостающие данные, существует явный интервал <missing>
с соответствующим значением WOE, вычисленным из данных. При использовании fitmodel
соответствующее значение WOE для <недостающего> интервала применяется при выполнении преобразования WOE.
[sc,mdl] = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08 2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06 3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601 4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257 5. Adding CustAge, Deviance = 1442.8477, Chi2Stat = 4.4974731, PValue = 0.033944979 6. Adding ResStatus, Deviance = 1438.9783, Chi2Stat = 3.86941, PValue = 0.049173805 7. Adding OtherCC, Deviance = 1434.9751, Chi2Stat = 4.0031966, PValue = 0.045414057 Generalized linear regression model: status ~ [Linear formula with 8 terms in 7 predictors] Distribution = Binomial Estimated Coefficients: Estimate SE tStat pValue ________ ________ ______ __________ (Intercept) 0.70229 0.063959 10.98 4.7498e-28 CustAge 0.57421 0.25708 2.2335 0.025513 ResStatus 1.3629 0.66952 2.0356 0.04179 EmpStatus 0.88373 0.2929 3.0172 0.002551 CustIncome 0.73535 0.2159 3.406 0.00065929 TmWBank 1.1065 0.23267 4.7556 1.9783e-06 OtherCC 1.0648 0.52826 2.0156 0.043841 AMBalance 1.0446 0.32197 3.2443 0.0011775 1200 observations, 1192 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 88.5, p-value = 2.55e-16
Масштабируйте точки протокола результатов "точками, разногласиями, и указывает, чтобы удвоить разногласия (PDO)" метод с помощью аргумента 'PointsOddsAndPDO'
formatpoints
. Предположим, что вы хотите, чтобы счет 500 точек имел разногласия 2 (вдвое более вероятный быть хорошими, чем быть плохими) и что разногласия удваивают каждые 50 точек (так, чтобы 550 точек имели бы разногласия 4).
Отобразите протокол результатов, показывающий масштабированные точки для предикторов, сохраненных в подходящей модели.
sc = formatpoints(sc,'PointsOddsAndPDO',[500 2 50]);
PointsInfo = displaypoints(sc)
PointsInfo=33×3 table
Predictors Bin Points
____________ ____________ ______
'CustAge' '[0,33)' 54.062
'CustAge' '[33,37)' 56.282
'CustAge' '[37,40)' 60.012
'CustAge' '[40,46)' 69.636
'CustAge' '[46,48)' 77.912
'CustAge' '[48,51)' 78.86
'CustAge' '[51,58)' 80.83
'CustAge' '[58,Inf]' 96.76
'CustAge' '<missing>' 64.984
'ResStatus' 'Tenant' 62.138
'ResStatus' 'Home Owner' 73.248
'ResStatus' 'Other' 90.828
'ResStatus' '<missing>' 74.125
'EmpStatus' 'Unknown' 58.807
'EmpStatus' 'Employed' 86.937
'CustIncome' '[0,29000)' 29.375
⋮
Заметьте, что точки для интервала <missing>
для CustAge
и ResStatus
явным образом показывают (как 64.9836
и 74.1250
, соответственно). Эти точки вычисляются из значения WOE для интервала <missing>
и логистических коэффициентов модели.
Для предикторов, которые не имеют никаких недостающих данных в наборе обучающих данных, нет никакого явного интервала <missing>
. По умолчанию точки установлены в NaN
для недостающих данных, и они приводят к счету NaN
при выполнении score
. Для предикторов, которые не имеют никакого явного интервала <missing>
, используйте аргумент 'Missing'
значения имени в formatpoints
, чтобы указать, как недостающие данные нужно лечить от выигрыша целей.
В целях рисунка возьмите несколько строк из исходных данных как тестовые данные и введите некоторые недостающие данные. Также введите некоторых недопустимых, или из области значений, значения. Для числовых данных значения ниже минимума (или выше максимума) позволенный рассматриваются недопустимыми, такие как отрицательная величина для возраста (вспомните, что 'MinValue'
был ранее установлен в 0 для CustAge
и CustIncome
). Для категориальных данных недопустимые значения являются категориями, не явным образом включенными в протокол результатов, например, жилое состояние, не ранее сопоставленное с категориями протокола результатов, такими как "Дом" или бессмысленная строка, такими как "abc123".
Это - очень небольшой набор данных валидации, только используемый, чтобы проиллюстрировать выигрыш строк с тем, чтобы избегать и значениями из области значений и его отношением с проверкой допустимости модели.
tdata = dataMissing(11:18,mdl.PredictorNames); % Keep only the predictors retained in the model tdata.status = dataMissing.status(11:18); % Copy the response variable value, needed for validation purposes % Set some missing values tdata.CustAge(1) = NaN; tdata.ResStatus(2) = '<undefined>'; tdata.EmpStatus(3) = '<undefined>'; tdata.CustIncome(4) = NaN; % Set some invalid values tdata.CustAge(5) = -100; tdata.ResStatus(6) = 'House'; tdata.EmpStatus(7) = 'Freelancer'; tdata.CustIncome(8) = -1; disp(tdata)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance status _______ ___________ ___________ __________ _______ _______ _________ ______ NaN Tenant Unknown 34000 44 Yes 119.8 1 48 <undefined> Unknown 44000 14 Yes 403.62 0 65 Home Owner <undefined> 48000 6 No 111.88 0 44 Other Unknown NaN 35 No 436.41 0 -100 Other Employed 46000 16 Yes 162.21 0 33 House Employed 36000 36 Yes 845.02 0 39 Tenant Freelancer 34000 40 Yes 756.26 1 24 Home Owner Employed -1 19 Yes 449.61 0
Выиграйте новые данные и смотрите, как точки присвоены для пропавших без вести CustAge
и ResStatus
, потому что у нас есть явный интервал с точками для <missing>
. Однако для EmpStatus
и CustIncome
функция score
устанавливает точки на NaN
.
Результаты валидации ненадежны, очки со значениями NaN
сохранены (см. таблицу ValTable
валидации ниже), но неясно, что влияет на эти значения NaN
, имеют в статистике валидации (ValStats
). Это - очень небольшой набор данных валидации, но очки NaN
могли все еще влиять на результаты валидации на большем наборе данных.
[Scores,Points] = score(sc,tdata); disp(Scores)
481.2231 520.8353 NaN NaN 551.7922 487.9588 NaN NaN
disp(Points)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ _________ _________ __________ _______ _______ _________ 64.984 62.138 58.807 67.893 61.858 75.622 89.922 78.86 74.125 58.807 82.439 61.061 75.622 89.922 96.76 73.248 NaN 96.969 51.132 50.914 89.922 69.636 90.828 58.807 NaN 61.858 50.914 89.922 64.984 90.828 86.937 82.439 61.061 75.622 89.922 56.282 74.125 86.937 70.107 61.858 75.622 63.028 60.012 62.138 NaN 67.893 61.858 75.622 63.028 54.062 73.248 86.937 NaN 61.061 75.622 89.922
[ValStats,ValTable] = validatemodel(sc,tdata); disp(ValStats)
Measure Value ______________________ _______ 'Accuracy Ratio' 0.16667 'Area under ROC curve' 0.58333 'KS statistic' 0.5 'KS score' 481.22
disp(ValTable)
Scores ProbDefault TrueBads FalseBads TrueGoods FalseGoods Sensitivity FalseAlarm PctObs ______ ___________ ________ _________ _________ __________ ___________ __________ ______ NaN NaN 0 1 5 2 0 0.16667 0.125 NaN NaN 0 2 4 2 0 0.33333 0.25 NaN NaN 1 2 4 1 0.5 0.33333 0.375 NaN NaN 1 3 3 1 0.5 0.5 0.5 481.22 0.39345 2 3 3 0 1 0.5 0.625 487.96 0.3714 2 4 2 0 1 0.66667 0.75 520.84 0.2725 2 5 1 0 1 0.83333 0.875 551.79 0.19605 2 6 0 0 1 1 1
Используйте аргумент 'Missing'
значения имени в formatpoints
, чтобы выбрать, как присвоить точки отсутствующим значениям для предикторов, которые не имеют явного интервала <missing>
. В этом примере используйте опцию 'MinPoints'
для аргумента 'Missing'
. Минимальными точками для EmpStatus
в протоколе результатов, отображенном выше, является 58.8072
, и для CustIncome
минимальными точками является 29.3753
.
Результаты валидации больше не под влиянием значений NaN
, поскольку все строки теперь имеют счет.
sc = formatpoints(sc,'Missing','MinPoints'); [Scores,Points] = score(sc,tdata); disp(Scores)
481.2231 520.8353 517.7532 451.3405 551.7922 487.9588 449.3577 470.2267
disp(Points)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ _________ _________ __________ _______ _______ _________ 64.984 62.138 58.807 67.893 61.858 75.622 89.922 78.86 74.125 58.807 82.439 61.061 75.622 89.922 96.76 73.248 58.807 96.969 51.132 50.914 89.922 69.636 90.828 58.807 29.375 61.858 50.914 89.922 64.984 90.828 86.937 82.439 61.061 75.622 89.922 56.282 74.125 86.937 70.107 61.858 75.622 63.028 60.012 62.138 58.807 67.893 61.858 75.622 63.028 54.062 73.248 86.937 29.375 61.061 75.622 89.922
[ValStats,ValTable] = validatemodel(sc,tdata); disp(ValStats)
Measure Value ______________________ _______ 'Accuracy Ratio' 0.66667 'Area under ROC curve' 0.83333 'KS statistic' 0.66667 'KS score' 481.22
disp(ValTable)
Scores ProbDefault TrueBads FalseBads TrueGoods FalseGoods Sensitivity FalseAlarm PctObs ______ ___________ ________ _________ _________ __________ ___________ __________ ______ 449.36 0.50223 1 0 6 1 0.5 0 0.125 451.34 0.49535 1 1 5 1 0.5 0.16667 0.25 470.23 0.43036 1 2 4 1 0.5 0.33333 0.375 481.22 0.39345 2 2 4 0 1 0.33333 0.5 487.96 0.3714 2 3 3 0 1 0.5 0.625 517.75 0.28105 2 4 2 0 1 0.66667 0.75 520.84 0.2725 2 5 1 0 1 0.83333 0.875 551.79 0.19605 2 6 0 0 1 1 1
sc
— Модель протокола результатов кредитаcreditscorecard
Модель протокола результатов кредита, заданная как объект creditscorecard
. Чтобы создать этот объект, используйте creditscorecard
.
данные
Данные о валидации(Необязательно) данные о Валидации, заданные как таблица MATLAB®, где каждая строка таблицы соответствует отдельным наблюдениям. data
должен содержать столбцы для каждого из предикторов в модели протокола результатов кредита. Столбцы данных могут быть любым из следующих типов данных:
Числовой
Логический
Массив ячеек из символьных векторов
Массив символов
Категориальный
Строка
StringArray
Кроме того, таблица должна содержать бинарную переменную отклика.
Когда веса наблюдения заданы с помощью дополнительного аргумента пары "имя-значение" WeightsVar
при создании объекта creditscorecard
, веса, сохраненные в столбце WeightsVar
, используются при проверке модели на данных тренировки. Если различный набор данных валидации обеспечивается с помощью дополнительного входа data
, веса наблюдения для данных о валидации должны быть включены в столбец, имя которого совпадает с WeightsVar
, в противном случае модульные веса используются для данных о валидации. Для получения дополнительной информации смотрите Используя validatemodel с Весами.
Типы данных: table
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
sc = validatemodel(sc,data,'AnalysisLevel','Deciles','Plot','CAP')
'AnalysisLevel'
— Тип аналитического уровня'Scores'
(значение по умолчанию) | вектор символов со значениями 'Deciles'
, 'Scores'
Тип аналитического уровня, заданного как пара, разделенная запятой, состоящая из 'AnalysisLevel'
и вектора символов с одним из следующих значений:
'Scores'
— Возвращает статистику (Stats
) на уровне наблюдения. Очки сортируются от самого опасного до самого безопасного, и копии удалены.
'Deciles'
— Возвращает статистику (Stats
) на уровне дециля. Очки сортируются от самого опасного до самого безопасного и сгруппированного с их соответствующей статистикой в 10 децилей (10%, 20%..., 100%).
Типы данных: char
график
Тип графика'None'
(значение по умолчанию) | вектор символов со значениями 'None'
, 'CAP'
, 'ROC'
, 'KS'
| массив ячеек из символьных векторов со значениями 'None'
, 'CAP'
, 'ROC'
, 'KS'
Тип графика, заданного как пара, разделенная запятой, состоящая из 'Plot'
и вектора символов с одним из следующих значений:
'none'
Никакой график не отображен.
\cap
Совокупный Профиль Точности. Строит часть заемщиков, чтобы выиграть “s” по сравнению с частью нарушителей, чтобы выиграть “s” ('PctObs'
по сравнению со столбцами 'Sensitivity'
T
дополнительный выходной аргумент). Для получения дополнительной информации смотрите Совокупный профиль точности (CAP).
'ROC'
— Рабочая характеристика получателя. Строит часть ненарушителей, чтобы выиграть “s” по сравнению с частью нарушителей, чтобы выиграть “s” ('FalseAlarm'
по сравнению со столбцами 'Sensitivity'
T
дополнительный выходной аргумент). Для получения дополнительной информации смотрите Рабочую характеристику получателя (ROC).
'KS'
— Кольмогоров-Смирнов. Графики каждый счет “s” по сравнению с частью нарушителей, чтобы выиграть “s”, и также по сравнению с частью ненарушителей, чтобы выиграть “s” ('Scores'
и по сравнению с 'Sensitivity'
и по сравнению со столбцами 'FalseAlarm'
дополнительного выходного аргумента T
). Для получения дополнительной информации смотрите статистическую величину Кольмогорова-Смирнова (KS).
Для опции статистической величины Кольмогорова-Смирнова можно ввести 'KS'
или 'K-S'
.
Типы данных: char | cell
Статистика
Меры по валидацииМеры по валидации, возвращенные как 4
-by-2
таблица. Первый столбец, 'Measure'
, содержит имена следующих мер:
Отношение точности (AR)
Область под кривой ROC (AUROC)
Статистическая величина KS
Счет KS
Второй столбец, 'Value'
, содержит значения, соответствующие этим мерам.
T
Данные о статистике валидацииДанные о статистике валидации, возвращенные как N
-by-9
таблица данных о статистике валидации, отсортированных, счетом, от самого опасного до самого безопасного. Когда AnalysisLevel
установлен в 'Deciles'
, N
равен 10
. В противном случае N
равен общему количеству уникальных очков, то есть, очков без копий.
Таблица T
содержит следующие девять столбцов в этом порядке:
'Scores'
— Очки, отсортированные от самого опасного до самого безопасного. Данные в этой строке соответствуют всем наблюдениям до, и включая счет в этой строке.
'ProbDefault'
— Вероятность значения по умолчанию для наблюдений в этой строке. Для децилей сообщают о средней вероятности значения по умолчанию для всех наблюдений в данном дециле.
'TrueBads'
— Совокупное число “bads” до, и включая, соответствующий счет.
'FalseBads'
— Совокупное число “товаров” до, и включая, соответствующий счет.
'TrueGoods'
— Совокупное число “товаров” выше соответствующего счета.
'FalseGoods'
— Совокупное число “bads” выше соответствующего счета.
'Sensitivity'
— Часть нарушителей (или совокупное число “bads”, разделенного на общее количество “bads”). Это - распределение “bads” до и включая соответствующий счет.
'FalseAlarm'
— Часть ненарушителей (или совокупное число “товаров”, разделенных на общее количество “товаров”). Это - распределение “товаров” до и включая соответствующий счет.
'PctObs'
— Часть заемщиков или совокупное число наблюдений, разделенных на общее количество наблюдений до и включая соответствующий счет.
При создании объекта creditscorecard
с creditscorecard
, если дополнительный аргумент пары "имя-значение" WeightsVar
использовался, чтобы задать наблюдение (выборка) веса, то таблица T
использует статистику, суммы и совокупные суммы, которые взвешиваются количества.
hf
— Обработайте к нанесенным на график мерамИзобразите указатель на нанесенные на график меры, возвращенные как указатель фигуры или массив указателей. Когда Plot
установлен в 'None'
, hf
является пустым массивом.
ПРОПИСНАЯ БУКВА обычно является вогнутой кривой и также известна как кривую Gini, кривую Степени или кривую Лоренца.
Множество данных наблюдений сортируется от самого опасного до самого безопасного. Для данного дробного M
(от 0% до 100%) общих заемщиков, высота кривой ПРОПИСНОЙ БУКВЫ является частью нарушителей, очки которых меньше чем или равны максимальному счету дробного M
, также известного как “Чувствительность”.
Область под кривой ПРОПИСНОЙ БУКВЫ, известной как AUCAP, затем по сравнению с той из совершенной или “идеальной” модели, ведя к определению итогового индекса, известного как отношение точности (AR) или коэффициент Gini:
где A, R является областью между кривой ПРОПИСНОЙ БУКВЫ и диагональю и A P, является областью между совершенной моделью и диагональю. Это представляет “случайную” модель, где очки присвоены случайным образом, и поэтому пропорция нарушителей и ненарушителей независима от счета. Совершенная модель является моделью, для которой присвоены все нарушители, самые низкие очки, и поэтому, отлично различают между нарушителями и ненарушителями. Таким образом, чем ближе к единице AR, тем лучше модель выигрыша.
Чтобы найти кривую рабочей характеристики получателя (ROC), пропорция нарушителей до данного счета “s” или “Чувствительность”, вычисляется.
Эта пропорция известна как истинный положительный уровень (TPR). Кроме того, пропорция ненарушителей, чтобы выиграть “s “, или “Ложный Сигнальный Уровень”, также вычисляется. Эта пропорция также известна как ложный положительный уровень (FPR). Кривая ROC является графиком “Чувствительности” по сравнению с “Ложным Сигнальным Уровнем”. Вычисление кривой ROC подобно вычислению эквивалента матрицы беспорядка на каждом уровне счета.
Подобно ПРОПИСНОЙ БУКВЕ ROC знали итоговую статистическую величину как область под кривой ROC (AUROC). Чем ближе к единице, тем лучше модель выигрыша. Отношение точности (AR) связано с областью под кривой следующей формулой:
Кольмогоров-Смирнов (KS), график, также известный как график подозрительного взгляда, является общей статистической величиной, раньше измерял предсказательную силу протоколов результатов.
График KS показывает распределение нарушителей и распределение ненарушителей на том же графике. Для распределения нарушителей каждый счет “s” построен по сравнению с пропорцией нарушителей до “s" или “Чувствительностью". Для распределения ненарушителей каждый счет “s” построен по сравнению с пропорцией ненарушителей до “s", или “Ложным Предупреждением". Статистическая величина интереса называется статистической величиной KS и является максимальной разницей между этими двумя дистрибутивами (“Чувствительность” минус “Ложное Предупреждение”). Счет, в котором достигнут этот максимум, также представляет интерес.
validatemodel
с весамиСтатистические данные проверки допустимости модели включают веса наблюдения, когда они обеспечиваются пользователем.
Без весов статистические данные валидации на основе того, сколько хороших и плохих наблюдений падает ниже конкретного счета. С другой стороны, когда веса наблюдения обеспечиваются, вес (не количество) накапливается для пользы и плохих наблюдений, которые падают ниже конкретного счета.
Когда веса наблюдения заданы с помощью дополнительного аргумента пары "имя-значение" WeightsVar
при создании объекта creditscorecard
, веса, сохраненные в столбце WeightsVar
, используются при проверке модели на данных тренировки. Когда различный набор данных валидации обеспечивается с помощью дополнительного входа data
, веса наблюдения для данных о валидации должны быть включены в столбец, имя которого совпадает с WeightsVar
, в противном случае модульные веса используются для набора данных валидации.
Не только статистика валидации, но и сами очки протокола результатов кредита зависят от весов наблюдения данных тренировки. Для получения дополнительной информации смотрите Используя fitmodel с Весами и Моделированием Протокола результатов Кредита Используя Веса Наблюдения.
[1] “Базельский комитет по банковскому надзору: исследования валидации внутренних систем оценки”. Рабочий документ № 14, февраль 2005.
[2] Refaat, M. Протоколы результатов кредитного риска: разработка и реализация Используя SAS. lulu.com, 2011.
[3] Loeffler, G. и Posch, P. N. Credit Risk Modeling Using Excel и VBA. Финансы Вайли, 2007.
bindata
| bininfo
| creditscorecard
| displaypoints
| fitmodel
| formatpoints
| modifybins
| modifypredictor
| plotbins
| predictorinfo
| probdefault
| score
| setmodel
| table
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.