автораскладывание

Выполните автоматическое раскладывание данных предикторов

Синтаксис

sc = autobinning(sc)
sc = autobinning(sc,PredictorNames)
sc = autobinning(___,Name,Value)

Описание

пример

sc = autobinning(sc) выполняет автоматическое раскладывание всех предикторов.

Автоматическое раскладывание находит карты раскладывания или правила к числовым данным интервала и сгруппировать категории категориальных данных. Правила раскладывания хранятся в объекте creditscorecard. Применять правила раскладывания к данным объектов creditscorecard, или к новому набору данных, bindata использования.

пример

sc = autobinning(sc,PredictorNames) выполняет автоматическое раскладывание предикторов, данных в PredictorNames.

Автоматическое раскладывание находит карты раскладывания или правила к числовым данным интервала и сгруппировать категории категориальных данных. Правила раскладывания хранятся в объекте creditscorecard. Применять правила раскладывания к данным объектов creditscorecard, или к новому набору данных, bindata использования.

пример

sc = autobinning(___,Name,Value) выполняет автоматическое раскладывание предикторов, данных в PredictorNames с помощью дополнительных аргументов пары "имя-значение". Смотрите аргумент Algorithm значения имени для описания поддерживаемых алгоритмов раскладывания.

Автоматическое раскладывание находит карты раскладывания или правила к числовым данным интервала и сгруппировать категории категориальных данных. Правила раскладывания хранятся в объекте creditscorecard. Применять правила раскладывания к данным объектов creditscorecard, или к новому набору данных, bindata использования.

Примеры

свернуть все

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

load CreditCardData
sc = creditscorecard(data,'IDVar','CustID');

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

sc = autobinning(sc);

Используйте bininfo, чтобы отобразить сгруппированные данные для предиктора CustAge.

bi = bininfo(sc, 'CustAge')
bi=8×6 table
        Bin        Good    Bad     Odds        WOE       InfoValue
    ___________    ____    ___    ______    _________    _________

    '[-Inf,33)'     70      53    1.3208     -0.42622     0.019746
    '[33,37)'       64      47    1.3617     -0.39568     0.015308
    '[37,40)'       73      47    1.5532     -0.26411    0.0072573
    '[40,46)'      174      94    1.8511    -0.088658     0.001781
    '[46,48)'       61      25      2.44      0.18758    0.0024372
    '[48,58)'      263     105    2.5048      0.21378     0.013476
    '[58,Inf]'      98      26    3.7692      0.62245       0.0352
    'Totals'       803     397    2.0227          NaN     0.095205

Используйте plotbins, чтобы отобразить гистограмму и кривую WOE для предиктора CustAge.

plotbins(sc,'CustAge')

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

load CreditCardData 
sc = creditscorecard(data);

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

sc = autobinning(sc,'CustIncome');

Используйте bininfo, чтобы отобразить сгруппированные данные.

bi = bininfo(sc, 'CustIncome')
bi=8×6 table
          Bin          Good    Bad     Odds         WOE       InfoValue 
    _______________    ____    ___    _______    _________    __________

    '[-Inf,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

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

load CreditCardData 
sc = creditscorecard(data);

Выполните автоматическое раскладывание для предиктора CustIncome с помощью алгоритма Monotone с начальным количеством набора интервалов к 20. Этот пример явным образом устанавливает и Algorithm и аргументы значения имени AlgorithmOptions.

AlgoOptions = {'InitialNumBins',20}; 
sc = autobinning(sc,'CustIncome','Algorithm','Monotone','AlgorithmOptions',...
     AlgoOptions);

Используйте bininfo, чтобы отобразить сгруппированные данные. Здесь, точки разделения, которые разграничивают интервалы, также отображены.

[bi,cp] = bininfo(sc,'CustIncome')
bi=11×6 table
          Bin          Good    Bad     Odds         WOE       InfoValue 
    _______________    ____    ___    _______    _________    __________

    '[-Inf,19000)'       2       3    0.66667      -1.1099     0.0056227
    '[19000,29000)'     51      55    0.92727     -0.77993      0.058516
    '[29000,31000)'     29      26     1.1154     -0.59522      0.017486
    '[31000,34000)'     80      42     1.9048    -0.060061     0.0003704
    '[34000,35000)'     33      17     1.9412    -0.041124     7.095e-05
    '[35000,40000)'    193      98     1.9694    -0.026696    0.00017359
    '[40000,42000)'     68      34          2    -0.011271    1.0819e-05
    '[42000,43000)'     39      16     2.4375      0.18655      0.001542
    '[43000,47000)'    125      50        2.5      0.21187     0.0062972
    '[47000,Inf]'      183      56     3.2679      0.47972      0.041657
    'Totals'           803     397     2.0227          NaN       0.13175

cp = 9×1

       19000
       29000
       31000
       34000
       35000
       40000
       42000
       43000
       47000

Этот пример показывает, как использовать значение по умолчанию autobinning алгоритм Monotone и аргументы пары "имя-значение" AlgorithmOptions, сопоставленные с алгоритмом Monotone. AlgorithmOptions для алгоритма Monotone является тремя параметрами пары "имя-значение": ‘InitialNumBins', 'Trend' и 'SortCategories'. 'InitialNumBins' и 'Trend' применимы для числовых предикторов, и 'Trend' и 'SortCategories' применимы для категориальных предикторов.

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

load CreditCardData
sc = creditscorecard(data,'IDVar','CustID');

Выполните автоматическое раскладывание для числового предиктора CustIncome с помощью алгоритма Monotone с 20 интервалами. Этот пример явным образом устанавливает и аргумент Algorithm и аргументы значения имени AlgorithmOptions для 'InitialNumBins' и 'Trend'.

AlgoOptions = {'InitialNumBins',20,'Trend','Increasing'};

sc = autobinning(sc,'CustIncome','Algorithm','Monotone',...
    'AlgorithmOptions',AlgoOptions);

Используйте bininfo, чтобы отобразить сгруппированные данные.

bi = bininfo(sc,'CustIncome')
bi=11×6 table
          Bin          Good    Bad     Odds         WOE       InfoValue 
    _______________    ____    ___    _______    _________    __________

    '[-Inf,19000)'       2       3    0.66667      -1.1099     0.0056227
    '[19000,29000)'     51      55    0.92727     -0.77993      0.058516
    '[29000,31000)'     29      26     1.1154     -0.59522      0.017486
    '[31000,34000)'     80      42     1.9048    -0.060061     0.0003704
    '[34000,35000)'     33      17     1.9412    -0.041124     7.095e-05
    '[35000,40000)'    193      98     1.9694    -0.026696    0.00017359
    '[40000,42000)'     68      34          2    -0.011271    1.0819e-05
    '[42000,43000)'     39      16     2.4375      0.18655      0.001542
    '[43000,47000)'    125      50        2.5      0.21187     0.0062972
    '[47000,Inf]'      183      56     3.2679      0.47972      0.041657
    'Totals'           803     397     2.0227          NaN       0.13175

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

load CreditCardData 
sc = creditscorecard(data,'IDVar','CustID');

Выполните автоматическое раскладывание для предиктора CustIncome и CustAge с помощью алгоритма Monotone по умолчанию с AlgorithmOptions для InitialNumBins и Trend.

AlgoOptions = {'InitialNumBins',20,'Trend','Increasing'};

sc = autobinning(sc,{'CustAge','CustIncome'},'Algorithm','Monotone',...
    'AlgorithmOptions',AlgoOptions);

