Рабочий процесс объекта compactCreditScorecard

Этот пример показывает рабочий процесс для создания объекта compactCreditScorecard от объекта creditscorecard.

Шаг 1. Создайте объект 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);

Шаг 2. Соответствуйте модели логистической регрессии для объекта 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

Шаг 3. Создайте новый набор данных для выигрыша объекта 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

Шаг 4. Создайте объект 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}

Шаг 5. Используйте присоединенные функции, чтобы анализировать объект 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 снова.