Вероятность значения по умолчанию для определенных данных установлена
вычисляет вероятность значения по умолчанию для набора определенных данных, заданного с помощью дополнительного аргумента pd
= probdefault(sc
,data
)data
.
По умолчанию данные раньше создавали creditscorecard
объект используется. Можно также предоставить входные данные, к которым применяется тот же расчет вероятности значения по умолчанию.
Создайте 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
Вычислите вероятность значения по умолчанию.
pd = probdefault(sc); disp(pd(1:15,:))
0.2503 0.1878 0.3173 0.1711 0.1895 0.1307 0.5218 0.2848 0.2612 0.3047 0.3418 0.2237 0.2793 0.3615 0.1653
BinMissingData'
ОпцияЭтот пример описывает обоих присвоение точек для недостающих данных когда 'BinMissingData'
опция установлена в true
, и соответствующий расчет вероятностей значения по умолчанию.
Предикторы, которые имеют недостающие данные в наборе обучающих данных, имеют явный интервал для <missing>
с соответствующими точками в итоговом протоколе результатов. Эти точки вычисляются из значения Веса доказательства (WOE) для <missing>
интервал и логистические коэффициенты модели. Для выигрыша целей эти точки присвоены отсутствующим значениям и значениям из области значений, и итоговый счет сопоставлен с вероятностью значения по умолчанию при использовании probdefault
.
Предикторы без недостающих данных в наборе обучающих данных не имеют никакого <missing>
интервал, поэтому никакое ГОРЕ не может быть оценено от обучающих данных. По умолчанию точки для того, чтобы избегать и значений из области значений установлены в NaN
, и это приводит к счету NaN
при выполнении score
. Для предикторов, которые не имеют никакого явного <missing>
интервал, используйте аргумент 'Missing'
значения имени в
formatpoints
указать, как недостающие данные нужно лечить от выигрыша целей. Итоговый счет затем сопоставлен с вероятностью значения по умолчанию при использовании probdefault
.
Создайте 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]
Установите минимальное значение 0
для 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=38×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
{'EmpStatus'} {'<missing>' } NaN
⋮
Заметьте, что точки для <missing>
интервал для CustAge
и ResStatus
явным образом показаны (как 64.9836
и 74.1250
, соответственно). Эти точки вычисляются из значения WOE для <недостающего> интервала и логистических коэффициентов модели.
Для предикторов, которые не имеют никаких недостающих данных в наборе обучающих данных, нет никакого явного <недостающего> интервала. По умолчанию точки установлены в NaN
для недостающих данных, и они приводят к счету NaN
при выполнении score
. Для предикторов, которые не имеют никакого явного <недостающего> интервала, используйте аргумент 'Missing'
значения имени в
formatpoints
указать, как недостающие данные нужно лечить от выигрыша целей.
В целях рисунка возьмите несколько строк из исходных данных как тестовые данные и введите некоторые недостающие данные. Также введите некоторых недопустимых, или из области значений, значения. Для числовых данных значения ниже минимума (или выше максимума) позволенный рассматриваются недопустимыми, такие как отрицательная величина для возраста (вспомните 'MinValue'
был ранее установлен в 0 для CustAge
и CustIncome
). Для категориальных данных недопустимые значения являются категориями, не явным образом включенными в протокол результатов, например, жилое состояние, не ранее сопоставленное с категориями протокола результатов, такими как "Дом" или бессмысленная строка, такими как "abc123".
tdata = dataMissing(11:18,mdl.PredictorNames); % Keep only the predictors retained in the model % 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 _______ ___________ ___________ __________ _______ _______ _________ NaN Tenant Unknown 34000 44 Yes 119.8 48 <undefined> Unknown 44000 14 Yes 403.62 65 Home Owner <undefined> 48000 6 No 111.88 44 Other Unknown NaN 35 No 436.41 -100 Other Employed 46000 16 Yes 162.21 33 House Employed 36000 36 Yes 845.02 39 Tenant Freelancer 34000 40 Yes 756.26 24 Home Owner Employed -1 19 Yes 449.61
Выиграйте новые данные и смотрите, как точки присвоены для пропавших без вести CustAge
и ResStatus
, потому что у нас есть явный интервал с точками для <missing>
. Однако для EmpStatus
и CustIncome
score
функционируйте устанавливает точки на NaN
. Соответствующие вероятности значения по умолчанию также установлены в 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
pd = probdefault(sc,tdata); disp(pd)
0.3934 0.2725 NaN NaN 0.1961 0.3714 NaN NaN
Используйте аргумент 'Missing'
значения имени в
formatpoints
выбрать, как присвоить точки отсутствующим значениям для предикторов, которые не имеют явного <missing>
интервал. В этом примере используйте 'MinPoints'
опция для 'Missing'
аргумент. Минимум указывает для EmpStatus
в протоколе результатов, отображенном выше, 58.8072
, и для CustIncome
минимальными точками является 29.3753
. Все строки теперь имеют счет и соответствующую вероятность значения по умолчанию.
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
pd = probdefault(sc,tdata); disp(pd)
0.3934 0.2725 0.2810 0.4954 0.1961 0.3714 0.5022 0.4304
sc
— Модель протокола результатов кредитаcreditscorecard
объектМодель протокола результатов кредита в виде creditscorecard
объект. Чтобы создать этот объект, используйте creditscorecard
.
data
— Набор данных, чтобы применить вероятность правил по умолчанию(Необязательно) Набор данных, чтобы применить вероятность правил по умолчанию в виде таблицы MATLAB®, где каждая строка соответствует отдельным наблюдениям. Данные должны содержать столбцы для каждого из предикторов в creditscorecard
объект.
Типы данных: table
pd
— Вероятность значения по умолчаниюВероятность значения по умолчанию, возвращенного как NumObs
- 1
числовой массив вероятностей по умолчанию.
После того, как немасштабированные баллы вычисляются (см. Алгоритмы для Вычисления и Масштабирования Баллов), вероятность точек, являющихся “Хорошим”, представлена следующей формулой:
ProbGood = 1./(1 + exp(-UnscaledScores))
Таким образом вероятность значения по умолчанию
pd = 1 - ProbGood
[1] Refaat, M. Протоколы результатов Кредитного риска: Разработка и Реализация Используя SAS. lulu.com, 2011.
bindata
| bininfo
| creditscorecard
| displaypoints
| fitmodel
| formatpoints
| modifybins
| modifypredictor
| plotbins
| predictorinfo
| score
| setmodel
| table
| validatemodel
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.