Используйте bininfo, чтобы отобразить сгруппированные данные.

bi1 = bininfo(sc, 'CustIncome')
bi1=11×6 table
          Bin          Good    Bad     Odds         WOE       InfoValue 
    _______________    ____    ___    _______    _________    __________

    '[-Inf,19000)'       2       3    0.66667      -1.1099     0.0056227
    '[19000,29000)'     51      55    0.92727     -0.77993      0.058516
    '[29000,31000)'     29      26     1.1154     -0.59522      0.017486
    '[31000,34000)'     80      42     1.9048    -0.060061     0.0003704
    '[34000,35000)'     33      17     1.9412    -0.041124     7.095e-05
    '[35000,40000)'    193      98     1.9694    -0.026696    0.00017359
    '[40000,42000)'     68      34          2    -0.011271    1.0819e-05
    '[42000,43000)'     39      16     2.4375      0.18655      0.001542
    '[43000,47000)'    125      50        2.5      0.21187     0.0062972
    '[47000,Inf]'      183      56     3.2679      0.47972      0.041657
    'Totals'           803     397     2.0227          NaN       0.13175

bi2 = bininfo(sc, 'CustAge')
bi2=8×6 table
        Bin        Good    Bad     Odds        WOE       InfoValue 
    ___________    ____    ___    ______    _________    __________

    '[-Inf,35)'     93      76    1.2237     -0.50255      0.038003
    '[35,40)'      114      71    1.6056      -0.2309     0.0085141
    '[40,42)'       52      30    1.7333     -0.15437     0.0016687
    '[42,44)'       58      32    1.8125     -0.10971    0.00091888
    '[44,47)'       97      51     1.902    -0.061533    0.00047174
    '[47,62)'      333     130    2.5615      0.23619      0.020605
    '[62,Inf]'      56       7         8        1.375      0.071647
    'Totals'       803     397    2.0227          NaN       0.14183

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

load CreditCardData 
sc = creditscorecard(data);

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

sc = autobinning(sc,'ResStatus');

Используйте bininfo, чтобы отобразить сгруппированные данные.

bi = bininfo(sc, 'ResStatus')
bi=4×6 table
        Bin         Good    Bad     Odds        WOE       InfoValue
    ____________    ____    ___    ______    _________    _________

    'Tenant'        307     167    1.8383    -0.095564    0.0036638
    'Home Owner'    365     177    2.0621     0.019329    0.0001682
    'Other'         131      53    2.4717      0.20049    0.0059418
    'Totals'        803     397    2.0227          NaN    0.0097738

Этот пример показывает, как изменить данные (только для этого примера), чтобы проиллюстрировать раскладывание категориальные предикторы с помощью алгоритма Monotone.

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

load CreditCardData

Добавьте две новых категории и обновление переменной отклика.

newdata = data;
rng('default'); %for reproducibility
Predictor = 'ResStatus';
Status    = newdata.status;
NumObs    = length(newdata.(Predictor));
Ind1 = randi(NumObs,100,1);
Ind2 = randi(NumObs,100,1);
newdata.(Predictor)(Ind1) = 'Subtenant';
newdata.(Predictor)(Ind2) = 'CoOwner';
Status(Ind1) = randi(2,100,1)-1;
Status(Ind2) = randi(2,100,1)-1;

newdata.status = Status;

Обновите объект creditscorecard с помощью newdata и постройте интервалы для более позднего сравнения.

scnew = creditscorecard(newdata,'IDVar','CustID');
[bi,cg] = bininfo(scnew,Predictor)
bi=6×6 table
        Bin         Good    Bad     Odds       WOE       InfoValue
    ____________    ____    ___    ______    ________    _________

    'Home Owner'    308     154         2    0.092373    0.0032392
    'Tenant'        264     136    1.9412     0.06252    0.0012907
    'Other'         109      49    2.2245     0.19875    0.0050386
    'Subtenant'      42      42         1    -0.60077     0.026813
    'CoOwner'        52      44    1.1818    -0.43372     0.015802
    'Totals'        775     425    1.8235         NaN     0.052183

cg=5×2 table
      Category      BinNumber
    ____________    _________

    'Home Owner'        1    
    'Tenant'            2    
    'Other'             3    
    'Subtenant'         4    
    'CoOwner'           5    

plotbins(scnew,Predictor)

Выполните автоматическое раскладывание для категориального Predictor с помощью алгоритма Monotone по умолчанию с аргументами пары "имя-значение" AlgorithmOptions для 'SortCategories' и 'Trend'.

AlgoOptions = {'SortCategories','Goods','Trend','Increasing'};

scnew = autobinning(scnew,Predictor,'Algorithm','Monotone',...
    'AlgorithmOptions',AlgoOptions);

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

[bi,cg] = bininfo(scnew,Predictor)
bi=4×6 table
      Bin       Good    Bad     Odds       WOE       InfoValue
    ________    ____    ___    ______    ________    _________

    'Group1'     42      42         1    -0.60077     0.026813
    'Group2'     52      44    1.1818    -0.43372     0.015802
    'Group3'    681     339    2.0088    0.096788    0.0078459
    'Totals'    775     425    1.8235         NaN      0.05046

cg=5×2 table
      Category      BinNumber
    ____________    _________

    'Subtenant'         1    
    'CoOwner'           2    
    'Other'             3    
    'Tenant'            3    
    'Home Owner'        3    

Постройте интервалы и сравните с построенным предварительным раскладыванием гистограммы.

plotbins(scnew,Predictor)

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

fprintf('Number of rows: %d\n',height(dataMissing))
Number of rows: 1200
fprintf('Number of missing values CustAge: %d\n',sum(ismissing(dataMissing.CustAge)))
Number of missing values CustAge: 30
fprintf('Number of missing values ResStatus: %d\n',sum(ismissing(dataMissing.ResStatus)))
Number of missing values ResStatus: 40

Используйте creditscorecard с набором аргумента 'BinMissingData' значения имени к true к интервалу недостающие числовые и категориальные данные в отдельном интервале.

sc = creditscorecard(dataMissing,'BinMissingData',true);
disp(sc)
  creditscorecard with properties:

                GoodLabel: 0
              ResponseVar: 'status'
               WeightsVar: ''
                 VarNames: {1x11 cell}
        NumericPredictors: {1x7 cell}
    CategoricalPredictors: {'ResStatus'  'EmpStatus'  'OtherCC'}
           BinMissingData: 1
                    IDVar: ''
            PredictorVars: {1x10 cell}
                     Data: [1200x11 table]

Выполните автоматическое раскладывание с помощью алгоритма Merge.

sc = autobinning(sc,'Algorithm','Merge'); 

Отобразите информацию об интервале для числовых данных для 'CustAge', который включает недостающие данные в отдельный интервал, маркировал <missing> , и это - последний интервал. Неважно, какой алгоритм раскладывания используется в autobinning, алгоритм работает с ненедостающими данными, и интервал для числовых значений <missing> для предиктора всегда является последним интервалом.

[bi,cp] = bininfo(sc,'CustAge'); 
disp(bi) 
        Bin        Good    Bad     Odds        WOE       InfoValue 
    ___________    ____    ___    _______    ________    __________

    '[-Inf,32)'     56      39     1.4359    -0.34263     0.0097643
    '[32,33)'       13      13          1    -0.70442      0.011663
    '[33,34)'        9      11    0.81818    -0.90509      0.014934
    '[34,65)'      677     317     2.1356    0.054351      0.002424
    '[65,Inf]'      29       6     4.8333     0.87112      0.018295
    '<missing>'     19      11     1.7273    -0.15787    0.00063885
    'Totals'       803     397     2.0227         NaN      0.057718
