validatemodel

Подтверждение качества компактной модели карты показателей кредита

Описание

пример

Stats = validatemodel(csc,data) подтверждает качество compactCreditScorecard модель для набора данных, заданного с помощью аргумента data.

пример

[Stats,T] = validatemodel(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущем синтаксисе, и возвращает выходы Stats и T.

пример

[Stats,T,hf] = validatemodel(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущем синтаксисе, и возвращает выходы Stats и T и указатель на рисунок hf на графики CAP, ROC и KS.

Примеры

свернуть все

Вычислите статистику валидации модели для компактной модели карты показателей кредита.

Как создать compactCreditScorecard объект, необходимо сначала разработать модель карты показателей кредита с помощью creditscorecard объект.

Создайте creditscorecard объект с использованием CreditCardData.mat файл для загрузки data (использование набора данных из Refaat 2011).

load CreditCardData.mat
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]);

Преобразуйте creditscorecard объект в compactCreditScorecard объект. A compactCreditScorecard объект является облегченной версией creditscorecard объект, который используется в целях развертывания.

csc = compactCreditScorecard(sc);

Проверьте компактную модель карты показателей кредита путем создания графиков CAP, ROC и KS. Этот пример использует data обучения. Однако можно использовать любые данные валидации, если:

  • Данные имеют те же имена предикторов и типы предикторов, что и данные, используемые для создания начальной creditscorecard объект.

  • Данные имеют столбец отклика с таким же именем, как и 'ResponseVar' свойство в начальной creditscorecard объект.

  • Данные имеют столбец весов (если веса использовались для обучения модели) с таким же именем, как 'WeightsVar' свойство в начальной creditscorecard объект.

[Stats,T] = validatemodel(csc,data,'Plot',{'CAP','ROC','KS'});

Figure contains an axes. The axes with title Cumulative Accuracy Profile (CAP) curve contains 6 objects of type patch, line, text.

Figure contains an axes. The axes with title Receiver Operating Characteristic (ROC) curve contains 3 objects of type patch, line, text.

Figure contains an axes. The axes with title K-S Plot contains 6 objects of type line, text. These objects represent Cumulative Bads, Cumulative Goods.

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

Вычислите статистику валидации модели для компактной модели карты показателей кредита с весами.

Как создать compactCreditScorecard объект, необходимо сначала разработать модель карты показателей кредита с помощью creditscorecard объект.

Используйте CreditCardData.mat файл для загрузки данных (dataWeights), который содержит столбец (RowWeights) для весов (использование набора данных из Refaat 2011).

load CreditCardData.mat

Создайте 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]

Выполните автоматическое раскладывание. По умолчанию autobinning использует Monotone алгоритм.

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]);

Преобразуйте creditscorecard объект в compactCreditScorecard объект. A compactCreditScorecard объект является облегченной версией creditscorecard объект, который используется в целях развертывания.

csc = compactCreditScorecard(sc);

Проверьте компактную модель карты показателей кредита путем создания графиков CAP, ROC и KS. Когда вы используете необязательный аргумент пары "имя-значение" 'WeightsVar' для задания весов наблюдений (выборки) в исходной creditscorecard объект, T таблица для validatemodel использует статистику, суммы и совокупные суммы, которые являются взвешенными счетчиками.

Этот пример использует обучающие данные (dataWeights). Однако можно использовать любые данные валидации, если:

  • Данные имеют те же имена предикторов и типы предикторов, что и данные, используемые для создания начальной creditscorecard объект.

  • Данные имеют столбец отклика с таким же именем, как и 'ResponseVar' свойство в начальной creditscorecard объект.

  • Данные имеют столбец весов (если веса использовались для обучения модели) с таким же именем, как и 'WeightsVar' свойство в начальной creditscorecard объект.

[Stats,T] = validatemodel(csc,dataWeights,'Plot',{'CAP','ROC','KS'});

Figure contains an axes. The axes with title Cumulative Accuracy Profile (CAP) curve contains 6 objects of type patch, line, text.

Figure contains an axes. The axes with title Receiver Operating Characteristic (ROC) curve contains 3 objects of type patch, line, text.

