exponenta event banner

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]

Выполните автоматическое binning с использованием параметров по умолчанию. По умолчанию 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]

Выполните автоматическое binning. По умолчанию 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> bin и коэффициенты логистической модели. В целях оценки эти точки назначаются отсутствующим значениям и значениям вне диапазона, а также после преобразования creditscorecard объект в compactCreditScorecard объект, можно использовать окончательный балл для вычисления статистики проверки модели с помощью validatemodel.

  • Предикторы в creditscorecard объект без отсутствующих данных в обучающем наборе не имеет <missing> bin, поэтому никакое WOE не может быть оценено по данным обучения. По умолчанию точки для отсутствующих и выходящих за пределы диапазона значений имеют значение NaN в результате чего был получен балл NaN при выполнении score. Для предикторов в creditscorecard объект, не имеющий явного <missing> bin, используйте аргумент имя-значение '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 в ячейку отсутствующих числовых или категориальных данных в отдельной ячейке. Применение автоматического binning.

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> значения. Для отсутствующих данных в этих предикторах процесс связывания оценивает значения 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> bin, с соответствующим значением WOE, вычисленным на основе данных. При использовании fitmodel, функция применяет соответствующее значение WOE для <missing> bin при выполнении преобразования 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

Масштабируйте точки карты показателей по методу «points, bodds and points to удвоить шансы (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 для <missing> bin и коэффициенты логистической модели.

Для предикторов, не имеющих отсутствующих данных в обучающем наборе, нет явных <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 из Финансового Toolbox™.

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

  • Числовой

  • Логичный

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

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

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

  • Последовательность

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

Кроме того, таблица должна содержать двоичную переменную ответа, а имя этого столбца должно совпадать с именем ResponseVar свойство в compactCreditScorecard объект. ( 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' - Колмогоров-Смирнов. Строит графики каждого балла «s» против доли неплательщиков до балла «s», а также против доли неплательщиков до балла «s» ('Scores' против обоих 'Sensitivity' и 'FalseAlarm' столбцы необязательного выходного аргумента T). Подробнее - в статистике Колмогорова-Смирнова (КС).

    Совет

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

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

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

свернуть все

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

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

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

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

  • Оценка КС

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

Подробнее

свернуть все

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

CAP обычно является вогнутой кривой и также известна как кривая Джини, кривая мощности или кривая Лоренца.

Оценки данных наблюдений сортируются от самых рискованных до самых безопасных. Для данной дроби M (от 0% до 100%) от общего числа заемщиков, высота кривой CAP - доля неплательщиков, баллы которых меньше или равны максимальному баллу доли M. Эта доля неплательщиков также известна как «Чувствительность»..

Площадь под кривой CAP, известная как AUCAP, затем сравнивается с площадью совершенной или «идеальной» модели, что приводит к определению суммарного индекса, известного как коэффициент точности (AR) или коэффициент Джини:

AR = ARAP

где AR - площадь между кривой CAP и диагональю, а AP - площадь между совершенной моделью и диагональю. Это представляет «случайную» модель, где оценки назначаются случайным образом, и, следовательно, доля неплательщиков и ненарушителей не зависит от оценки. Идеальная модель - это модель, для которой всем неплательщикам присваиваются самые низкие баллы, и поэтому идеально различает неплательщиков и неплательщиков. Таким образом, чем ближе к единице AR, тем лучше модель оценки.

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

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

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

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

AR = 2 (AUROC) − 1

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

График Колмогорова - Смирнова (КС), также известный как граф рыбий глаз, является распространённой статистикой для измерения прогностической силы оценочных карт.

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

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

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

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

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

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

Ссылки

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

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

[3] Лоэффлер, Г. и П. Н. Пош. Моделирование кредитных рисков с использованием Excel и VBA. Уайли Финанс, 2007.

Представлен в R2019b