plotbins(sc,'CustAge')

Отобразите информацию об интервале для категориальных данных для 'ResStatus', который включает недостающие данные в отдельный интервал, маркировал <missing> , и это - последний интервал. Неважно, какой алгоритм раскладывания используется в autobinning, алгоритм работает с ненедостающими данными и интервалом для <missing>, категориальные значения для предиктора всегда являются последним интервалом.

[bi,cg] = bininfo(sc,'ResStatus');
disp(bi)
        Bin        Good    Bad     Odds        WOE       InfoValue 
    ___________    ____    ___    ______    _________    __________

    'Group1'       648     332    1.9518    -0.035663     0.0010449
    'Group2'       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.0066489
plotbins(sc,'ResStatus')

Этот пример демонстрирует использование алгоритма 'Split' с категориальными и числовыми предикторами. Загрузите набор данных CreditCardData.mat и измените так, чтобы он содержал четыре категории для предиктора 'ResStatus', чтобы продемонстрировать, как алгоритм разделения работает.

load CreditCardData.mat
x = data.ResStatus;
Ind = find(x == 'Tenant');
Nx  = length(Ind);
x(Ind(1:floor(Nx/3))) = 'Subletter';
data.ResStatus = x;

Создайте creditscorecard и используйте bininfo, чтобы отобразить 'Statistics'.

sc = creditscorecard(data,'IDVar','CustID');
[bi1,cg1] = bininfo(sc,'ResStatus','Statistics',{'Odds','WOE','InfoValue'});
disp(bi1)
        Bin         Good    Bad     Odds        WOE       InfoValue 
    ____________    ____    ___    ______    _________    __________

    'Home Owner'    365     177    2.0621     0.019329     0.0001682
    'Tenant'        204     112    1.8214      -0.1048     0.0029415
    'Other'         131      53    2.4717      0.20049     0.0059418
    'Subletter'     103      55    1.8727    -0.077023    0.00079103
    'Totals'        803     397    2.0227          NaN     0.0098426
disp(cg1)
      Category      BinNumber
    ____________    _________

    'Home Owner'        1    
    'Tenant'            2    
    'Other'             3    
    'Subletter'         4    

Используя алгоритм разделения с категориальным предиктором

Примените предварительную сортировку к категории 'ResStatus' с помощью сортировки значения по умолчанию по 'Odds' и задайте алгоритм 'Split'.

sc = autobinning(sc,'ResStatus', 'Algorithm', 'split','AlgorithmOptions',...
    {'Measure','gini','SortCategories','odds','Tolerance',1e-4});
[bi2,cg2] = bininfo(sc,'ResStatus','Statistics',{'Odds','WOE','InfoValue'});
disp(bi2)
      Bin       Good    Bad     Odds        WOE       InfoValue
    ________    ____    ___    ______    _________    _________

    'Group1'    307     167    1.8383    -0.095564    0.0036638
    'Group2'    365     177    2.0621     0.019329    0.0001682
    'Group3'    131      53    2.4717      0.20049    0.0059418
    'Totals'    803     397    2.0227          NaN    0.0097738
disp(cg2)
      Category      BinNumber
    ____________    _________

    'Tenant'            1    
    'Subletter'         1    
    'Home Owner'        2    
    'Other'             3    

Используя алгоритм разделения с числовым предиктором

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

sc = autobinning(sc,'TmAtAddress');
bi3 = bininfo(sc,'TmAtAddress','Statistics',{'Odds','WOE','InfoValue'});
disp(bi3)
        Bin        Good    Bad     Odds        WOE       InfoValue 
    ___________    ____    ___    ______    _________    __________

    '[-Inf,23)'    239     129    1.8527    -0.087767     0.0023963
    '[23,83)'      480     232     2.069      0.02263    0.00030269
    '[83,Inf]'      84      36    2.3333      0.14288       0.00199
    'Totals'       803     397    2.0227          NaN      0.004689

Затем используйте autobinning с алгоритмом 'Split'.

sc = autobinning(sc,'TmAtAddress','Algorithm', 'Split');
bi4 = bininfo(sc,'TmAtAddress','Statistics',{'Odds','WOE','InfoValue'});
disp(bi4)
       Bin        Good    Bad     Odds         WOE       InfoValue 
    __________    ____    ___    _______    _________    __________

    '[-Inf,4)'     20      12     1.6667     -0.19359     0.0010299
    '[4,5)'         4       7    0.57143       -1.264      0.015991
    '[5,23)'      215     110     1.9545    -0.034261    0.00031973
    '[23,33)'     130      39     3.3333      0.49955        0.0318
    '[33,Inf]'    434     229     1.8952    -0.065096     0.0023664
    'Totals'      803     397     2.0227          NaN      0.051507

Загрузите набор данных CreditCardData.mat. Этот пример демонстрирует использование алгоритма 'Merge' с категориальными и числовыми предикторами.

load CreditCardData.mat

Используя алгоритм слияния с категориальным предиктором

Чтобы объединить категориальный предиктор, создайте creditscorecard с помощью сортировки значения по умолчанию по 'Odds' и затем используйте bininfo на категориальном предикторе 'ResStatus'.

sc = creditscorecard(data,'IDVar','CustID');
[bi1,cg1] = bininfo(sc,'ResStatus','Statistics',{'Odds','WOE','InfoValue'});
disp(bi1);
        Bin         Good    Bad     Odds        WOE       InfoValue
    ____________    ____    ___    ______    _________    _________

    'Home Owner'    365     177    2.0621     0.019329    0.0001682
    'Tenant'        307     167    1.8383    -0.095564    0.0036638
    'Other'         131      53    2.4717      0.20049    0.0059418
    'Totals'        803     397    2.0227          NaN    0.0097738
disp(cg1);
      Category      BinNumber
    ____________    _________

    'Home Owner'        1    
    'Tenant'            2    
    'Other'             3    

Используйте autobinning и задайте алгоритм 'Merge'.

sc = autobinning(sc,'ResStatus','Algorithm', 'Merge');
[bi2,cg2] = bininfo(sc,'ResStatus','Statistics',{'Odds','WOE','InfoValue'});
disp(bi2)
      Bin       Good    Bad     Odds        WOE       InfoValue
    ________    ____    ___    ______    _________    _________

    'Group1'    672     344    1.9535    -0.034802    0.0010314
    'Group2'    131      53    2.4717      0.20049    0.0059418
    'Totals'    803     397    2.0227          NaN    0.0069732
disp(cg2)
      Category      BinNumber
    ____________    _________

    'Tenant'            1    
    'Home Owner'        1    
    'Other'             2    

Используя алгоритм слияния с числовым предиктором

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

sc = autobinning(sc,'TmAtAddress');
bi3 = bininfo(sc,'TmAtAddress','Statistics',{'Odds','WOE','InfoValue'});
disp(bi3)
        Bin        Good    Bad     Odds        WOE       InfoValue 
    ___________    ____    ___    ______    _________    __________

    '[-Inf,23)'    239     129    1.8527    -0.087767     0.0023963
    '[23,83)'      480     232     2.069      0.02263    0.00030269
    '[83,Inf]'      84      36    2.3333      0.14288       0.00199
    'Totals'       803     397    2.0227          NaN      0.004689

Затем используйте autobinning с алгоритмом 'Merge'.