Figure contains an axes. The axes with title K-S Plot contains 6 objects of type line, text. These objects represent Cumulative Bads, Cumulative Goods.

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' опция.

  • Предикторы в creditscorecard объект, который имеет отсутствующие данные в наборе обучающих данных, имеет явное интервал для <missing> с соответствующими точками в окончательной карте результатов. Эти точки вычисляются из значения веса доказательств (WOE) для <missing> интервал и коэффициенты логистической модели. В целях оценки эти точки присваиваются отсутствующим значениям и значениям вне области допустимого значения и после преобразования creditscorecard объект в compactCreditScorecard объект, можно использовать окончательный счет для вычисления статистики валидации модели с validatemodel.

  • Предикторы в creditscorecard объект без отсутствующих данных в наборе обучающих данных не имеет <missing> интервал, поэтому никакое ГОРЕ не может быть оценено из обучающих данных. По умолчанию точки для отсутствующих и вне области допустимого заданы равными NaN в результате чего счет NaN при запуске score. Для предикторов в creditscorecard объект, не имеющий явных <missing> интервал, используйте аргумент имя-значение 'Missing' в formatpoints чтобы указать, как функция обрабатывает отсутствующие данные в целях оценки. После преобразования creditscorecard объект в compactCreditScorecard объект, можно использовать окончательный счет для вычисления статистики валидации модели с validatemodel.

Как создать compactCreditScorecard объект, необходимо сначала разработать модель карты показателей кредита с помощью creditscorecard объект.

Создайте 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' предикторы, обучающие данные содержат отсутствующие данные (NaNs и <undefined> значения. Для отсутствующих данных в этих предикторах процесс раскладывания оценивает значения ГОРЕ -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функция применяет соответствующее значение ГОРЕ для <missing> интервал при выполнении преобразования ГОРЕ.

[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, соответственно). Функция вычисляет эти точки из значения ГОРЕ для <missing> интервал и коэффициенты логистической модели.

Для предикторов, которые не имеют отсутствующих данных в наборе обучающих данных, нет явных <missing> интервал во время обучения модели. По умолчанию displaypoints сообщает о точках следующим NaN для отсутствующих данных, что приводит к счету NaN когда вы используете score. Для этих предикторов используйте аргумент пары "имя-значение" 'Missing' в formatpoints чтобы указать, как отсутствующие данные должны обрабатываться в целях оценки.

Использование compactCreditScorecard для преобразования creditscorecard объект в compactCreditScorecard объект. A compactCreditScorecard объект является облегченной версией creditscorecard объект, который используется в целях развертывания.

csc = compactCreditScorecard(sc);

Для целей рисунка берите несколько строк из исходных данных в качестве тестовых данных и вводите некоторые недостающие данные. Также введите некоторые недопустимые или вне области допустимого значения. Для числовых данных значения ниже минимума (или выше максимума) считаются недопустимыми, например, отрицательное значение для возраста (напомним, что на предыдущем шаге вы задаете 'MinValue' на 0 для 'CustAge' и 'CustIncome'). Для категориальных данных недопустимыми значениями являются категории, явно не включенные в карту показателей, например, статус жилого объекта, ранее не сопоставленный с категориями карт показателей, такими как «Дом» или бессмысленная строка, такая как «abc123».

Этот пример использует очень небольшой набор данных валидации только для иллюстрации оценки строк с отсутствующими и вне области значений и связи между оценкой и валидацией модели.

tdata = dataMissing(11:200,mdl.PredictorNames); % Keep only the predictors retained in the model
tdata.status = dataMissing.status(11:200); % 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(1:10,:))
    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   
      NaN      Home Owner     Employed         51000         11         Yes       519.46        1   
       52      Other          Unknown          42000         12         Yes       1269.2        0   

Использование validatemodel для compactCreditScorecard объект с набором данных валидации (tdata).

[ValStats,ValTable] = validatemodel(csc,tdata,'Plot',{'CAP','ROC','KS'});

Figure contains an axes. The axes with title Cumulative Accuracy Profile (CAP) curve contains 6 objects of type patch, line, text.

Figure contains an axes. The axes with title Receiver Operating Characteristic (ROC) curve contains 3 objects of type patch, line, text.

Figure contains an axes. The axes with title K-S Plot contains 6 objects of type line, text. These objects represent Cumulative Bads, Cumulative Goods.

disp(ValStats)
            Measure              Value 
    ________________________    _______

    {'Accuracy Ratio'      }    0.35376
    {'Area under ROC curve'}    0.67688
    {'KS statistic'        }    0.32462
    {'KS score'            }     493.35
disp(ValTable(1:10,:))
    Scores    ProbDefault    TrueBads    FalseBads    TrueGoods    FalseGoods    Sensitivity    FalseAlarm     PctObs  
    ______    ___________    ________    _________    _________    __________    ___________    __________    _________

    597.33          NaN         0            1           135           54                0      0.0073529     0.0052632
    598.54          NaN         0            2           134           54                0       0.014706      0.010526
    601.18          NaN         1            2           134           53         0.018519       0.014706      0.015789
     637.3          NaN         1            3           133           53         0.018519       0.022059      0.021053
       NaN      0.69421         2            3           133           52         0.037037       0.022059      0.026316
       NaN      0.65394         2            4           132           52         0.037037       0.029412      0.031579
       NaN      0.64441         2            5           131           52         0.037037       0.036765      0.036842
       NaN      0.62799         3            5           131           51         0.055556       0.036765      0.042105
    390.86      0.58964         4            5           131           50         0.074074       0.036765      0.047368
    404.09      0.57902         6            5           131           48          0.11111       0.036765      0.057895

