autobinning

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

Описание

пример

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

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

пример

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

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

пример

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

Автоматическое раскладывание находит карты или правила binning для числовых данных интервал и для группы категорий категориальных данных. Правила binning хранятся в 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 отображение гистограммы и кривой ГОРЕ для предиктора CustAge.

plotbins(sc,'CustAge')

Figure contains an axes. The axes with title CustAge contains 3 objects of type bar, line. These objects represent Good, Bad.

Создайте 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 алгоритм. The 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)

Figure contains an axes. The axes with title ResStatus contains 3 objects of type bar, line. These objects represent Good, Bad.

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

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

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

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

[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)

Figure contains an axes. The axes with title ResStatus contains 3 objects of type bar, line. These objects represent Good, Bad.

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

Figure contains an axes. The axes with title CustAge contains 3 objects of type bar, line. These objects represent Good, Bad.

Отображение информации о интервале для категориальных данных для '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')

Figure contains an axes. The axes with title ResStatus contains 3 objects of type bar, line. These objects represent Good, Bad.

Этот пример демонстрирует использование 'Split' алгоритм с категориальными и числовыми предикторами. Загрузите CreditCardData.mat набор данных и modify так, чтобы он содержал четыре категории для предиктора '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    

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

Чтобы продемонстрировать разделение для числового предиктора, 'T mAtAddress', первое использование 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    

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

Чтобы продемонстрировать слияние для числового предиктора, 'T mAtAddress', первое использование 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 - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

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

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

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

  • 'Split' - Контролируемый алгоритм раскладывания, где мера используется для разделения данных на интервалы. Меры, поддерживаемые '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'} - Определяет, ожидается ли увеличение или уменьшение монотонного тренда Weight-Of-Evidence (WOE). Значения для 'TrendOption' являются:

      • 'Auto' - (По умолчанию) Автоматически определяет, увеличивается или уменьшается тренд ГОРЕ.

      • 'Increasing' - Ищите растущий тренд ГОРЕ.

      • 'Decreasing' - Ищите снижающийся тренд ГОРЕ.

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

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

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

      • 'Goods' - Категории сортируются по порядку нарастания значений «Хорошо».

      • 'Bads' - Категории сортируются по порядку нарастания значений «Bad».

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

      • 'None' - Сортировка не применяется. Существующий порядок категорий остается неизменным перед применением алгоритма. (Существующий порядок категорий можно увидеть в необязательном выходе группы категорий из bininfo.)

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

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

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

    • {'Measure',MeasureName} - Определяет меру, в которой 'MeasureName' является одним из следующих: 'Gini' (по умолчанию), 'Chi2', 'InfoValue', или 'Entropy'.

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

    • {'MaxBad',n} - Задает максимальное n числа (n > = 0) Бадса на интервал. Значение по умолчанию 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' - Категории сортируются по порядку нарастания значений «Bad».

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

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

      • 'None' - Сортировка не применяется. Существующий порядок категорий остается неизменным перед применением алгоритма. (Существующий порядок категорий можно увидеть в необязательном выходе группы категорий из bininfo.)

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

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

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

    • {'Measure',MeasureName} - Определяет меру, в которой 'MeasureName' является одним из следующих: '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' - Категории сортируются по порядку нарастания значений «Bad».

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

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

      • 'None' - Сортировка не применяется. Существующий порядок категорий остается неизменным перед применением алгоритма. (Существующий порядок категорий можно увидеть в необязательном выходе группы категорий из bininfo.)

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

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

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

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

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

      • 'Goods' - Категории сортируются по порядку нарастания значений «Хорошо».

      • 'Bads' - Категории сортируются по порядку нарастания значений «Bad».

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

      • 'None' - Сортировка не применяется. Существующий порядок категорий остается неизменным перед применением алгоритма. (Существующий порядок категорий можно увидеть в необязательном выходе группы категорий из bininfo.)

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

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

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

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

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

      • 'Goods' - Категории сортируются по порядку нарастания значений «Хорошо».

      • 'Bads' - Категории сортируются по порядку нарастания значений «Bad».

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

      • 'None' - Сортировка не применяется. Существующий порядок категорий остается неизменным перед применением алгоритма. (Существующий порядок категорий можно увидеть в необязательном выходе группы категорий из bininfo.)

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

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

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

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

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

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