sc = autobinning(sc,'TmAtAddress','Algorithm', 'Merge');
bi4 = bininfo(sc,'TmAtAddress','Statistics',{'Odds','WOE','InfoValue'});
disp(bi4)
        Bin        Good    Bad     Odds         WOE       InfoValue 
    ___________    ____    ___    _______    _________    __________

    '[-Inf,28)'    303     152     1.9934    -0.014566    8.0646e-05
    '[28,30)'       27       2       13.5       1.8983      0.054264
    '[30,98)'      428     216     1.9815    -0.020574    0.00022794
    '[98,106)'      11      13    0.84615     -0.87147      0.016599
    '[106,Inf]'     34      14     2.4286      0.18288     0.0012942
    'Totals'       803     397     2.0227          NaN      0.072466

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

свернуть все

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

Предиктор или предикторы называют к автоматически интервалу, заданному как вектор символов или массив ячеек из символьных векторов, содержащий имя предиктора или предикторов. PredictorNames является чувствительным к регистру и когда никакой PredictorNames не задан, все предикторы в свойстве PredictorVars объекта creditscorecard сгруппированы.

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: sc = autobinning(sc,'Algorithm','EqualFrequency')

Выбор алгоритма, заданный как пара, разделенная запятой, состоящая из 'Algorithm' и вектора символов, указывающего, который алгоритм использовать. Тот же алгоритм используется для всех предикторов в PredictorNames. Возможные значения:

  • 'Monotone' — Монотонный смежный алгоритм объединения (MAPA) (по умолчанию), также известный как Монотонность наибольшего правдоподобия крупный классификатор (MLMCC). Контролируемый оптимальный алгоритм раскладывания, который стремится находить интервалы с монотонным трендом Веса доказательства (WOE). Этот алгоритм принимает, что только соседние атрибуты могут быть сгруппированы. Таким образом, для категориальных предикторов, категории сортируются прежде, чем применить алгоритм (см. опцию 'SortCategories' для AlgorithmOptions). Для получения дополнительной информации смотрите Монотонность.

  • разделение Контролируемый алгоритм раскладывания, где мера используется, чтобы разделить данные в интервалы. Мерами, поддержанными 'Split', является gini, chi2, infovalue и entropy. Получившееся разделение должно быть таково, что усиление в информационной функции максимизируется. Для получения дополнительной информации об этих мерах смотрите AlgorithmOptions и Разделение.

  • 'Merge' — Контролируемый автоматический алгоритм раскладывания, где мера используется, чтобы объединить интервалы в блоки. Мерами, поддержанными 'Merge', является chi2, gini, infovalue и entropy. Получившееся слияние должно быть таково, что любая пара смежных интервалов статистически отличается друг от друга, согласно выбранной мере. Для получения дополнительной информации об этих мерах смотрите AlgorithmOptions и Слияние.

  • 'EqualFrequency' — Безнадзорный алгоритм, который делит данные на предопределенное количество интервалов, которые содержат приблизительно то же количество наблюдений. Этот алгоритм также известен как “равную высоту” или “равную глубину”. Для категориальных предикторов категории сортируются прежде, чем применить алгоритм (см. опцию 'SortCategories' для AlgorithmOptions). Для получения дополнительной информации смотрите Равную Частоту.

  • 'EqualWidth' — Безнадзорный алгоритм, который делит область значений значений в области переменной прогноза в предопределенное количество интервалов “равной ширины”. Для числовых данных ширина измеряется как расстояние между ребрами интервала. Для категориальных данных ширина измеряется как количество категорий в интервале. Для категориальных предикторов категории сортируются прежде, чем применить алгоритм (см. опцию 'SortCategories' для AlgorithmOptions). Для получения дополнительной информации смотрите Равную Ширину.

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