Входные параметры

свернуть все

Компактная модель карты показателей кредита, заданная как compactCreditScorecard объект.

Как создать compactCreditScorecard объект, использование compactCreditScorecard или compact от Financial Toolbox™.

Данные валидации, заданные как MATLAB® таблица, где каждая строка таблицы соответствует отдельным наблюдениям. The data должны содержать столбцы для каждого из предикторов в модели карты показателей кредита. Столбцы данных могут быть любым из следующих типов данных:

  • Числовой

  • Логичный

  • Массив ячеек из символьных векторов

  • Символьный массив

  • Категоричный

  • Строка

  • Строковые массивы

В сложении таблица должна содержать двоичную переменную отклика, а имя этого столбца должно совпадать с именем ResponseVar свойство в compactCreditScorecard объект. (The ResponseVar свойство в compactCreditScorecard копируется из ResponseVar свойство исходного creditscorecard объект.)

Примечание

Если другой набор данных валидации предоставляется с помощью дополнительного data входы, веса наблюдений для данных валидации должны быть включены в столбец, имя которого совпадает WeightsVar из исходного creditscorecard объект, в противном случае для данных валидации используются модуля. Для получения дополнительной информации см. Использование валидатемодели с весами.

Типы данных: table

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: csc = validatemodel(csc,data,'Plot','CAP')

Тип графика, заданный как разделенная разделенными запятой парами, состоящая из 'Plot' и вектор символов с одним из следующих значений:

  • 'None' - График не отображается.

  • 'CAP' - Профиль кумулятивной точности. Строит графики части заемщиков до оценки «s» против фракции дефолтов до оценки «s» ('PctObs' против 'Sensitivity' столбцы T необязательный выходной аргумент). Для получения дополнительной информации смотрите Профиль кумулятивной точности (CAP).

  • 'ROC' - Рабочая характеристика приемника. Строит графики части не-дефолтов до оценки «s» против части дефолтов до оценки «s» ('FalseAlarm' против 'Sensitivity' столбцы T необязательный выходной аргумент). Для получения дополнительной информации смотрите Операционная характеристика приемника (ROC).

  • 'KS' - Колмогоров-Смирнов. Строит графики каждый счет «с» против части дефолтов до «с», а также против части недефолтеров до «с» ('Scores' против обоих 'Sensitivity' и 'FalseAlarm' столбцы необязательного выходного аргумента T). Для получения дополнительной информации см. статистику Колмогорова-Смирнова (КС).

    Совет

    Для опции статистики Колмогоров-Смирнов можно ввести любой 'KS' или 'K-S'.

Типы данных: char | cell

Выходные аргументы

свернуть все

Меры валидации, возвращенные как 4-by- 2 таблица. Первый столбец 'Measure', содержит имена следующих мер:

  • Коэффициент точности (AR)

  • Площадь под кривой ROC (AUROC)

  • Статистика KS

  • KS- счета

Второй столбец, 'Value', содержит значения, соответствующие этим измерениям.

Данные статистики валидации, возвращенные как N-by- 9 таблица статистических данных валидации, отсортированная по счетам от самых рискованных до самых безопасных. N равен общему количеству уникальных счетов, то есть счетов без дубликатов.

Таблица T содержит следующие девять столбцов в этом порядке:

  • 'Scores' - Счета отсортированы от самых рискованных до самых безопасных. Данные в этой строке соответствуют всем наблюдениям до и включая счет в этой строке.

  • 'ProbDefault' - Вероятность дефолта для наблюдений в этой строке. Для децилов сообщается средняя вероятность дефолта для всех наблюдений в данном дециле.

  • 'TrueBads' - Совокупное количество «бадсов» до соответствующего счета включительно.

  • 'FalseBads' - Совокупное количество «товаров» до соответствующего счета включительно.

  • 'TrueGoods' - Совокупное число «товаров» выше соответствующего счета.

  • 'FalseGoods' - Совокупное число «бадсов» выше соответствующего счета.

  • 'Sensitivity' - Доля дефолтов (или совокупное число «бадсов», разделенных на общее число «бадов»). Это распределение «бадсов» до соответствующего счета включительно.

  • 'FalseAlarm' - Доля недефейтеров (или совокупное число «товаров», разделенных на общее число «товаров»). Это распределение «товаров» до соответствующего счета включительно.

  • 'PctObs' - Доля заемщиков, или совокупное количество наблюдений, разделенных на общее количество наблюдений до соответствующего счета включительно.

Примечание

