Выполните автоматическое раскладывание для заданных предикторов
выполняет автоматическое раскладывание всех предикторов.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')
Создайте 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)
Выполните автоматическое раскладывание для категориального 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)
Создайте 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
набор данных и 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
sc
- Модель карты показателей кредитаcreditscorecard
объектМодель карты показателей кредита, заданная как creditscorecard
объект. Использование creditscorecard
для создания creditscorecard
объект.
PredictorNames
- Имена предиктора или предикторов в автоматический интервалПредиктор или предикторы именуют автоматически интервал, заданные как вектор символов или массив ячеек из векторов символов, содержащий имя предиктора или предикторов. PredictorNames
чувствительны к регистру и когда нет PredictorNames
заданы, все предикторы в PredictorVars
свойство creditscorecard
объект привязан.
Типы данных: char
| cell
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
sc = autobinning(sc,'Algorithm','EqualFrequency')
'Algorithm'
- Выбор алгоритма'Monotone'
(по умолчанию) | символьный вектор со значениями 'Monotone'
, 'Split'
, 'Merge'
, 'EqualFrequency'
, 'EqualWidth'
Выбор алгоритма, заданный как разделенная разделенными запятой парами, состоящая из '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
'AlgorithmOptions'
- Опции алгоритма для выбранных Algorithm
{'InitialNumBins',10,'Trend','Auto','SortCategories','Odds'}
для Monotone
(по умолчанию) | массив ячеек с {
'OptionName'
, <reservedrangesplaceholder1> <reservedrangesplaceholder0>
для Algorithm
опцииОпции алгоритма для выбранных 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'
- Индикатор для отображения информации о состоянии процесса раскладывание в командной строке'Off'
(по умолчанию) | символьный вектор со значениями 'On'
, 'Off'
Индикатор для отображения информации о состоянии процесса раскладывание в командной строке, заданный как разделенная разделенными запятой парами, состоящая из 'Display'
и вектор символов со значением 'On'
или 'Off'
.
Типы данных: char
sc
- Модель карты показателей кредитаcreditscorecard
объектМодель карты показателей кредита, возвращенная как обновленная creditscorecard
объект, содержащий автоматически определенные карты или правила (раскладывание разрыва или группы категорий) для одного или нескольких предикторов. Для получения дополнительной информации об использовании creditscorecard
объект, см. creditscorecard
.
Примечание
Если вы ранее использовали modifybins
функция для ручного изменения интервалов, эти изменения теряются при запуске autobinning
потому что все данные автоматически привязываются на основе внутренних правил автораскладывания.
The 'Monotone'
алгоритм является реализацией алгоритма монотонного смежного объединения (MAPA), также известного как монотонный грубый классификатор максимального правдоподобия (MLMCC); см. Андерсона или Томаса в ссылки.
Предварительная обработка
Во время фазы предварительной обработки предварительная обработка числовых предикторов состоит в применении равного частотного раскладывания с количеством интервалов, определяемым 'InitialNumBins'
параметр (по умолчанию это 10 интервалов). Предварительная обработка категориальных предикторов состоит в сортировке категорий согласно 'SortCategories'
критерий (по умолчанию это сортировка по коэффициентам в порядке увеличения). Сортировка не применяется к порядковым предикторам. Смотрите определение категорий сортировки или описание AlgorithmOptions
опция для 'SortCategories'
для получения дополнительной информации.
Основной алгоритм
Следующий пример иллюстрирует, как 'Monotone'
алгоритм приходит к точкам отсечения для числовых данных.
Интервал | Хорошо | Плохо | Iteration1 | Iteration2 | Iteration3 | Iteration4 |
---|---|---|---|---|---|---|
| 127 | 107 | 0.543 | |||
| 194 | 90 | 0.620 | 0.683 | ||
| 135 | 78 | 0.624 | 0.662 | ||
| 164 | 66 | 0.645 | 0.678 | 0.713 | |
| 183 | 56 | 0.669 | 0.700 | 0.740 | 0.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.
Для категориальных данных единственным различием является то, что шаг предварительной обработки состоит в переупорядочении категорий. Примите во внимание следующие категориальные данные:
Интервал | Хорошо | Плохо | Разногласия |
---|---|---|---|
| 365 | 177 | 2.062 |
| 307 | 167 | 1.838 |
| 131 | 53 | 2.474 |
Шаг предварительной обработки, по умолчанию, сортирует категории по 'Odds'
. (См. определение категории сортировки или описание AlgorithmOptions
опция для 'SortCategories'
для получения дополнительной информации Затем применяются те же шаги, которые описаны выше, показанные в следующей таблице:
Интервал | Хорошо | Плохо | Разногласия | Iteration1 | Iteration2 | Iteration3 |
---|---|---|---|---|---|---|
'Арендатор' | 307 | 167 | 1.838 | 0.648 | ||
'Домовладелец' | 365 | 177 | 2.062 | 0.661 | 0.673 | |
Другое | 131 | 53 | 2.472 | 0.669 | 0.683 | 0.712 |
В этом случае алгоритм Monotone не будет объединять никакие категории. Единственное различие, по сравнению с данными до применения алгоритма, заключается в том, что категории теперь отсортированы по 'Odds'
.
В числовом и категориальном примерах выше неявное 'Trend'
выбор 'Increasing'
. (См. описание AlgorithmOptions
опция для 'Monotone'
'Trend'
опция.) Если вы задаете тренд на 'Decreasing'
алгоритм ищет максимальные (вместо минимальных) совокупные коэффициенты, чтобы определить точки разреза. В этом случае при итерации 1 максимум будет находиться в последнем интервале, что будет означать, что все интервалы должны быть объединены в один интервал. Binning in a single bin является полной потерей информации и не имеет практического использования. Поэтому, когда выбранный тренд ведет к одному интервалу, реализация Monotone отклоняет его, и алгоритм возвращает интервалы, найденные после шага предварительной обработки. Это состояние является начальным равным раскладыванием частот для числовых данных и отсортированных категорий для категориальных данных. Реализация алгоритма Monotone по умолчанию использует эвристику, чтобы идентифицировать тренд ('Auto'
опция для 'Trend'
).
Split является контролируемым алгоритмом автоматического раскладывания, где мера используется для разделения данных на интервалы. Поддерживаемые меры gini
, chi2
, infovalue
, и entropy
.
Внутренне алгоритм разделения протекает следующим образом:
Все категории объединяются в один интервал.
При первой итерации все потенциальные индексы точек отсечения проверяются, чтобы увидеть, какой из них приводит к максимальному увеличению информационной функции (Gini
, InfoValue
, Entropy
, или Chi2
). Затем выбирается контрольная точка, и интервал разделяется.
Эта же процедура повторяется для следующих подынтервалов.
Алгоритм останавливается, когда достигается максимальное количество интервалов или когда разделение не приводит к какому-либо дополнительному изменению функции изменения информации.
В следующей таблице для категориального предиктора суммируются значения функции изменения при каждой итерации. В этом примере 'Gini'
является мерой выбора, такой что цель состоит в том, чтобы увидеть уменьшение меры Джини при каждой итерации.
Итерация 0 Число интервала | Представитель | Gini | Итерация 1 Число интервала | Представитель | Gini | Итерация 2 Число интервала | Представитель | Gini |
---|---|---|---|---|---|---|---|---|
1 | 'Арендатор' | 1 | 'Арендатор' | 1 | 'Арендатор' | 0.45638 | ||
1 | 'Подбуква' | 1 | 'Подбуква' | 0.44789 | 1 | 'Подбуква' | ||
1 | 'Домовладелец' | 1 | 'Домовладелец' | 2 | 'Домовладелец' | 0.43984 | ||
1 | Другое | 2 | Другое | 0.41015 | 3 | Другое | 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
, j
I класс.
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)
.
The Chi2
измерение для всей выборки (в отличие от парной Chi2
мера для смежных интервалов) является:
Chi2 = sum(sum((Aij - Eij)^2/Eij , j=1..k), i=1..n)
Merge является контролируемым алгоритмом автоматического раскладывания, где мера используется для объединения интервалов в интервалы. Поддерживаемые меры chi2
, gini
, infovalue
, и entropy
.
Внутренне алгоритм слияния протекает следующим образом:
Все категории первоначально находятся в отдельных интервалах.
Выбранная пользователем информационная функция (Chi2
, Gini
, InfoValue
или Entropy
) вычисляется для любой пары смежных интервалов.
При каждой итерации пара с наименьшим информационным изменением, измеренным выбранной информационной функцией, объединяется.
Слияние продолжается до тех пор, пока:
Все значения парной информации больше порога, установленного уровнем значимости, или относительное изменение меньше допуска.
Если в конце, количество интервалов все еще больше, чем MaxNumBins
разрешено, слияние принудительно, пока не будет самое большее MaxNumBins
интервалы. Аналогично, слияние останавливается, когда есть только MinNumBins
интервалы.
Для категориальных исходных интервалов/категорий предварительно сортируются в соответствии с выбором сортировки, установленным пользователем. Для числовых данных данные предварительно обрабатываются, чтобы получить IntialNumBins
интервалы равной частоты перед запуском алгоритма объединения.
В следующей таблице для категориального предиктора суммируются значения функции изменения при каждой итерации. В этом примере 'Chi2'
является мерой выбора. Сортировка по умолчанию по Odds
применяется как шаг предварительной обработки. The Chi2
значение, представленное ниже в строке i, предназначено для интервалов i и i + 1. Уровень значимости 0.9
(90%), так что обратное Chi2
значение 2.705543
. Это порог, ниже которого объединяются соседние пары интервалов. Минимальное количество интервалов - 2.
Итерация 0 Число интервала | Представитель | Chi2 | Итерация 1 Число интервала | Представитель | Chi2 | Итерация 2 Число интервала | Представитель | Chi2 |
---|---|---|---|---|---|---|---|---|
1 | 'Арендатор' | 1.007613 | 1 | 'Арендатор' | 0.795920 | 1 | 'Арендатор' | |
2 | 'Подбуква' | 0.257347 | 2 | 'Подбуква' | 1 | 'Подбуква' | ||
3 | 'Домовладелец' | 1.566330 | 2 | 'Домовладелец' | 1.522914 | 1 | 'Домовладелец' | 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
, j
I класс.
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)
.
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,
Предварительная обработка категориальных предикторов состоит в сортировке категорий согласно 'SortCategories'
критерий (по умолчанию это сортировка по коэффициентам в порядке увеличения). Сортировка не применяется к порядковым предикторам. Смотрите определение категорий сортировки или описание AlgorithmOptions
опция для 'SortCategories'
для получения дополнительной информации.
Как шаг предварительной обработки для категориальных данных, 'Monotone'
, 'EqualFrequency'
, и 'EqualWidth'
поддержка 'SortCategories'
вход. Это служит цели переупорядочения категорий перед применением основного алгоритма. Критерием сортировки по умолчанию является сортировка по 'Odds'
. Например, предположим, что данные первоначально выглядят следующим образом:
Интервал | Хорошо | Плохо | Разногласия |
---|---|---|---|
'Home Owner' | 365 | 177 | 2.062 |
'Tenant' | 307 | 167 | 1.838 |
'Other' | 131 | 53 | 2.472 |
После шага предварительной обработки строки будут отсортированы по 'Odds'
и таблица выглядит следующим образом:
Интервал | Хорошо | Плохо | Разногласия |
---|---|---|---|
'Tenant' | 307 | 167 | 1.838 |
'Home Owner' | 365 | 177 | 2.062 |
'Other' | 131 | 53 | 2.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 год.
bindata
| bininfo
| creditscorecard
| displaypoints
| fitmodel
| formatpoints
| modifybins
| modifypredictor
| plotbins
| predictorinfo
| probdefault
| score
| setmodel
| validatemodel
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.