Опции алгоритма для выбранного Algorithm, заданного как пара, разделенная запятой, состоящая из 'AlgorithmOptions' и массива ячеек. Возможные значения:

  • Для алгоритма Monotone:

    • { 'InitialNumBins',n } — Начальный номер (n) интервалов (значение по умолчанию равняется 10). 'InitialNumBins' должен быть целым числом> 2. Используемый для числовых предикторов только.

    • {'Trend','TrendOption'} — Определяет, как ли Вес доказательства (WOE) монотонный тренд, ожидают, увеличится или уменьшится. Значения для 'TrendOption':

      • 'auto' (Значение по умолчанию) Автоматически определяет, увеличивается ли тренд WOE или уменьшается.

      • 'Increasing' — Ищите увеличивающийся тренд WOE.

      • 'Decreasing' — Ищите уменьшающийся тренд WOE.

      Значение дополнительного входного параметра 'Trend' не обязательно отражает значение получившейся кривой WOE. 'Trend' параметра говорит алгоритму “искать” увеличение или уменьшение тренда, но результат не может показать желаемый тренд. Например, алгоритм не может найти уменьшающийся тренд, когда данные на самом деле имеют увеличивающийся тренд WOE. Для получения дополнительной информации об опции 'Trend' смотрите Монотонность.

    • {'SortCategories','SortOption'} — Используемый для категориальных предикторов только. Используемый, чтобы определить, как категории предиктора сортируются как шаг предварительной обработки прежде, чем применить алгоритм. Значения 'SortOption':

      • 'Odds' — (значение по умолчанию) категории сортируется по приказу увеличения значений разногласий, заданных как отношение “Хороших” к “Плохим” наблюдениям, для данной категории.

      • 'Goods' — Категории сортируются по приказу увеличения значений “Хороших”.

      • 'Bads' — Категории сортируются по приказу увеличения значений “Плохо”.

      • 'Totals' — Категории сортируются по приказу увеличения значений общего количества наблюдений (“Хороший” плюс “Плохой”).

      • 'none' Никакая сортировка не применяется. Существующий порядок категорий неизменен прежде, чем применить алгоритм. (Существующий порядок категорий виден в категории, группирующей дополнительный вывод от bininfo.)

      Для получения дополнительной информации смотрите сортировку Категорий

  • Для алгоритма Split:

    • {'InitialNumBins',n} — Задает целое число, которое определяет номер (n> 0) интервалов, что предиктор первоначально сгруппирован в перед разделением. Допустимый для числовых предикторов только. Значением по умолчанию является 50.

    • {'Measure',MeasureName} — Задает меру, где 'MeasureName' является одним из following:'Gini' (значение по умолчанию), 'Chi2', 'InfoValue' или 'Entropy'.

    • {'MinBad',n} — Задает минимальный номер n (n> =0) Bads на интервал. Значением по умолчанию является 1, чтобы избежать чистых интервалов.

    • {'MaxBad',n} — Задает максимальное количество n (n> =0) Bads на интервал. Значением по умолчанию является Inf.

    • {'MinGood',n} — Задает минимальный номер n (n> =0) Товаров на интервал. Значением по умолчанию является 1, чтобы избежать чистых интервалов.

    • {'MaxGood',n} — Задает максимальное количество n (n> =0) Товаров на интервал. Значением по умолчанию является Inf.

    • {'MinCount',n} — Задает минимальный номер n (n> =0) наблюдений на интервал. Значением по умолчанию является 1, чтобы избежать пустых интервалов.

    • {'MaxCount',n} — Задает максимальное количество n (n> =0) наблюдений на интервал. Значением по умолчанию является Inf.

    • {'MaxNumBins',n} — Задает максимальное количество n (n> =2) интервалов, следующих из разделения. Значением по умолчанию является 5.

    • {'Tolerance',Tol} — Задает минимальное усиление (> 0) в информационной функции, во время схемы итерации, чтобы выбрать точку разделения, которая максимизирует усиление. Значением по умолчанию является 1e-4.

    • {'Significance',n} — Порог уровня значения для статистической величины хи-квадрата, выше которой происходит разделение. Значения находятся в интервале [0,1]. Значением по умолчанию является 0.9 (90%-й уровень значения).

    • {'SortCategories','SortOption'} — Используемый для категориальных предикторов только. Используемый, чтобы определить, как категории предиктора сортируются как шаг предварительной обработки прежде, чем применить алгоритм. Значения 'SortOption':

      • 'Goods' — Категории сортируются по приказу увеличения значений “Хороших”.

      • 'Bads' — Категории сортируются по приказу увеличения значений “Плохо”.

      • 'Odds' — (значение по умолчанию) категории сортируется по приказу увеличения значений разногласий, заданных как отношение “Хороших” к “Плохим” наблюдениям, для данной категории.

      • 'Totals' — Категории сортируются по приказу увеличения значений общего количества наблюдений (“Хороший” плюс “Плохой”).

      • 'none' Никакая сортировка не применяется. Существующий порядок категорий неизменен прежде, чем применить алгоритм. (Существующий порядок категорий виден в категории, группирующей дополнительный вывод от bininfo.)

      Для получения дополнительной информации смотрите сортировку Категорий

  • Для алгоритма Merge:

    • {'InitialNumBins',n} — Задает целое число, которое определяет номер (n> 0) интервалов, что предиктор первоначально сгруппирован в перед слиянием. Допустимый для числовых предикторов только. Значением по умолчанию является 50.

    • {'Measure',MeasureName} — Задает меру, где 'MeasureName' является одним из following:'Chi2' (значение по умолчанию), 'Gini', 'InfoValue' или 'Entropy'.

    • {'MinNumBins',n} — Задает минимальный номер n (n> =2) интервалов тот результат слияния. Значением по умолчанию является 2.

    • {'MaxNumBins',n} — Задает максимальное количество n (n> =2) интервалов тот результат слияния. Значением по умолчанию является 5.

    • {'Tolerance',n} — Задает минимальный порог, ниже которого слияние происходит для информационного значения и энтропийной статистики. Допустимые значения находятся в интервале (0.1). Значением по умолчанию является 1e-3.

    • {'Significance',n} — Порог уровня значения для статистической величины хи-квадрата, ниже которой происходит слияние. Значения находятся в интервале [0,1]. Значением по умолчанию является 0.9 (90%-й уровень значения).

    • {'SortCategories','SortOption'} — Используемый для категориальных предикторов только. Используемый, чтобы определить, как категории предиктора сортируются как шаг предварительной обработки прежде, чем применить алгоритм. Значения 'SortOption':

      • 'Goods' — Категории сортируются по приказу увеличения значений “Хороших”.

      • 'Bads' — Категории сортируются по приказу увеличения значений “Плохо”.

      • 'Odds' — (значение по умолчанию) категории сортируется по приказу увеличения значений разногласий, заданных как отношение “Хороших” к “Плохим” наблюдениям, для данной категории.

      • 'Totals' — Категории сортируются по приказу увеличения значений общего количества наблюдений (“Хороший” плюс “Плохой”).

      • 'none' Никакая сортировка не применяется. Существующий порядок категорий неизменен прежде, чем применить алгоритм. (Существующий порядок категорий виден в категории, группирующей дополнительный вывод от bininfo.)

      Для получения дополнительной информации смотрите сортировку Категорий

  • Для алгоритма EqualFrequency:

    • {'NumBins',n} — Задает желаемый номер (n) интервалов. Значением по умолчанию является {'NumBins',5}, и количество интервалов должно быть положительным числом.

    • {'SortCategories','SortOption'} — Используемый для категориальных предикторов только. Используемый, чтобы определить, как категории предиктора сортируются как шаг предварительной обработки прежде, чем применить алгоритм. Значения 'SortOption':

      • 'Odds' — (значение по умолчанию) категории сортируется по приказу увеличения значений разногласий, заданных как отношение “Хороших” к “Плохим” наблюдениям, для данной категории.

      • 'Goods' — Категории сортируются по приказу увеличения значений “Хороших”.

      • 'Bads' — Категории сортируются по приказу увеличения значений “Плохо”.

      • 'Totals' — Категории сортируются по приказу увеличения значений общего количества наблюдений (“Хороший” плюс “Плохой”).

      • 'none' Никакая сортировка не применяется. Существующий порядок категорий неизменен прежде, чем применить алгоритм. (Существующий порядок категорий виден в категории, группирующей дополнительный вывод от bininfo.)

      Для получения дополнительной информации смотрите сортировку Категорий

  • Для алгоритма EqualWidth:

    • {'NumBins',n} — Задает желаемый номер (n) интервалов. Значением по умолчанию является {'NumBins',5}, и количество интервалов должно быть положительным числом.

    • {'SortCategories','SortOption'} — Используемый для категориальных предикторов только. Используемый, чтобы определить, как категории предиктора сортируются как шаг предварительной обработки прежде, чем применить алгоритм. Значения 'SortOption':

      • 'Odds' — (значение по умолчанию) категории сортируется по приказу увеличения значений разногласий, заданных как отношение “Хороших” к “Плохим” наблюдениям, для данной категории.

      • 'Goods' — Категории сортируются по приказу увеличения значений “Хороших”.

      • 'Bads' — Категории сортируются по приказу увеличения значений “Плохо”.

      • 'Totals' — Категории сортируются по приказу увеличения значений общего количества наблюдений (“Хороший” плюс “Плохой”).

      • 'none' Никакая сортировка не применяется. Существующий порядок категорий неизменен прежде, чем применить алгоритм. (Существующий порядок категорий виден в категории, группирующей дополнительный вывод от bininfo.)

      Для получения дополнительной информации смотрите сортировку Категорий

Пример: sc = autobinning(sc,'CustAge','Algorithm','Monotone','AlgorithmOptions',{'Trend','Increasing'})

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

Индикатор, чтобы отобразить информацию о состоянии процесса раскладывания в командной строке, заданной как пара, разделенная запятой, состоящая из 'Display' и вектора символов со значением 'On' или 'Off'.

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

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

свернуть все

Модель протокола результатов кредита, возвращенная как обновленный объект creditscorecard, содержащий автоматически решительные карты раскладывания или правила (точки разделения или группировки категории) для одного или нескольких предикторов. Для получения дополнительной информации об использовании объекта creditscorecard смотрите creditscorecard.

Примечание

Если вы ранее использовали функцию modifybins, чтобы вручную изменить интервалы, эти изменения потеряны при выполнении autobinning, потому что все данные автоматически сгруппированы на основе внутренних правил автораскладывания.

Больше о

свернуть все

Монотонность

Алгоритм 'Monotone' является реализацией Монотонного смежного алгоритма объединения (MAPA), также известного как Монотонность наибольшего правдоподобия крупный классификатор (MLMCC); смотрите Андерсона или Томаса в Ссылках.

Предварительная обработка

Во время фазы предварительной обработки предварительная обработка числовых предикторов состоит в применении равного раскладывания частоты, с количеством интервалов, определенных параметром 'InitialNumBins' (значением по умолчанию являются 10 интервалов). Предварительная обработка категориальных предикторов состоит в сортировке категорий согласно критерию 'SortCategories' (значение по умолчанию должно отсортировать по разногласиям в увеличивающемся порядке). Сортировка не применяется к порядковым предикторам. Смотрите сортировку определения Категорий или описания опции AlgorithmOptions для 'SortCategories' для получения дополнительной информации.