При создании creditscorecard объект с creditscorecard, если необязательный аргумент пары "имя-значение" WeightsVar использовался для задания весов наблюдений (выборки), затем T таблица использует статистику, суммы и совокупные суммы, которые являются взвешенными счетчиками.

Указатель на рисунок для нанесенных измерений, возвращенный как указатель на фигуру или массив указателей. Когда Plot установлено в 'None', hf - пустой массив.

Подробнее о

свернуть все

Профиль кумулятивной точности (CAP)

ПРОПИСНАЯ БУКВА, как правило, является вогнутой кривой и также известен как кривая Джини, кривая Степени или кривая Лоренца.

Счета заданных наблюдений сортируются от самых рискованных до самых безопасных. Для заданной дроби M (от 0% до 100%) от общего числа заемщиков, высота кривой ПРОПИСНАЯ БУКВА является долей дефолтов, счетов которых меньше или равны максимальному счету дроби M. Эта часть дефолтов также известна как «Чувствительность»..

Область под кривой ПРОПИСНАЯ БУКВА, известная как AUCAP, затем сравнивается с областью идеальной или «идеальной» модели, что приводит к определению итогового индекса, известного как коэффициент точности (AR) или коэффициент Джини:

AR=ARAP

где A R - область между кривой ПРОПИСНОЙ БУКВОЙ и диагональю, и A P - область между совершенной моделью и диагональю. Это представляет собой «случайную» модель, где счета присваиваются случайным образом, и, следовательно, доля дефолтов и недефавторов не зависит от счета. Идеальной моделью является модель, для которой всем дефолтерам присваиваются самые низкие счета, и поэтому прекрасно различается дефолтерам и недефейтерам. Таким образом, чем ближе к AR unity, тем лучше модель скоринга.

Рабочая характеристика приемника (ROC)

Чтобы найти приемник кривую рабочей характеристики (ROC), вычисляется доля дефолтов до заданных счетов «s» или «Sensitivity».

Эта доля известна как истинная положительная скорость (TPR). Кроме того, вычисляется доля недефейтеров до «s», или «False Alarm Rate». Эта доля также известна как ложноположительная частота (FPR). Кривая ROC является графиком «Чувствительности» по сравнению с «Частотой ложных предупреждений». Вычисление кривой ROC подобно вычислению эквивалента матрицы неточностей на каждом уровне счета.

Подобно CAP, ROC имеет сводную статистическую величину, известную как площадь под кривой ROC (AUROC). Чем ближе к единству, тем лучше модель скоринга. Коэффициент точности (AR) связан с площадью под кривой по следующей формуле:

AR=2(AUROC)1

Колмогоров-Смирнов Статистик (КС)

График Колмогорова-Смирнова (KS), также известный как график рыбий глаз, является общей статистикой для измерения прогнозирующей степени карт результатов.

График KS показывает распределение дефолтов и распределение недефейтеров на том же графике. Для распределения дефолтов каждый счет «s» строится с учетом доли дефолтов до «s» или «Sensitivity». Для распределения лиц, не являющихся дефолтерами, каждый счет «s» строится с учетом доли недефакторов до «s» или «False Alarm». Интересующая статистика называется KS statistic и является максимальным различием между этими двумя распределениями («Sensitivity» минус «False Alarm»). Счет, при котором достигается этот максимум, также представляет интерес.

Использование validatemodel с весами

Если вы предоставляете веса наблюдений, validatemodel функция включает веса наблюдений при вычислении статистики валидации модели.

Если вы не предоставляете веса, статистика валидации основана на том, сколько хороших и плохих наблюдений падает ниже определенного счета. Если вы предоставляете веса, вес (не счет) накапливается для хороших и плохих наблюдений, которые падают ниже определенного балла.

Когда вы задаете веса наблюдений, используя необязательную WeightsVar аргумент пары "имя-значение" при создании creditscorecard объект, веса, сохраненные в WeightsVar столбец используется при проверке модели на обучающих данных. Когда другой набор данных валидации предоставляется с помощью дополнительного data входы, веса наблюдений для данных валидации должны быть включены в столбец, имя которого совпадает WeightsVar. В противном случае веса модулей используются для набора данных валидации.

Веса наблюдений обучающих данных влияют не только на статистику валидации, но и на сами счета кредитных показателей. Для получения дополнительной информации смотрите Использование fitmodel с весами и Моделирование кредитной карты показателей с использованием весов наблюдений.

Ссылки

[1] «Базельский комитет по банковскому надзору: исследования по валидации внутренних рейтинговых систем». Рабочий документ № 14, февраль 2005 года.

[2] Refaat, M. Кредитные карты оценки риска: Разработка и реализация с использованием SAS. lulu.com, 2011.

[3] Лоффлер, Г. и П. Н. Пош. Моделирование кредитного риска с использованием Excel и VBA. Wiley Finance, 2007.

Введенный в R2019b