compactCreditScorecard
Этот пример показывает рабочий процесс для создания объекта compactCreditScorecard
от объекта creditscorecard
.
creditscorecard
Чтобы создать объект compactCreditScorecard
, необходимо сначала создать объект creditscorecard
. Создайте объект creditscorecard
с файлом CreditCardData.mat
и установите аргумент пары "имя-значение" 'BinMissingData'
true
, потому что набор данных dataMissing
содержит недостающие данные.
load CreditCardData.mat sc = creditscorecard(dataMissing,'IDVar','CustID','BinMissingData',true); sc = autobinning(sc); sc = modifybins(sc,'CustAge','MinValue',0); sc = modifybins(sc,'CustIncome','MinValue',0);
creditscorecard
Используйте fitmodel
, чтобы соответствовать модели логистической регрессии использование данных о Весе доказательства (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
creditscorecard
Создайте новый набор данных, который используется для выигрыша на основе ранее созданного объекта creditscorecard
.
tdata = data(1:10, mdl.PredictorNames); tdata.CustAge(2) = NaN; tdata.CustAge(5) = -5; tdata.ResStatus(1) = '<undefined>'; tdata.ResStatus(3) = 'Landlord'; tdata.EmpStatus(3) = '<undefined>'; tdata.CustIncome(4) = NaN; tdata.EmpStatus(7) = 'Freelancer'; tdata.CustIncome(8) = -1; tdata.CustIncome(4) = NaN; disp(tdata);
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ ___________ ___________ __________ _______ _______ _________ 53 <undefined> Unknown 50000 55 Yes 1055.9 NaN Home Owner Employed 52000 25 Yes 1161.6 47 Landlord <undefined> 37000 61 No 877.23 50 Home Owner Employed NaN 20 Yes 157.37 -5 Home Owner Employed 53000 14 Yes 561.84 65 Home Owner Employed 48000 59 Yes 968.18 34 Home Owner Freelancer 32000 26 Yes 717.82 50 Other Employed -1 33 No 3041.2 50 Tenant Unknown 52000 25 Yes 115.56 49 Home Owner Unknown 53000 23 Yes 718.5
Используйте displaypoints
, чтобы отобразить точки на предиктор. Используйте score
, чтобы вычислить кредитные рейтинги с помощью новых данных (tdata
). Затем используйте probdefault
с новыми данными (tdata
), чтобы вычислить вероятность значения по умолчанию. При использовании formatpoints
аргумент пары "имя-значение" 'Missing'
установлен в 'minpoints'
, потому что tdata
содержит недостающие данные.
PointsInfo = displaypoints(sc)
PointsInfo=33×3 table
Predictors Bin Points
____________ ____________ _________
'CustAge' '[0,33)' -0.14173
'CustAge' '[33,37)' -0.11095
'CustAge' '[37,40)' -0.059244
'CustAge' '[40,46)' 0.074167
'CustAge' '[46,48)' 0.1889
'CustAge' '[48,51)' 0.20204
'CustAge' '[51,58)' 0.22935
'CustAge' '[58,Inf]' 0.45019
'CustAge' '<missing>' 0.0096749
'ResStatus' 'Tenant' -0.029778
'ResStatus' 'Home Owner' 0.12425
'ResStatus' 'Other' 0.36796
'ResStatus' '<missing>' 0.1364
'EmpStatus' 'Unknown' -0.075948
'EmpStatus' 'Employed' 0.31401
'CustIncome' '[0,29000)' -0.48396
⋮
[Scores, Points] = score(sc, tdata)
Scores = 10×1
1.2784
1.0071
NaN
NaN
0.9960
1.8771
NaN
NaN
1.0283
0.8095
Points=10×7 table
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance
_________ _________ _________ __________ _________ ________ _________
0.22935 0.1364 -0.075948 0.45309 0.3958 0.15715 -0.017438
0.0096749 0.12425 0.31401 0.45309 -0.033652 0.15715 -0.017438
0.1889 0.1364 NaN 0.080697 0.3958 -0.18537 -0.017438
0.20204 0.12425 0.31401 NaN -0.044701 0.15715 0.35539
0.0096749 0.12425 0.31401 0.45309 -0.044701 0.15715 -0.017438
0.45019 0.12425 0.31401 0.45309 0.3958 0.15715 -0.017438
-0.11095 0.12425 NaN -0.11452 -0.033652 0.15715 -0.017438
0.20204 0.36796 0.31401 NaN -0.033652 -0.18537 -0.21195
0.20204 -0.029778 -0.075948 0.45309 -0.033652 0.15715 0.35539
0.20204 0.12425 -0.075948 0.45309 -0.033652 0.15715 -0.017438
pd = probdefault(sc, tdata)
pd = 10×1
0.2178
0.2676
NaN
NaN
0.2697
0.1327
NaN
NaN
0.2634
0.3080
sc = formatpoints(sc,'BasePoints',true,'Missing','minpoints','Round','finalscore','PointsOddsAndPDO',[500, 2, 50]); PointsInfo1 = displaypoints(sc)
PointsInfo1=34×3 table
Predictors Bin Points
____________ ____________ _______
'BasePoints' 'BasePoints' 500.66
'CustAge' '[0,33)' -17.461
'CustAge' '[33,37)' -15.24
'CustAge' '[37,40)' -11.511
'CustAge' '[40,46)' -1.8871
'CustAge' '[46,48)' 6.3888
'CustAge' '[48,51)' 7.3367
'CustAge' '[51,58)' 9.3068
'CustAge' '[58,Inf]' 25.238
'CustAge' '<missing>' -6.5392
'ResStatus' 'Tenant' -9.3852
'ResStatus' 'Home Owner' 1.7253
'ResStatus' 'Other' 19.305
'ResStatus' '<missing>' 2.6022
'EmpStatus' 'Unknown' -12.716
'EmpStatus' 'Employed' 15.414
⋮
[Scores1, Points1] = score(sc, tdata)
Scores1 = 10×1
542
523
488
495
522
585
445
448
524
508
Points1=10×8 table
BasePoints CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance
__________ _______ _________ _________ __________ _______ _______ _________
500.66 9.3068 2.6022 -12.716 25.446 21.314 4.0988 -8.495
500.66 -6.5392 1.7253 15.414 25.446 -9.6646 4.0988 -8.495
500.66 6.3888 2.6022 -12.716 -1.4161 21.314 -20.609 -8.495
500.66 7.3367 1.7253 15.414 -42.148 -10.462 4.0988 18.399
500.66 -6.5392 1.7253 15.414 25.446 -10.462 4.0988 -8.495
500.66 25.238 1.7253 15.414 25.446 21.314 4.0988 -8.495
500.66 -15.24 1.7253 -12.716 -15.498 -9.6646 4.0988 -8.495
500.66 7.3367 19.305 15.414 -42.148 -9.6646 -20.609 -22.526
500.66 7.3367 -9.3852 -12.716 25.446 -9.6646 4.0988 18.399
500.66 7.3367 1.7253 -12.716 25.446 -9.6646 4.0988 -8.495
pd1 = probdefault(sc, tdata)
pd1 = 10×1
0.2178
0.2676
0.3721
0.3488
0.2697
0.1327
0.5178
0.5077
0.2634
0.3080
compactCreditScorecard
из объекта creditscorecard
Создайте объект compactCreditScorecard
с помощью объекта creditscorecard
в качестве входа. Также можно создать объект compactCreditScorecard
с помощью функции compact
в Financial Toolbox™.
csc = compactCreditScorecard(sc)
csc = compactCreditScorecard with properties: Description: '' NumericPredictors: {'CustAge' 'CustIncome' 'TmWBank' 'AMBalance'} CategoricalPredictors: {'ResStatus' 'EmpStatus' 'OtherCC'} PredictorVars: {1x7 cell}
compactCreditScoreCard
Можно анализировать объект compactCreditScorecard с displaypoints
, score
и probdefault
от Risk Management Toolbox™.
PointsInfo2 = displaypoints(csc)
PointsInfo2=39×3 table
Predictors Bin Points
____________ ____________ _______
'BasePoints' 'BasePoints' 500.66
'CustAge' '[0,33)' -17.461
'CustAge' '[33,37)' -15.24
'CustAge' '[37,40)' -11.511
'CustAge' '[40,46)' -1.8871
'CustAge' '[46,48)' 6.3888
'CustAge' '[48,51)' 7.3367
'CustAge' '[51,58)' 9.3068
'CustAge' '[58,Inf]' 25.238
'CustAge' '<missing>' -6.5392
'ResStatus' 'Tenant' -9.3852
'ResStatus' 'Home Owner' 1.7253
'ResStatus' 'Other' 19.305
'ResStatus' '<missing>' 2.6022
'EmpStatus' 'Unknown' -12.716
'EmpStatus' 'Employed' 15.414
⋮
[Scores2, Points2] = score(csc, tdata)
Scores2 = 10×1
542
523
488
495
522
585
445
448
524
508
Points2=10×8 table
BasePoints CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance
__________ _______ _________ _________ __________ _______ _______ _________
500.66 9.3068 2.6022 -12.716 25.446 21.314 4.0988 -8.495
500.66 -6.5392 1.7253 15.414 25.446 -9.6646 4.0988 -8.495
500.66 6.3888 2.6022 -12.716 -1.4161 21.314 -20.609 -8.495
500.66 7.3367 1.7253 15.414 -42.148 -10.462 4.0988 18.399
500.66 -6.5392 1.7253 15.414 25.446 -10.462 4.0988 -8.495
500.66 25.238 1.7253 15.414 25.446 21.314 4.0988 -8.495
500.66 -15.24 1.7253 -12.716 -15.498 -9.6646 4.0988 -8.495
500.66 7.3367 19.305 15.414 -42.148 -9.6646 -20.609 -22.526
500.66 7.3367 -9.3852 -12.716 25.446 -9.6646 4.0988 18.399
500.66 7.3367 1.7253 -12.716 25.446 -9.6646 4.0988 -8.495
pd2 = probdefault(csc, tdata)
pd2 = 10×1
0.2178
0.2676
0.3721
0.3488
0.2697
0.1327
0.5178
0.5077
0.2634
0.3080
Сравните размер объектов compactCreditScorecard
и creditscorecard
.
whos('dataMissing','sc','csc')
Name Size Bytes Class Attributes csc 1x1 40685 compactCreditScorecard dataMissing 1200x11 84876 table sc 1x1 159393 creditscorecard
Размер объекта compactCreditScorecard
легок по сравнению с объектом creditscorecard
. Однако объект compactCreditScorecard
не может быть непосредственно изменен. Если необходимо изменить объект compactCreditScorecard
, необходимо изменить стартовый объект creditscorecard
, и затем повторно преобразовать тот объект создать объект compactCreditScorecard
снова.