Основной алгоритм

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

ИнтервалХорошийПлохоIteration1Iteration2Iteration3Iteration4

'[-Inf,33000)'

1271070.543   

'[33000,38000)'

194900.6200.683  

'[38000,42000)'

135780.6240.662  

'[42000,47000)'

164660.6450.6780.713 

'[47000,Inf]'

183560.6690.7000.7400.766

Первоначально, числовые данные предварительно обрабатываются с равным раскладыванием частоты. В этом примере, для простоты, только используются пять начальных интервалов. Первый столбец указывает на равные области значений интервала частоты, и вторые и третьи столбцы имеют “Хорошие” и “Плохие” количества на интервал. (Количество наблюдений 1,200, таким образом, совершенное равное раскладывание частоты привело бы к пяти интервалам с 240 наблюдениями каждый. В этом случае наблюдения на интервал не соответствуют 240 точно. Это - общая ситуация, когда данные повторили значения.)

Монотонность находит точки останова на основе совокупной пропорции “Хороших” наблюдений. В the'Iteration1' столбце первое значение (0.543) является количеством “Хороших” наблюдений в первом интервале (127), разделенный на общее количество наблюдений в интервале (127+107). Второе значение (0.620) является количеством “Хороших” наблюдений в интервалах 1 и 2, разделенный на общее количество наблюдений в интервалах 1 и 2. И т.д. Первая точка разделения установлена, где минимум этого совокупного отношения найден, который находится в первом интервале в этом примере. Это - конец итерации 1.

При запуске со второго интервала (первый интервал после местоположения минимального значения в предыдущей итерации), совокупные пропорции “Хороших” наблюдений вычисляются снова. Вторая точка разделения установлена, где минимум этого совокупного отношения найден. В этом случае это, оказывается, находится в интервале номер 3, поэтому интервалы 2 и 3 объединены.

Алгоритм продолжает тот же путь к еще двум итерациям. В этом конкретном примере в конце это только объединяет интервалы 2 и 3. Итоговое раскладывание имеет четыре интервала с точками разделения в 33 000, 42,000, и 47,000.

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

ИнтервалХорошийПлохоРазногласия

'Home Owner'

3651772.062

'Tenant'

3071671.838

'Other'

131532.474

Шаг предварительной обработки, по умолчанию, сортирует категории по 'Odds'. (См. сортировку определения Категорий или описания опции AlgorithmOptions для 'SortCategories' для получения дополнительной информации.) Затем это применяет те же шаги, описанные выше, показанные в следующей таблице:

ИнтервалХорошийПлохоРазногласияIteration1Iteration2Iteration3
'Арендатор'3071671.8380.648  
'Домовладелец'3651772.0620.6610.673 
Другой131532.4720.6690.6830.712

В этом случае Монотонный алгоритм не объединил бы категорий. Единственная разница, по сравнению с данными перед применением алгоритма, то, что категории теперь сортируются по 'Odds'.

И в числовых и в категориальных примерах выше, неявным выбором 'Trend' является 'Increasing'. (См. описание опции AlgorithmOptions для опции 'Trend' 'Monotone'.), Если вы устанавливаете тренд на 'Decreasing', алгоритм ищет максимум (вместо минимума) совокупные отношения, чтобы определить точки разделения. В этом случае, в итерации 1, максимум был бы в последнем интервале, который будет подразумевать, что все интервалы должны быть объединены в один интервал. Раскладывание в один интервал является общей суммой убытков информации и не имеет никакого практического применения. Поэтому, когда выбранный тренд приводит к одному интервалу, Монотонная реализация отклоняет его, и алгоритм возвращает интервалы, найденные после шага предварительной обработки. Это состояние является начальным равным раскладыванием частоты для числовых данных и отсортированными категориями для категориальных данных. Реализация Монотонного алгоритма значением по умолчанию использует эвристику, чтобы идентифицировать тренд (опция 'Auto' для 'Trend').

Разделение

Split является контролируемым автоматическим алгоритмом раскладывания, где мера используется, чтобы разделить данные в блоки. Поддерживаемыми мерами является gini, chi2, infovalue и entropy.

Внутренне, алгоритм разделения продолжает можно следующим образом:

  1. Все категории объединены в один интервал.

  2. В первой итерации все потенциальные индексы точки разделения тестируются, чтобы видеть, какой приводит к максимальному увеличению информационной функции (Gini, InfoValue, Entropy или Chi2). Та точка разделения затем выбрана, и интервал разделен.

  3. Та же процедура повторена для следующих подынтервалов.

  4. Алгоритм останавливается, когда максимальное количество интервалов достигнуто или когда разделение не приводит ни к какому дополнительному изменению в информационной функции изменения.

Следующая таблица для категориального предиктора обобщает значения функции изменения в каждой итерации. В этом примере 'Gini' является предпочтительной мерой, такой, что цель состоит в том, чтобы видеть уменьшение меры Gini в каждой итерации.

Итерация 0 номеров интервалаУчастникGiniИтерация 1 номер интервалаУчастникGiniИтерация 2 номера интервалаУчастникGini

1

'Арендатор' 1'Арендатор' 1'Арендатор'0.45638

1

'Подбуква' 1'Подбуква'0.447891'Подбуква' 

1

'Домовладелец' 1'Домовладелец' 2'Домовладелец'0.43984

1

Другой 2Другой0.410153Другой0.41015

Общий Gini

 0.442765  0.442102  0.441822
Относительное изменение 0  0.001498  0.002128

Относительным изменением в итерации i является относительно меры Gini целых интервалов в итерации i-1. Конечный результат соответствует этому от последней итерации, которая, в этом примере, является итерацией 2.

Следующая таблица для числового предиктора обобщает значения функции изменения в каждой итерации. В этом примере 'Gini' является предпочтительной мерой, такой, что цель состоит в том, чтобы видеть уменьшение меры Gini в каждой итерации. Поскольку большинство числовых предикторов в наборах данных содержит много интервалов, существует шаг предварительной обработки, где данные предсгруппированы в 50 интервалов равной частоты. Это делает пул допустимых точек разделения, чтобы выбрать из для разделения меньшего и более управляемого.

Итерация 0 номеров интервалаУчастникGiniИтерация 1 номер интервалаGiniИтерация 2 номера интервалаGiniИтерация 3 номера интервалаGini

1

'21' '[-Inf,47]'0.473897'[-Inf,47]'0.473897'[-Inf,35]'0.494941

1

'22' '[47,Inf]'0.385238'[47,61]'0.407072'[35, 47]'0.463201

1

'23'   '[61,Inf]'0.208795'[47, 61]'0.407072

1

'74'  0  '[61,Inf]'0.208795

Общий Gini

 0.442765 0.435035 0.432048 0.430511
Относительное изменение 0 0.01746 0.006867 0.0356