свернуть все

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

Примечание

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

Подробнее о

свернуть все

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

The '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

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

Монотон находит пропуски на основе совокупной доли «хороших» наблюдений. В 'Iteration1' столбец, первое значение (0,543) - количество наблюдений «Good» в первом интервале (127), разделенное на общее количество наблюдений в интервале (127 + 107). Второе значение (0,620) является количеством наблюдений «Good» в интервалах 1 и 2, разделенных на общее количество наблюдений в интервалах 1 и 2. И так далее. Первая точка разреза устанавливается там, где найден минимум этого совокупного отношения, который находится в первом интервале в этом примере. Это конец итерации 1.

Начиная со второго интервала (первого интервала после расположения минимального значения в предыдущей итерации), совокупные пропорции наблюдений «Good» вычисляются снова. Вторая точка разреза задается там, где найден минимум этого совокупного отношения. В этом случае это происходит в интервале № 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

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

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

Разделение

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

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

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

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

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

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

В следующей таблице для категориального предиктора суммируются значения функции изменения при каждой итерации. В этом примере '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

Всего Джини

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

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

Следующая таблица для числового предиктора суммирует значения функции изменения при каждой итерации. В этом примере '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

Всего Джини

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

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

  • Джини: Каждое разделение приводит к увеличению коэффициента Джини, заданному как:

    G_r = 1- G_hat/G_p

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

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

    где

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

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

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

    Gini(j) - мера Джини для j-го интервала.

    Мера Джини для j разделения/узла:

    Gini(j) = 1 - (Gj^2+Bj^2) / (nj)^2
    где Gj, Bj = Количество товаров и бадов для 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 - распределение Бадса при наблюдении 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 вычисляется попарно для каждой пары интервалов и измеряет статистическое различие между двумя группами. Разделение выбирается в точке (cutpoint или category indexing), где максимальное Chi2 значение является:

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

    где

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

    k количество классов. Вот k = 2 для (Товары, Бады).

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

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

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

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

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

The 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 применяется как шаг предварительной обработки. The 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 вычисляется попарно для каждой пары интервалов и измеряет статистическое различие между двумя группами. Объединение выбирается в точке (cutpoint или category indexing), где максимальное Chi2 значение является:

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

    где

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

    k количество классов. Вот k = 2 для (Товары, Бады).

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

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

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

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

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

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

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

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

    G_r = 1- G_hat/G_p

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

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

    где

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

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

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

    Gini(j) - мера Джини для j-го интервала.

    Мера Джини для j слияния/узла:

    Gini(j) = 1 - (Gj^2+Bj^2) / (nj)^2
    где Gj, Bj = Количество товаров и бадов для 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 - распределение Бадса при наблюдении 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-го отсортированного значения. Тогда F [N] совпадает с общим количеством наблюдений.

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

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

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

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

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

The EqualWidth опция определяется как:

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

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

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

Width = NumCats / NumBins,
и установите индексы точек разрыва на округлые значения Width, 2 * Width,..., NumCats - Width, плюс 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

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

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

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

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

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

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

Ссылки

[1] Anderson, R. The Credit Scoring Toolkit. Oxford University Press, 2007.

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

[3] Liu, H., et. al. Интеллектуальный анализ данных, знание и обнаружение. Vol 6. Выпуск 4. Октябрь 2002, с. 393-423.

[4] Refaat, M. Data Preparation for Data Mining Using SAS. Морган Кауфманн, 2006.

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

[6] Thomas, L., et al. Кредитный скоринг и его приложения. Общество промышленной и прикладной математики, 2002 год.

Введенный в R2014b