Получившееся разделение должно быть таково, что информационная функция (содержимое) увеличивается. По сути, лучшее разделение является тем, которое приводит к максимальному информационному усилению. Информационные поддерживаемые функции:

  • Gini: Каждое разделение приводит к увеличению Отношения Gini, заданного как:

    G_r = 1- G_hat/G_p

    G_p является мерой Gini родительского узла, то есть, данных интервалов/категорий до разделения. G_hat является взвешенной мерой Gini для текущего разделения:

    G_hat = Sum((nj/N) * Gini(j), j=1..m)

    где

    nj является общим количеством наблюдений в j th интервал.

    N является общим количеством наблюдений в наборе данных.

    m является количеством разделений для данной переменной.

    Gini(j) является мерой Gini для j th интервал.

    Мера по Gini для разделения/узла j:

    Gini(j) = 1 - (Gj^2+Bj^2) / (nj)^2
    где Gj, Bj = Количество Goods и Bads для интервала j.

  • InfoValue: информационное значение для каждого разделения приводит к увеличению общей информации. Разделение, которое сохраняется, является тем, которое приводит к максимальному усилению в приемлемом допуске усиления. Информационное значение (IV) для данного наблюдения j задано как:

    IV = sum( (pG_i-pB_i) * log(pG_i/pB_i), i=1..n)
    где

    pG_i является распределением Товаров при наблюдении i, который является Goods(i)/Total_Goods.

    pB_i является распределением Bads при наблюдении i, который является Bads(i)/Total_Bads.

    n является общим количеством интервалов.

  • Entropy: Каждое разделение приводит к уменьшению в энтропийном отклонении, заданном как:

     E = -sum(ni * Ei, i=1..n)  

    где

    ni является общим счетом для интервала i, который является (ni = Gi + Bi).

    Ei является энтропией для строки (или интервал) i, заданный как:

     Ei = -sum(Gi*log2(Gi/ni) + Bi*log2(Bi/ni))/N, 
    i=1..n
  • Chi2: Chi2 вычисляется попарно для каждой пары интервалов и измеряет статистическую разницу между двумя группами. Разделение выбрано в точке (точка разделения или индексация категории), где максимальное значение Chi2:

     Chi2 = sum(sum((Aij - Eij)^2/Eij , j=1..k), i=m,m+1)

    где

    m принимает значения от 1 ... n-1, где n является количеством интервалов.

    k является количеством классов. Здесь k = 2 для (Товары, Bads).

    Aij является количеством наблюдений в интервале i, j th класс.

    Eij является ожидаемой частотой Aij, который равен (Ri*Cj)/N.

    Ri является количеством наблюдений в интервале i, который равен sum(Aij, j=1..k).

    Cj является количеством наблюдений в j th класс, который равен sum(Aij, I = m,m+1).

    N является общим количеством наблюдений, которое равно sum(Cj, j=1..k).

Мера Chi2 для целой выборки (в противоположность попарной мере Chi2 для смежных интервалов):

 Chi2 = sum(sum((Aij - Eij)^2/Eij , j=1..k), i=1..n)

Слияние

Merge является контролируемым автоматическим алгоритмом раскладывания, где мера используется, чтобы объединить интервалы в блоки. Поддерживаемыми мерами является chi2, gini, infovalue и entropy.

Внутренне, алгоритм слияния продолжает можно следующим образом:

  1. Все категории находятся первоначально в отдельных интервалах.

  2. Пользователь выбрал информационную функцию (Chi2, Gini, InfoValue или Entropy) вычисляется для любой пары смежных интервалов.

  3. В каждой итерации объединена пара с самым маленьким информационным изменением, измеренным выбранной информационной функцией.

  4. Слияние продолжается до также:

    1. Все попарные информационные значения больше, чем порог, установленный уровнем значения или относительным изменением, меньше, чем допуск.

    2. Если в конце, количество интервалов еще больше, чем позволенный MaxNumBins, слияние обеспечено, пока нет в большинстве интервалов MaxNumBins. Точно так же объединяющие остановки, когда существуют только интервалы MinNumBins.

  5. Поскольку категориальные, исходные интервалы/категории предварительно сортируются согласно сортировке набора вариантов пользователем. Для числовых данных данные предварительно обрабатываются, чтобы получить интервалы IntialNumBins равной частоты, прежде чем алгоритм слияния запустится.

Следующая таблица для категориального предиктора обобщает значения функции изменения в каждой итерации. В этом примере 'Chi2' является предпочтительной мерой. Сортировка значения по умолчанию по Odds применяется как шаг предварительной обработки. Значением Chi2, о котором сообщают ниже в строке i, является для интервалов i и i +1. Уровнем значения является 0.9 (90%), так, чтобы обратным значением Chi2 был 2.705543. Это - порог, ниже которого объединены смежные пары интервалов. Минимальное количество интервалов равняется 2.

Итерация 0 номеров интервалаУчастникChi2Итерация 1 номер интервалаУчастникChi2Итерация 2 номера интервалаУчастникChi2

1

'Арендатор'1.0076131'Арендатор'0.7959201'Арендатор' 

2

'Подбуква'0.2573472'Подбуква' 1'Подбуква' 

3

'Домовладелец'1.5663302'Домовладелец'1.5229141'Домовладелец'1.797395

4

Другой 3Другой 2Другой 

Общий Chi2

 2.573943  2.317717  1.797395

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

Итерация 0 номеров интервалаChi2Итерация 1 интервалChi2 Итоговые интервалы итерацииChi2
'[-Inf,22]'0.11814'[-Inf,22]'0.11814 '[-Inf,33]'8.4876
'[22,23]'1.6464'[22,23]'1.6464 '[33, 48]'7.9369

...

 ...  '[48,64]'9.956
'[58,59]'0.311578'[58,59]'0.27489 '[64,65]'9.6988
'[59,60]'0.068978'[59,61]' 1.8403 '[65,Inf]'NaN
'[60,61]'1.8709'[61,62]'5.7946...  
'[61,62]'5.7946...    
... '[69,70]'6.4271   
'[69,70]'6.4271'[70,Inf]'NaN   
'[70,Inf]'NaN     
       

Общий Chi2

67.467 67.399  23.198

Получившееся слияние должно быть таково, что любая пара смежных интервалов статистически отличается друг от друга, согласно выбранной мере. Меры, поддержанные для Merge:

  • Chi2: Chi2 вычисляется попарно для каждой пары интервалов и измеряет статистическую разницу между двумя группами. Слияние выбрано в точке (точка разделения или индексация категории), где максимальное значение Chi2:

     Chi2 = sum(sum((Aij - Eij)^2/Eij , j=1..k), i=m,m+1)

    где

    m принимает значения от 1 ... n-1, и n является количеством интервалов.

    k является количеством классов. Здесь k = 2 для (Товары, Bads).

    Aij является количеством наблюдений в интервале i, j th класс.

    Eij является ожидаемой частотой Aij, который равен (Ri*Cj)/N.

    Ri является количеством наблюдений в интервале i, который равен sum(Aij, j=1..k).

    Cj является количеством наблюдений в j th класс, который равен sum(Aij, I = m,m+1).

    N является общим количеством наблюдений, которое равно sum(Cj, j=1..k).

    Мера Chi2 для целой выборки (в противоположность попарной мере Chi2 для смежных интервалов):

     Chi2 = sum(sum((Aij - Eij)^2/Eij , j=1..k), i=1..n)

  • Gini: Каждое слияние приводит к уменьшению в Отношении Gini, заданном как:

    G_r = 1- G_hat/G_p

    G_p является мерой Gini родительского узла, то есть, данных интервалов/категорий до слияния. G_hat является взвешенной мерой Gini для текущего слияния:

    G_hat = Sum((nj/N) * Gini(j), j=1..m)

    где

    nj является общим количеством наблюдений в j th интервал.

    N является общим количеством наблюдений в наборе данных.

    m является количеством слияний для данной переменной.

    Gini(j) является мерой Gini для j th интервал.

    Мера по Gini для слияния/узла j:

    Gini(j) = 1 - (Gj^2+Bj^2) / (nj)^2
    где Gj, Bj = Количество Goods и Bads для интервала j.

  • InfoValue: информационное значение для каждого слияния приведет к уменьшению в общей информации. Слияние, которое сохраняется, является тем, которое приводит к минимальному усилению в приемлемом допуске усиления. Информационное значение (IV) для данного наблюдения j задано как:

    IV = sum( (pG_i-pB_i) * log(pG_i/pB_i), i=1..n)
    где

    pG_i является распределением Товаров при наблюдении i, который является Goods(i)/Total_Goods.

    pB_i является распределением Bads при наблюдении i, который является Bads(i)/Total_Bads.

    n является общим количеством интервалов.

  • Entropy: Каждое слияние приводит к увеличению энтропийного отклонения, заданного как:

     E = -sum(ni * Ei, i=1..n)  

    где

    ni является общим счетом для интервала i, который является (ni = Gi + Bi).

    Ei является энтропией для строки (или интервал) i, заданный как:

     Ei = -sum(Gi*log2(Gi/ni) + Bi*log2(Bi/ni))/N, 
    i=1..n

Примечание

При использовании Алгоритма слияния, если существуют чистые интервалы (интервалы, которые имеют или нулевое количество Goods или обнуляют количество Bads), статистика, такая как информационное Значение и Энтропия имеют неличные значения. Чтобы составлять это, сдвиг частоты .5 применяется для вычисления различной статистики каждый раз, когда алгоритм находит чистые интервалы.

Равная частота

Безнадзорный алгоритм, который делит данные на предопределенное количество интервалов, которые содержат приблизительно то же количество наблюдений.

EqualFrequency задан как:

Позвольте v[1], v[2]..., v [N] быть отсортированным списком различных значений или категорий, наблюдаемых в данных. Позвольте f [i] быть частотой v [i]. Позвольте F [k] = f[1] +... +f [k] быть совокупной суммой частот до k th отсортированное значение. Затем F [N] совпадает с общим количеством наблюдений.

Задайте AvgFreq = F [N] / NumBins, который является идеальной средней частотой на интервал после раскладывания. n th индекс точки разделения является индексом k, таким образом, что abs расстояния (F [k] - n *AvgFreq) минимизирован.

Это правило пытается совпадать с совокупной частотой до n th интервал. Если одно значение содержит слишком много наблюдений, равные интервалы частоты не возможны, и вышеупомянутое правило приводит к меньше, чем общие интервалы NumBins. В этом случае алгоритм определяет интервалы NumBins путем разбивания интервалов в порядке, в котором были созданы интервалы.

Предварительная обработка категориальных предикторов состоит в сортировке категорий согласно критерию 'SortCategories' (значение по умолчанию должно отсортировать по разногласиям в увеличивающемся порядке). Сортировка не применяется к порядковым предикторам. Смотрите сортировку определения Категорий или описания опции AlgorithmOptions для 'SortCategories' для получения дополнительной информации.

Равная ширина

Безнадзорный алгоритм, который делит область значений значений в области переменной прогноза в предопределенное количество интервалов “равной ширины”. Для числовых данных ширина измеряется как расстояние между ребрами интервала. Для категориальных данных ширина измеряется как количество категорий в интервале.

Опция EqualWidth задана как:

Для числовых данных, если MinValue и MaxValue являются минимальными и максимальными значениями данных, то

Width = (MaxValue - MinValue)/NumBins
и CutPoints установлен в MinValue + Ширина, MinValue + 2*Width... MaxValue – Ширина. Если MinValue или MaxValue не были заданы с помощью функции modifybins, опция EqualWidth устанавливает MinValue и MaxValue к минимальным и максимальным значениям, наблюдаемым в данных.

Для категориальных данных, если существуют количества NumCats исходных категорий, то

Width = NumCats / NumBins,
и индексы точки разделения набора к округленным значениям Ширины, 2*Width..., NumCats – Ширина, плюс 1.

Предварительная обработка категориальных предикторов состоит в сортировке категорий согласно критерию 'SortCategories' (значение по умолчанию должно отсортировать по разногласиям в увеличивающемся порядке). Сортировка не применяется к порядковым предикторам. Смотрите сортировку определения Категорий или описания опции AlgorithmOptions для 'SortCategories' для получения дополнительной информации.

Сортировка категорий

Как шаг предварительной обработки для категориальных данных, 'Monotone', 'EqualFrequency' и 'EqualWidth' поддерживают вход 'SortCategories'. Это служит цели переупорядочить категории прежде, чем применить основной алгоритм. Критерий сортировки по умолчанию должен отсортировать по 'Odds'. Например, предположите, что данные первоначально выглядят так:

ИнтервалХорошийПлохоРазногласия
'Home Owner'3651772.062
'Tenant'3071671.838
'Other'131532.472

После шага предварительной обработки строки были бы отсортированы по 'Odds', и таблица выглядит так:

ИнтервалХорошийПлохоРазногласия
'Tenant'3071671.838
'Home Owner'3651772.062
'Other'131532.472

Эти три алгоритма только объединяют смежные интервалы, таким образом, начальный порядок категорий имеет значение для итогового раскладывания. Опция 'None' для 'SortCategories' оставила бы исходную таблицу без изменений. Для описания поддерживаемых критериев сортировки см. описание опции AlgorithmOptions для 'SortCategories'.

После конструкции протокола результатов, начальный порядок категорий, прежде чем любой алгоритм или любые модификации раскладывания применяются, порядок, показанный в первом выводе bininfo. Если интервалы были изменены (или вручную с modifybins или автоматически с autobinning), используйте дополнительный вывод (cg, 'category grouping') от bininfo, чтобы получить текущий порядок категорий.

Опция 'SortCategories' не имеет никакого эффекта на категориальные предикторы, для которых параметр 'Ordinal' устанавливается на истинный (см. параметр входа 'Ordinal' в категориальных массивах MATLAB® для categorical. Порядковые данные имеют естественный порядок, который соблюдается на шаге предварительной обработки алгоритмов путем оставления порядка без изменений категорий. Только категориальные предикторы, параметр 'Ordinal' которых является ложью (опция по умолчанию), подвергаются переупорядочению категорий согласно критерию 'SortCategories'.

Используя autobinning с весами

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

“Частоты”, о которых сообщают, больше не являются основным “количеством” строк, но “совокупным весом” строк, которые хороши или плохи и падение конкретного интервала. Если эти “взвешенные частоты” известны, все другие соответствующие статистические данные (Good, Bad, Odds, WOE и InfoValue) вычисляются с обычными формулами. Для получения дополнительной информации см., что Протокол результатов Кредита Моделирует Используя Веса Наблюдения.

Ссылки

[1] Андерсон, R. Инструментарий рейтинга кредитоспособности. Издательство Оксфордского университета, 2007.

[2] Кербер, R. "ChiMerge: дискретизация числовых атрибутов". Продолжения AAAI-92. 1992.

[3] Лю, H., и. al. Анализ данных, Знание и Открытие. Vol 6. Выпуск 4. Октябрь 2002, стр 393-423.

[4] Refaat, M. Подготовка данных для анализа данных Используя SAS. Морган Кофманн, 2006.

[5] Refaat, M. Протоколы результатов кредитного риска: разработка и реализация Используя SAS. lulu.com, 2011.

[6] Томас, L., и др. Рейтинг кредитоспособности и Его Приложения. Общество Промышленной и Прикладной математики, 2002.

Введенный в R2014b