Выполните автоматическое раскладывание данных предикторов
выполняет автоматическое раскладывание всех предикторов.sc
= autobinning(sc
)
Автоматическое раскладывание находит карты раскладывания или правила к числовым данным интервала и сгруппировать категории категориальных данных. Правила раскладывания хранятся в creditscorecard
объект. Применять правила раскладывания к creditscorecard
данные объектов, или к новому набору данных, используют bindata
.
выполняет автоматическое раскладывание предикторов, данных в sc
= autobinning(sc
,PredictorNames
)PredictorNames
.
Автоматическое раскладывание находит карты раскладывания или правила к числовым данным интервала и сгруппировать категории категориальных данных. Правила раскладывания хранятся в creditscorecard
объект. Применять правила раскладывания к creditscorecard
данные объектов, или к новому набору данных, используют bindata
.
выполняет автоматическое раскладывание предикторов, данных в sc
= autobinning(___,Name,Value
)PredictorNames
использование дополнительных аргументов пары "имя-значение". Смотрите аргумент Algorithm
значения имени для описания поддерживаемых алгоритмов раскладывания.
Автоматическое раскладывание находит карты раскладывания или правила к числовым данным интервала и сгруппировать категории категориальных данных. Правила раскладывания хранятся в creditscorecard
объект. Применять правила раскладывания к creditscorecard
данные объектов, или к новому набору данных, используют bindata
.
Создайте creditscorecard
объект с помощью CreditCardData.mat
файл, чтобы загрузить данные (использующий набор данных от Refaat 2011).
load CreditCardData sc = creditscorecard(data,'IDVar','CustID');
Выполните автоматическое раскладывание с помощью опций по умолчанию. По умолчанию, autobinning
интервалы все предикторы и использование Monotone
алгоритм.
sc = autobinning(sc);
Используйте bininfo
отобразить сгруппированные данные для предиктора CustAge
.
bi = bininfo(sc, 'CustAge')
bi=8×6 table
Bin Good Bad Odds WOE InfoValue
_____________ ____ ___ ______ _________ _________
{'[-Inf,33)'} 70 53 1.3208 -0.42622 0.019746
{'[33,37)' } 64 47 1.3617 -0.39568 0.015308
{'[37,40)' } 73 47 1.5532 -0.26411 0.0072573
{'[40,46)' } 174 94 1.8511 -0.088658 0.001781
{'[46,48)' } 61 25 2.44 0.18758 0.0024372
{'[48,58)' } 263 105 2.5048 0.21378 0.013476
{'[58,Inf]' } 98 26 3.7692 0.62245 0.0352
{'Totals' } 803 397 2.0227 NaN 0.095205
Используйте plotbins
чтобы отобразить гистограмму и WOE изгибают для предиктора CustAge
.
plotbins(sc,'CustAge')
Создайте creditscorecard
объект с помощью CreditCardData.mat
файл, чтобы загрузить data
(использование набора данных от Refaat 2011).
load CreditCardData
sc = creditscorecard(data);
Выполните автоматическое раскладывание для предиктора CustIncome
использование опций по умолчанию. По умолчанию, autobinning
использует Monotone
алгоритм.
sc = autobinning(sc,'CustIncome');
Используйте bininfo
отобразить сгруппированные данные.
bi = bininfo(sc, 'CustIncome')
bi=8×6 table
Bin Good Bad Odds WOE InfoValue
_________________ ____ ___ _______ _________ __________
{'[-Inf,29000)' } 53 58 0.91379 -0.79457 0.06364
{'[29000,33000)'} 74 49 1.5102 -0.29217 0.0091366
{'[33000,35000)'} 68 36 1.8889 -0.06843 0.00041042
{'[35000,40000)'} 193 98 1.9694 -0.026696 0.00017359
{'[40000,42000)'} 68 34 2 -0.011271 1.0819e-05
{'[42000,47000)'} 164 66 2.4848 0.20579 0.0078175
{'[47000,Inf]' } 183 56 3.2679 0.47972 0.041657
{'Totals' } 803 397 2.0227 NaN 0.12285
Создайте creditscorecard
объект с помощью CreditCardData.mat
файл, чтобы загрузить data
(использование набора данных от Refaat 2011).
load CreditCardData
sc = creditscorecard(data);
Выполните автоматическое раскладывание для предиктора CustIncome
использование Monotone
алгоритм с начальным количеством набора интервалов к 20. Этот пример явным образом устанавливает обоих Algorithm
и AlgorithmOptions
аргументы значения имени.
AlgoOptions = {'InitialNumBins',20}; sc = autobinning(sc,'CustIncome','Algorithm','Monotone','AlgorithmOptions',... AlgoOptions);
Используйте bininfo
отобразить сгруппированные данные. Здесь, точки разделения, которые разграничивают интервалы, также отображены.
[bi,cp] = bininfo(sc,'CustIncome')
bi=11×6 table
Bin Good Bad Odds WOE InfoValue
_________________ ____ ___ _______ _________ __________
{'[-Inf,19000)' } 2 3 0.66667 -1.1099 0.0056227
{'[19000,29000)'} 51 55 0.92727 -0.77993 0.058516
{'[29000,31000)'} 29 26 1.1154 -0.59522 0.017486
{'[31000,34000)'} 80 42 1.9048 -0.060061 0.0003704
{'[34000,35000)'} 33 17 1.9412 -0.041124 7.095e-05
{'[35000,40000)'} 193 98 1.9694 -0.026696 0.00017359
{'[40000,42000)'} 68 34 2 -0.011271 1.0819e-05
{'[42000,43000)'} 39 16 2.4375 0.18655 0.001542
{'[43000,47000)'} 125 50 2.5 0.21187 0.0062972
{'[47000,Inf]' } 183 56 3.2679 0.47972 0.041657
{'Totals' } 803 397 2.0227 NaN 0.13175
cp = 9×1
19000
29000
31000
34000
35000
40000
42000
43000
47000
В этом примере показано, как использовать autobinning
Monotone
по умолчанию алгоритм и
AlgorithmOptions
аргументы пары "имя-значение" сопоставлены с Monotone
алгоритм. AlgorithmOptions
для Monotone
алгоритм является тремя параметрами пары "имя-значение": ‘InitialNumBins'
, 'Trend'
, и 'SortCategories'
. 'InitialNumBins'
и 'Trend'
применимы для числовых предикторов и 'Trend'
и 'SortCategories'
применимы для категориальных предикторов.
Создайте creditscorecard
объект с помощью CreditCardData.mat
файл, чтобы загрузить данные (использующий набор данных от Refaat 2011).
load CreditCardData sc = creditscorecard(data,'IDVar','CustID');
Выполните автоматическое раскладывание для числового предиктора CustIncome
использование Monotone
алгоритм с 20 интервалами. Этот пример явным образом устанавливает обоих Algorithm
аргумент и AlgorithmOptions
аргументы значения имени для 'InitialNumBins'
и 'Trend'
.
AlgoOptions = {'InitialNumBins',20,'Trend','Increasing'}; sc = autobinning(sc,'CustIncome','Algorithm','Monotone',... 'AlgorithmOptions',AlgoOptions);
Используйте bininfo
отобразить сгруппированные данные.
bi = bininfo(sc,'CustIncome')
bi=11×6 table
Bin Good Bad Odds WOE InfoValue
_________________ ____ ___ _______ _________ __________
{'[-Inf,19000)' } 2 3 0.66667 -1.1099 0.0056227
{'[19000,29000)'} 51 55 0.92727 -0.77993 0.058516
{'[29000,31000)'} 29 26 1.1154 -0.59522 0.017486
{'[31000,34000)'} 80 42 1.9048 -0.060061 0.0003704
{'[34000,35000)'} 33 17 1.9412 -0.041124 7.095e-05
{'[35000,40000)'} 193 98 1.9694 -0.026696 0.00017359
{'[40000,42000)'} 68 34 2 -0.011271 1.0819e-05
{'[42000,43000)'} 39 16 2.4375 0.18655 0.001542
{'[43000,47000)'} 125 50 2.5 0.21187 0.0062972
{'[47000,Inf]' } 183 56 3.2679 0.47972 0.041657
{'Totals' } 803 397 2.0227 NaN 0.13175
Создайте creditscorecard
объект с помощью CreditCardData.mat
файл, чтобы загрузить data
(использование набора данных от Refaat 2011).
load CreditCardData sc = creditscorecard(data,'IDVar','CustID');
Выполните автоматическое раскладывание для предиктора CustIncome
и CustAge
использование Monotone
по умолчанию алгоритм с
AlgorithmOptions
для InitialNumBins
и Trend
.
AlgoOptions = {'InitialNumBins',20,'Trend','Increasing'}; sc = autobinning(sc,{'CustAge','CustIncome'},'Algorithm','Monotone',... 'AlgorithmOptions',AlgoOptions);
Используйте bininfo
отобразить сгруппированные данные.
bi1 = bininfo(sc, 'CustIncome')
bi1=11×6 table
Bin Good Bad Odds WOE InfoValue
_________________ ____ ___ _______ _________ __________
{'[-Inf,19000)' } 2 3 0.66667 -1.1099 0.0056227
{'[19000,29000)'} 51 55 0.92727 -0.77993 0.058516
{'[29000,31000)'} 29 26 1.1154 -0.59522 0.017486
{'[31000,34000)'} 80 42 1.9048 -0.060061 0.0003704
{'[34000,35000)'} 33 17 1.9412 -0.041124 7.095e-05
{'[35000,40000)'} 193 98 1.9694 -0.026696 0.00017359
{'[40000,42000)'} 68 34 2 -0.011271 1.0819e-05
{'[42000,43000)'} 39 16 2.4375 0.18655 0.001542
{'[43000,47000)'} 125 50 2.5 0.21187 0.0062972
{'[47000,Inf]' } 183 56 3.2679 0.47972 0.041657
{'Totals' } 803 397 2.0227 NaN 0.13175
bi2 = bininfo(sc, 'CustAge')
bi2=8×6 table
Bin Good Bad Odds WOE InfoValue
_____________ ____ ___ ______ _________ __________
{'[-Inf,35)'} 93 76 1.2237 -0.50255 0.038003
{'[35,40)' } 114 71 1.6056 -0.2309 0.0085141
{'[40,42)' } 52 30 1.7333 -0.15437 0.0016687
{'[42,44)' } 58 32 1.8125 -0.10971 0.00091888
{'[44,47)' } 97 51 1.902 -0.061533 0.00047174
{'[47,62)' } 333 130 2.5615 0.23619 0.020605
{'[62,Inf]' } 56 7 8 1.375 0.071647
{'Totals' } 803 397 2.0227 NaN 0.14183
Создайте creditscorecard
объект с помощью CreditCardData.mat
файл, чтобы загрузить data
(использование набора данных от Refaat 2011).
load CreditCardData
sc = creditscorecard(data);
Выполните автоматическое раскладывание для предиктора, который является категориальным предиктором под названием ResStatus
использование опций по умолчанию. По умолчанию, autobinning
использует Monotone
алгоритм.
sc = autobinning(sc,'ResStatus');
Используйте bininfo
отобразить сгруппированные данные.
bi = bininfo(sc, 'ResStatus')
bi=4×6 table
Bin Good Bad Odds WOE InfoValue
______________ ____ ___ ______ _________ _________
{'Tenant' } 307 167 1.8383 -0.095564 0.0036638
{'Home Owner'} 365 177 2.0621 0.019329 0.0001682
{'Other' } 131 53 2.4717 0.20049 0.0059418
{'Totals' } 803 397 2.0227 NaN 0.0097738
В этом примере показано, как изменить данные (только для этого примера), чтобы проиллюстрировать раскладывание категориальные предикторы с помощью Monotone
алгоритм.
Создайте creditscorecard
объект с помощью CreditCardData.mat
файл, чтобы загрузить data
(использование набора данных от Refaat 2011).
load CreditCardData
Добавьте две новых категории и обновление переменной отклика.
newdata = data; rng('default'); %for reproducibility Predictor = 'ResStatus'; Status = newdata.status; NumObs = length(newdata.(Predictor)); Ind1 = randi(NumObs,100,1); Ind2 = randi(NumObs,100,1); newdata.(Predictor)(Ind1) = 'Subtenant'; newdata.(Predictor)(Ind2) = 'CoOwner'; Status(Ind1) = randi(2,100,1)-1; Status(Ind2) = randi(2,100,1)-1; newdata.status = Status;
Обновите creditscorecard
объект с помощью newdata
и постройте интервалы для более позднего сравнения.
scnew = creditscorecard(newdata,'IDVar','CustID'); [bi,cg] = bininfo(scnew,Predictor)
bi=6×6 table
Bin Good Bad Odds WOE InfoValue
______________ ____ ___ ______ ________ _________
{'Home Owner'} 308 154 2 0.092373 0.0032392
{'Tenant' } 264 136 1.9412 0.06252 0.0012907
{'Other' } 109 49 2.2245 0.19875 0.0050386
{'Subtenant' } 42 42 1 -0.60077 0.026813
{'CoOwner' } 52 44 1.1818 -0.43372 0.015802
{'Totals' } 775 425 1.8235 NaN 0.052183
cg=5×2 table
Category BinNumber
______________ _________
{'Home Owner'} 1
{'Tenant' } 2
{'Other' } 3
{'Subtenant' } 4
{'CoOwner' } 5
plotbins(scnew,Predictor)
Выполните автоматическое раскладывание для категориального Predictor
использование Monotone
по умолчанию алгоритм с
AlgorithmOptions
аргументы пары "имя-значение" для 'SortCategories'
и 'Trend'
.
AlgoOptions = {'SortCategories','Goods','Trend','Increasing'}; scnew = autobinning(scnew,Predictor,'Algorithm','Monotone',... 'AlgorithmOptions',AlgoOptions);
Используйте bininfo
отобразить информацию об интервале. Второй выходной параметр 'cg'
получает членство в интервале, которое является номером интервала, которому принадлежит каждая группа.
[bi,cg] = bininfo(scnew,Predictor)
bi=4×6 table
Bin Good Bad Odds WOE InfoValue
__________ ____ ___ ______ ________ _________
{'Group1'} 42 42 1 -0.60077 0.026813
{'Group2'} 52 44 1.1818 -0.43372 0.015802
{'Group3'} 681 339 2.0088 0.096788 0.0078459
{'Totals'} 775 425 1.8235 NaN 0.05046
cg=5×2 table
Category BinNumber
______________ _________
{'Subtenant' } 1
{'CoOwner' } 2
{'Other' } 3
{'Tenant' } 3
{'Home Owner'} 3
Постройте интервалы и сравните с построенным предварительным раскладыванием гистограммы.
plotbins(scnew,Predictor)
Создайте creditscorecard
объект с помощью CreditCardData.mat
файл, чтобы загрузить dataMissing
с отсутствующими значениями.
load CreditCardData.mat
head(dataMissing,5)
ans=5×11 table
CustID CustAge TmAtAddress ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance UtilRate status
______ _______ ___________ ___________ _________ __________ _______ _______ _________ ________ ______
1 53 62 <undefined> Unknown 50000 55 Yes 1055.9 0.22 0
2 61 22 Home Owner Employed 52000 25 Yes 1161.6 0.24 0
3 47 30 Tenant Employed 37000 61 No 877.23 0.29 0
4 NaN 75 Home Owner Employed 53000 20 Yes 157.37 0.08 0
5 68 56 Home Owner Employed 53000 14 Yes 561.84 0.11 0
fprintf('Number of rows: %d\n',height(dataMissing))
Number of rows: 1200
fprintf('Number of missing values CustAge: %d\n',sum(ismissing(dataMissing.CustAge)))
Number of missing values CustAge: 30
fprintf('Number of missing values ResStatus: %d\n',sum(ismissing(dataMissing.ResStatus)))
Number of missing values ResStatus: 40
Используйте creditscorecard
с аргументом 'BinMissingData'
значения имени установите на
true
к интервалу недостающие числовые и категориальные данные в отдельном интервале.
sc = creditscorecard(dataMissing,'BinMissingData',true);
disp(sc)
creditscorecard with properties: GoodLabel: 0 ResponseVar: 'status' WeightsVar: '' VarNames: {1x11 cell} NumericPredictors: {1x7 cell} CategoricalPredictors: {'ResStatus' 'EmpStatus' 'OtherCC'} BinMissingData: 1 IDVar: '' PredictorVars: {1x10 cell} Data: [1200x11 table]
Выполните автоматическое раскладывание с помощью Merge
алгоритм.
sc = autobinning(sc,'Algorithm','Merge');
Отобразите информацию об интервале для числовых данных для 'CustAge'
это включает недостающие данные в отдельный интервал, пометил <missing>
и это - последний интервал. Неважно, какой алгоритм раскладывания используется в autobinning
, алгоритм работает с ненедостающими данными и интервалом для <missing>
числовые значения для предиктора всегда являются последним интервалом.
[bi,cp] = bininfo(sc,'CustAge');
disp(bi)
Bin Good Bad Odds WOE InfoValue _____________ ____ ___ _______ ________ __________ {'[-Inf,32)'} 56 39 1.4359 -0.34263 0.0097643 {'[32,33)' } 13 13 1 -0.70442 0.011663 {'[33,34)' } 9 11 0.81818 -0.90509 0.014934 {'[34,65)' } 677 317 2.1356 0.054351 0.002424 {'[65,Inf]' } 29 6 4.8333 0.87112 0.018295 {'<missing>'} 19 11 1.7273 -0.15787 0.00063885 {'Totals' } 803 397 2.0227 NaN 0.057718
plotbins(sc,'CustAge')
Отобразите информацию об интервале для категориальных данных для 'ResStatus'
это включает недостающие данные в отдельный интервал, пометил <missing>
и это - последний интервал. Неважно, какой алгоритм раскладывания используется в autobinning
, алгоритм работает с ненедостающими данными и интервалом для <missing>
категориальные значения для предиктора всегда являются последним интервалом.
[bi,cg] = bininfo(sc,'ResStatus');
disp(bi)
Bin Good Bad Odds WOE InfoValue _____________ ____ ___ ______ _________ __________ {'Group1' } 648 332 1.9518 -0.035663 0.0010449 {'Group2' } 128 52 2.4615 0.19637 0.0055808 {'<missing>'} 27 13 2.0769 0.026469 2.3248e-05 {'Totals' } 803 397 2.0227 NaN 0.0066489
plotbins(sc,'ResStatus')
Этот пример демонстрирует использование 'Split'
алгоритм с категориальными и числовыми предикторами. Загрузите CreditCardData.mat
набор данных и изменяет так, чтобы он содержал четыре категории для предиктора 'ResStatus'
продемонстрировать, как алгоритм разделения работает.
load CreditCardData.mat x = data.ResStatus; Ind = find(x == 'Tenant'); Nx = length(Ind); x(Ind(1:floor(Nx/3))) = 'Subletter'; data.ResStatus = x;
Создайте creditscorecard
и используйте bininfo
отобразить 'Statistics'
.
sc = creditscorecard(data,'IDVar','CustID'); [bi1,cg1] = bininfo(sc,'ResStatus','Statistics',{'Odds','WOE','InfoValue'}); disp(bi1)
Bin Good Bad Odds WOE InfoValue ______________ ____ ___ ______ _________ __________ {'Home Owner'} 365 177 2.0621 0.019329 0.0001682 {'Tenant' } 204 112 1.8214 -0.1048 0.0029415 {'Other' } 131 53 2.4717 0.20049 0.0059418 {'Subletter' } 103 55 1.8727 -0.077023 0.00079103 {'Totals' } 803 397 2.0227 NaN 0.0098426
disp(cg1)
Category BinNumber ______________ _________ {'Home Owner'} 1 {'Tenant' } 2 {'Other' } 3 {'Subletter' } 4
Используя алгоритм разделения с категориальным предиктором
Примените предварительную сортировку к 'ResStatus'
категория с помощью сортировки значения по умолчанию по 'Odds'
и задайте 'Split'
алгоритм.
sc = autobinning(sc,'ResStatus', 'Algorithm', 'split','AlgorithmOptions',... {'Measure','gini','SortCategories','odds','Tolerance',1e-4}); [bi2,cg2] = bininfo(sc,'ResStatus','Statistics',{'Odds','WOE','InfoValue'}); disp(bi2)
Bin Good Bad Odds WOE InfoValue __________ ____ ___ ______ _________ _________ {'Group1'} 307 167 1.8383 -0.095564 0.0036638 {'Group2'} 365 177 2.0621 0.019329 0.0001682 {'Group3'} 131 53 2.4717 0.20049 0.0059418 {'Totals'} 803 397 2.0227 NaN 0.0097738
disp(cg2)
Category BinNumber ______________ _________ {'Tenant' } 1 {'Subletter' } 1 {'Home Owner'} 2 {'Other' } 3
Используя алгоритм разделения с числовым предиктором
Продемонстрировать разделение для числового предиктора, 'TmAtAddress'
, сначала используйте autobinning
с 'Monotone'
по умолчанию алгоритм.
sc = autobinning(sc,'TmAtAddress'); bi3 = bininfo(sc,'TmAtAddress','Statistics',{'Odds','WOE','InfoValue'}); disp(bi3)
Bin Good Bad Odds WOE InfoValue _____________ ____ ___ ______ _________ __________ {'[-Inf,23)'} 239 129 1.8527 -0.087767 0.0023963 {'[23,83)' } 480 232 2.069 0.02263 0.00030269 {'[83,Inf]' } 84 36 2.3333 0.14288 0.00199 {'Totals' } 803 397 2.0227 NaN 0.004689
Затем используйте autobinning
с 'Split'
алгоритм.
sc = autobinning(sc,'TmAtAddress','Algorithm', 'Split'); bi4 = bininfo(sc,'TmAtAddress','Statistics',{'Odds','WOE','InfoValue'}); disp(bi4)
Bin Good Bad Odds WOE InfoValue ____________ ____ ___ _______ _________ __________ {'[-Inf,4)'} 20 12 1.6667 -0.19359 0.0010299 {'[4,5)' } 4 7 0.57143 -1.264 0.015991 {'[5,23)' } 215 110 1.9545 -0.034261 0.00031973 {'[23,33)' } 130 39 3.3333 0.49955 0.0318 {'[33,Inf]'} 434 229 1.8952 -0.065096 0.0023664 {'Totals' } 803 397 2.0227 NaN 0.051507
Загрузите CreditCardData.mat
набор данных. Этот пример демонстрирует использование 'Merge'
алгоритм с категориальными и числовыми предикторами.
load CreditCardData.mat
Используя алгоритм слияния с категориальным предиктором
Чтобы объединить категориальный предиктор, создайте creditscorecard
использование сортировки значения по умолчанию по 'Odds'
и затем используйте bininfo
на категориальном предикторе 'ResStatus'
.
sc = creditscorecard(data,'IDVar','CustID'); [bi1,cg1] = bininfo(sc,'ResStatus','Statistics',{'Odds','WOE','InfoValue'}); disp(bi1);
Bin Good Bad Odds WOE InfoValue ______________ ____ ___ ______ _________ _________ {'Home Owner'} 365 177 2.0621 0.019329 0.0001682 {'Tenant' } 307 167 1.8383 -0.095564 0.0036638 {'Other' } 131 53 2.4717 0.20049 0.0059418 {'Totals' } 803 397 2.0227 NaN 0.0097738
disp(cg1);
Category BinNumber ______________ _________ {'Home Owner'} 1 {'Tenant' } 2 {'Other' } 3
Используйте autobinning
и задайте 'Merge'
алгоритм.
sc = autobinning(sc,'ResStatus','Algorithm', 'Merge'); [bi2,cg2] = bininfo(sc,'ResStatus','Statistics',{'Odds','WOE','InfoValue'}); disp(bi2)
Bin Good Bad Odds WOE InfoValue __________ ____ ___ ______ _________ _________ {'Group1'} 672 344 1.9535 -0.034802 0.0010314 {'Group2'} 131 53 2.4717 0.20049 0.0059418 {'Totals'} 803 397 2.0227 NaN 0.0069732
disp(cg2)
Category BinNumber ______________ _________ {'Tenant' } 1 {'Home Owner'} 1 {'Other' } 2
Используя алгоритм слияния с числовым предиктором
Продемонстрировать слияние для числового предиктора, 'TmAtAddress'
, сначала используйте autobinning
с 'Monotone'
по умолчанию алгоритм.
sc = autobinning(sc,'TmAtAddress'); bi3 = bininfo(sc,'TmAtAddress','Statistics',{'Odds','WOE','InfoValue'}); disp(bi3)
Bin Good Bad Odds WOE InfoValue _____________ ____ ___ ______ _________ __________ {'[-Inf,23)'} 239 129 1.8527 -0.087767 0.0023963 {'[23,83)' } 480 232 2.069 0.02263 0.00030269 {'[83,Inf]' } 84 36 2.3333 0.14288 0.00199 {'Totals' } 803 397 2.0227 NaN 0.004689
Затем используйте autobinning
с 'Merge'
алгоритм.
sc = autobinning(sc,'TmAtAddress','Algorithm', 'Merge'); bi4 = bininfo(sc,'TmAtAddress','Statistics',{'Odds','WOE','InfoValue'}); disp(bi4)
Bin Good Bad Odds WOE InfoValue _____________ ____ ___ _______ _________ __________ {'[-Inf,28)'} 303 152 1.9934 -0.014566 8.0646e-05 {'[28,30)' } 27 2 13.5 1.8983 0.054264 {'[30,98)' } 428 216 1.9815 -0.020574 0.00022794 {'[98,106)' } 11 13 0.84615 -0.87147 0.016599 {'[106,Inf]'} 34 14 2.4286 0.18288 0.0012942 {'Totals' } 803 397 2.0227 NaN 0.072466
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'
разделение
, 'Merge'
, 'EqualFrequency'
, 'EqualWidth'
Выбор алгоритма в виде разделенной запятой пары, состоящей из 'Algorithm'
и вектор символов, указывающий, который алгоритм использовать. Тот же алгоритм используется для всех предикторов в PredictorNames
. Возможные значения:
'Monotone'
— Монотонный смежный алгоритм объединения (MAPA) (по умолчанию), также известный как Монотонность наибольшего правдоподобия крупный классификатор (MLMCC). Контролируемый оптимальный алгоритм раскладывания, который стремится находить интервалы с монотонным трендом Веса доказательства (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'
, OptionValue }
для Algorithm
опцииОпции алгоритма для выбранного Algorithm
В виде разделенной запятой пары, состоящей из 'AlgorithmOptions'
и массив ячеек. Возможные значения:
Для Monotone
алгоритм:
{
'InitialNumBins',n
}
— Начальный номер (n) интервалов (значение по умолчанию равняется 10). 'InitialNumBins'
должно быть целое число> 2
. Используемый для числовых предикторов только.
{'Trend','TrendOption'}
— Определяет, как ли Вес доказательства (WOE) монотонный тренд, ожидают, увеличится или уменьшится. Значения для 'TrendOption'
:
'Auto'
— (Значение по умолчанию) Автоматически определяет, увеличивается ли тренд WOE или уменьшается.
'Increasing'
— Ищите увеличивающийся тренд WOE.
'Decreasing'
— Ищите уменьшающийся тренд WOE.
Значение дополнительного входного параметра 'Trend'
не обязательно отражает ту из получившейся кривой WOE. Параметр 'Trend'
говорит алгоритму “искать” увеличение или уменьшение тренда, но результат не может показать желаемый тренд. Например, алгоритм не может найти уменьшающийся тренд, когда данные на самом деле имеют увеличивающийся тренд WOE. Для получения дополнительной информации о 'Trend'
опция, смотрите Монотонность.
{'SortCategories','SortOption'}
— Используемый для категориальных предикторов только. Используемый, чтобы определить, как категории предиктора сортируются как шаг предварительной обработки прежде, чем применить алгоритм. Значения 'SortOption'
:
'Odds'
— (значение по умолчанию) категории сортируется по приказу увеличения значений разногласий, заданных как отношение “Хороших” к “Плохим” наблюдениям, для данной категории.
'Goods'
— Категории сортируются по приказу увеличения значений “Хороших”.
'Bads'
— Категории сортируются по приказу увеличения значений “Плохо”.
'Totals'
— Категории сортируются по приказу увеличения значений общего количества наблюдений (“Хороший” плюс “Плохой”).
'None'
— Никакая сортировка не применяется. Существующий порядок категорий неизменен прежде, чем применить алгоритм. (Существующий порядок категорий виден в категории, группирующей дополнительный выход от bininfo
.)
Для получения дополнительной информации смотрите сортировку Категорий
Для Split
алгоритм:
{'InitialNumBins',n}
— Задает целое число, которое определяет номер (n> 0) интервалов, что предиктор первоначально сгруппирован в перед разделением. Допустимый для числовых предикторов только. Значением по умолчанию является 50
.
{'Measure',MeasureName}
— Задает меру, где 'MeasureName' является одним из following:'Gini'
(значение по умолчанию), 'Chi2'
, 'InfoValue'
, или 'Entropy'
.
{'MinBad',n}
— Задает минимальный номер n (n> =0
) из Bads на интервал. Значением по умолчанию является 1
, избегать чистых интервалов.
{'MaxBad',n}
— Задает максимальное количество n (n> =0
) из Bads на интервал. Значением по умолчанию является Inf
.
{'MinGood',n}
— Задает минимальный номер n (n> =0
) из Товаров на интервал. Значением по умолчанию является 1
, избегать чистых интервалов.
{'MaxGood',n}
— Задает максимальное количество n (n> =0
) из Товаров на интервал. Значением по умолчанию является Inf
.
{'MinCount',n}
— Задает минимальный номер n (n> =0
) из наблюдений на интервал. Значением по умолчанию является 1
, избегать пустых интервалов.
{'MaxCount',n}
— Задает максимальное количество n (n> =0
) из наблюдений на интервал. Значением по умолчанию является Inf
.
{'MaxNumBins',n}
— Задает максимальное количество n (n> =2
) из интервалов, следующих из разделения. Значением по умолчанию является 5
.
{'Tolerance',Tol}
— Задает минимальное усиление (> 0) в информационной функции, во время схемы итерации, чтобы выбрать точку разделения, которая максимизирует усиление. Значением по умолчанию является 1e-4
.
{'Significance',n}
— Порог уровня значения для статистической величины хи-квадрата, выше которой происходит разделение. Значения находятся в интервале [0,1]
. Значением по умолчанию является 0.9
(90%-й уровень значения).
{'SortCategories','SortOption'}
— Используемый для категориальных предикторов только. Используемый, чтобы определить, как категории предиктора сортируются как шаг предварительной обработки прежде, чем применить алгоритм. Значения 'SortOption'
:
'Goods'
— Категории сортируются по приказу увеличения значений “Хороших”.
'Bads'
— Категории сортируются по приказу увеличения значений “Плохо”.
'Odds'
— (значение по умолчанию) категории сортируется по приказу увеличения значений разногласий, заданных как отношение “Хороших” к “Плохим” наблюдениям, для данной категории.
'Totals'
— Категории сортируются по приказу увеличения значений общего количества наблюдений (“Хороший” плюс “Плохой”).
'None'
— Никакая сортировка не применяется. Существующий порядок категорий неизменен прежде, чем применить алгоритм. (Существующий порядок категорий виден в категории, группирующей дополнительный выход от bininfo
.)
Для получения дополнительной информации смотрите сортировку Категорий
Для Merge
алгоритм:
{'InitialNumBins',n}
— Задает целое число, которое определяет номер (n> 0) интервалов, что предиктор первоначально сгруппирован в перед слиянием. Допустимый для числовых предикторов только. Значением по умолчанию является 50
.
{'Measure',MeasureName}
— Задает меру, где 'MeasureName' является одним из following:'Chi2'
(значение по умолчанию), 'Gini'
, 'InfoValue'
, или 'Entropy'
.
{'MinNumBins',n}
— Задает минимальный номер n (n> =2
) из интервалов тот результат слияния. Значением по умолчанию является 2
.
{'MaxNumBins',n}
— Задает максимальное количество n (n> =2
) из интервалов тот результат слияния. Значением по умолчанию является 5
.
{'Tolerance',n}
— Задает минимальный порог, ниже которого слияние происходит для информационного значения и энтропийной статистики. Допустимые значения находятся в интервале (0.1)
. Значением по умолчанию является 1e-3
.
{'Significance',n}
— Порог уровня значения для статистической величины хи-квадрата, ниже которой происходит слияние. Значения находятся в интервале [0,1]
. Значением по умолчанию является 0.9
(90%-й уровень значения).
{'SortCategories','SortOption'}
— Используемый для категориальных предикторов только. Используемый, чтобы определить, как категории предиктора сортируются как шаг предварительной обработки прежде, чем применить алгоритм. Значения 'SortOption'
:
'Goods'
— Категории сортируются по приказу увеличения значений “Хороших”.
'Bads'
— Категории сортируются по приказу увеличения значений “Плохо”.
'Odds'
— (значение по умолчанию) категории сортируется по приказу увеличения значений разногласий, заданных как отношение “Хороших” к “Плохим” наблюдениям, для данной категории.
'Totals'
— Категории сортируются по приказу увеличения значений общего количества наблюдений (“Хороший” плюс “Плохой”).
'None'
— Никакая сортировка не применяется. Существующий порядок категорий неизменен прежде, чем применить алгоритм. (Существующий порядок категорий виден в категории, группирующей дополнительный выход от bininfo
.)
Для получения дополнительной информации смотрите сортировку Категорий
Для EqualFrequency
алгоритм:
{'NumBins',n}
— Задает желаемый номер (n) интервалов. Значением по умолчанию является {'NumBins',5}
и количество интервалов должно быть положительным числом.
{'SortCategories','SortOption'}
— Используемый для категориальных предикторов только. Используемый, чтобы определить, как категории предиктора сортируются как шаг предварительной обработки прежде, чем применить алгоритм. Значения 'SortOption'
:
'Odds'
— (значение по умолчанию) категории сортируется по приказу увеличения значений разногласий, заданных как отношение “Хороших” к “Плохим” наблюдениям, для данной категории.
'Goods'
— Категории сортируются по приказу увеличения значений “Хороших”.
'Bads'
— Категории сортируются по приказу увеличения значений “Плохо”.
'Totals'
— Категории сортируются по приказу увеличения значений общего количества наблюдений (“Хороший” плюс “Плохой”).
'None'
— Никакая сортировка не применяется. Существующий порядок категорий неизменен прежде, чем применить алгоритм. (Существующий порядок категорий виден в категории, группирующей дополнительный выход от bininfo
.)
Для получения дополнительной информации смотрите сортировку Категорий
Для EqualWidth
алгоритм:
{'NumBins',n}
— Задает желаемый номер (n) интервалов. Значением по умолчанию является {'NumBins',5}
и количество интервалов должно быть положительным числом.
{'SortCategories','SortOption'}
— Используемый для категориальных предикторов только. Используемый, чтобы определить, как категории предиктора сортируются как шаг предварительной обработки прежде, чем применить алгоритм. Значения 'SortOption'
:
'Odds'
— (значение по умолчанию) категории сортируется по приказу увеличения значений разногласий, заданных как отношение “Хороших” к “Плохим” наблюдениям, для данной категории.
'Goods'
— Категории сортируются по приказу увеличения значений “Хороших”.
'Bads'
— Категории сортируются по приказу увеличения значений “Плохо”.
'Totals'
— Категории сортируются по приказу увеличения значений общего количества наблюдений (“Хороший” плюс “Плохой”).
'None'
— Никакая сортировка не применяется. Существующий порядок категорий неизменен прежде, чем применить алгоритм. (Существующий порядок категорий виден в категории, группирующей дополнительный выход от bininfo
.)
Для получения дополнительной информации смотрите сортировку Категорий
Пример: sc = autobinning(sc,'CustAge','Algorithm','Monotone','AlgorithmOptions',{'Trend','Increasing'})
Типы данных: cell
'Display'
— Индикатор, чтобы отобразить информацию о состоянии процесса раскладывания в командной строке'Off'
(значение по умолчанию) | вектор символов со значениями 'On'
off
Индикатор, чтобы отобразить информацию о состоянии процесса раскладывания в командной строке в виде разделенной запятой пары, состоящей из 'Display'
и вектор символов со значением 'On'
или 'Off'
.
Типы данных: char
sc
— Модель протокола результатов кредитаcreditscorecard
объектМодель протокола результатов кредита, возвращенная как обновленный creditscorecard
объект, содержащий автоматически решительные карты раскладывания или правила (точки разделения или группировки категории) для одного или нескольких предикторов. Для получения дополнительной информации об использовании creditscorecard
возразите, смотрите creditscorecard
.
Примечание
Если вы ранее использовали modifybins
функционируйте, чтобы вручную изменить интервалы, эти изменения потеряны при выполнении autobinning
потому что все данные автоматически сгруппированы на основе внутренних правил автораскладывания.
'Monotone'
алгоритм является реализацией Монотонного смежного алгоритма объединения (MAPA), также известного как Монотонность наибольшего правдоподобия крупный классификатор (MLMCC); смотрите Андерсона или Томаса в Ссылках.
Предварительная обработка
Во время фазы предварительной обработки предварительная обработка числовых предикторов состоит в применении равного раскладывания частоты с количеством интервалов, определенных 'InitialNumBins'
параметр (значением по умолчанию являются 10 интервалов). Предварительная обработка категориальных предикторов состоит в сортировке категорий согласно 'SortCategories'
критерий (значение по умолчанию должно отсортировать по разногласиям в увеличивающемся порядке). Сортировка не применяется к порядковым предикторам. Смотрите сортировку определения Категорий или описания AlgorithmOptions
опция для 'SortCategories'
для получения дополнительной информации.
Основной алгоритм
Следующий пример иллюстрирует как 'Monotone'
алгоритм прибывает в точки разделения для числовых данных.
Интервал | Хороший | Плохо | Iteration1 | Iteration2 | Iteration3 | Iteration4 |
---|---|---|---|---|---|---|
| 127 | 107 | 0.543 | |||
'[33000,38000)' | 194 | 90 | 0.620 | 0.683 | ||
'[38000,42000)' | 135 | 78 | 0.624 | 0.662 | ||
'[42000,47000)' | 164 | 66 | 0.645 | 0.678 | 0.713 | |
| 183 | 56 | 0.669 | 0.700 | 0.740 | 0.766 |
Первоначально, числовые данные предварительно обрабатываются с равным раскладыванием частоты. В этом примере, для простоты, только используются пять начальных интервалов. Первый столбец указывает на равные области значений интервала частоты, и вторые и третьи столбцы имеют “Хорошие” и “Плохие” количества на интервал. (Количество наблюдений 1,200, таким образом, совершенное равное раскладывание частоты привело бы к пяти интервалам с 240 наблюдениями каждый. В этом случае наблюдения на интервал не соответствуют 240 точно. Это - общая ситуация, когда данные повторили значения.)
Монотонность находит точки останова на основе совокупной пропорции “Хороших” наблюдений. В the'Iteration1'
столбец, первое значение (0.543) является количеством “Хороших” наблюдений в первом интервале (127), разделенный на общее количество наблюдений в интервале (127+107). Второе значение (0.620) является количеством “Хороших” наблюдений в интервалах 1 и 2, разделенный на общее количество наблюдений в интервалах 1 и 2. И т.д. Первая точка разделения установлена, где минимум этого совокупного отношения найден, который находится в первом интервале в этом примере. Это - конец итерации 1.
При запуске со второго интервала (первый интервал после местоположения минимального значения в предыдущей итерации), совокупные пропорции “Хороших” наблюдений вычисляются снова. Вторая точка разделения установлена, где минимум этого совокупного отношения найден. В этом случае это, оказывается, находится в интервале номер 3, поэтому интервалы 2 и 3 объединены.
Алгоритм продолжает тот же путь к еще двум итерациям. В этом конкретном примере в конце это только объединяет интервалы 2 и 3. Итоговое раскладывание имеет четыре интервала с точками разделения в 33 000, 42,000, и 47,000.
Для категориальных данных единственная разница - то, что шаг предварительной обработки состоит в переупорядочении категорий. Рассмотрите следующие категориальные данные:
Интервал | Хороший | Плохо | Разногласия |
---|---|---|---|
| 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 |
В этом случае Монотонный алгоритм не объединил бы категорий. Единственная разница, по сравнению с данными перед применением алгоритма, то, что категории теперь сортируются по 'Odds'
.
И в числовых и в категориальных примерах выше, неявный 'Trend'
выбором является 'Increasing'
. (См. описание AlgorithmOptions
опция для 'Monotone'
'Trend'
опция.), Если вы устанавливаете тренд на 'Decreasing'
, алгоритм ищет максимум (вместо минимума) совокупные отношения, чтобы определить точки разделения. В этом случае, в итерации 1, максимум был бы в последнем интервале, который будет подразумевать, что все интервалы должны быть объединены в один интервал. Раскладывание в один интервал является общей суммой убытков информации и не имеет никакого практического применения. Поэтому, когда выбранный тренд приводит к одному интервалу, Монотонная реализация отклоняет его, и алгоритм возвращает интервалы, найденные после шага предварительной обработки. Это состояние является начальным равным раскладыванием частоты для числовых данных и отсортированными категориями для категориальных данных. Реализация Монотонного алгоритма значением по умолчанию использует эвристику, чтобы идентифицировать тренд ('Auto'
опция для 'Trend'
).
Split является контролируемым автоматическим алгоритмом раскладывания, где мера используется, чтобы разделить данные в блоки. Поддерживаемыми мерами является gini
, chi2
, infovalue
, и entropy
.
Внутренне, алгоритм разделения продолжает можно следующим образом:
Все категории объединены в один интервал.
В первой итерации все потенциальные индексы точки разделения тестируются, чтобы видеть, какой приводит к максимальному увеличению информационной функции (Gini
, InfoValue
, Entropy
, или Chi2
). Та точка разделения затем выбрана, и интервал разделен.
Та же процедура повторена для следующих подынтервалов.
Алгоритм останавливается, когда максимальное количество интервалов достигнуто или когда разделение не приводит ни к какому дополнительному изменению в информационной функции изменения.
Следующая таблица для категориального предиктора обобщает значения функции изменения в каждой итерации. В этом примере, 'Gini'
предпочтительная мера, такой, что цель состоит в том, чтобы видеть уменьшение меры 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 | |
Общий Gini | 0.442765 | 0.442102 | 0.441822 | |||||
Относительное изменение | 0 | 0.001498 | 0.002128 |
Относительным изменением в итерации i является относительно меры Gini целых интервалов в итерации i-1. Конечный результат соответствует этому от последней итерации, которая, в этом примере, является итерацией 2.
Следующая таблица для числового предиктора обобщает значения функции изменения в каждой итерации. В этом примере, 'Gini'
предпочтительная мера, такой, что цель состоит в том, чтобы видеть уменьшение меры Gini в каждой итерации. Поскольку большинство числовых предикторов в наборах данных содержит много интервалов, существует шаг предварительной обработки, где данные предсгруппированы в 50 интервалов равной частоты. Это делает пул допустимых точек разделения, чтобы выбрать из для разделения меньшего и более управляемого.
Итерация 0 номеров интервала | Член | Gini | Итерация 1 номер интервала | Gini | Итерация 2 номера интервала | Gini | Итерация 3 номера интервала | Gini |
---|---|---|---|---|---|---|---|---|
1 | '21'
| '[-Inf,47]' | 0.473897 | '[-Inf,47]' | 0.473897 | '[-Inf,35]' | 0.494941 | |
1 | '22'
| '[47,Inf]' | 0.385238 | '[47,61]'
| 0.407072 | '[35, 47]'
| 0.463201 | |
1 | '23'
| '[61,Inf]' | 0.208795 | '[47, 61]'
| 0.407072 | |||
1 | '74'
| 0 | '[61,Inf]' | 0.208795 | ||||
Общий Gini | 0.442765 | 0.435035 | 0.432048 | 0.430511 | ||||
Относительное изменение | 0 | 0.01746 | 0.006867 | 0.0356 |
Получившееся разделение должно быть таково, что информационная функция (содержимое) увеличивается. По сути, лучшее разделение является тем, которое приводит к максимальному информационному усилению. Информационные поддерживаемые функции:
Gini: Каждое разделение приводит к увеличению Отношения Gini, заданного как:
G_r = 1- G_hat/G_p
G_p
мера Gini родительского узла, то есть, данных интервалов/категорий до разделения. G_hat
взвешенная мера Gini для текущего разделения:
G_hat = Sum((nj/N) * Gini(j), j=1..m)
где
nj
общее количество наблюдений в j th интервал.
N
общее количество наблюдений в наборе данных.
m
количество разделений для данной переменной.
Gini(j)
мера Gini для j th интервал.
Мера по Gini для разделения/узла j:
Gini(j) = 1 - (Gj^2+Bj^2) / (nj)^2
Gj
, Bj
= Количество Goods и Bads для интервала j.InfoValue
: Информационное значение для каждого разделения приводит к увеличению общей информации. Разделение, которое сохраняется, является тем, которое приводит к максимальному усилению в приемлемом допуске усиления. Информационное значение (IV) для заданного наблюдения j задано как:
IV = sum( (pG_i-pB_i) * log(pG_i/pB_i), i=1..n)
pG_i
распределение Товаров при наблюдении i
, это - Goods(i)/Total_Goods
.
pB_i
распределение Bads при наблюдении i
, это - Bads(i)/Total_Bads
.
n
общее количество интервалов.
Entropy
: Каждое разделение приводит к уменьшению в энтропийном отклонении, заданном как:
E = -sum(ni * Ei, i=1..n)
где
ni
общий счет для интервала i
, это - (ni = Gi + Bi)
.
Ei
энтропия для строки (или интервал) i
, заданный как:
Ei = -sum(Gi*log2(Gi/ni) + Bi*log2(Bi/ni))/N, i=1..n
Chi2
: Chi2 вычисляется попарно для каждой пары интервалов и измеряет статистическую разницу между двумя группами. Разделение выбрано в точке (точка разделения или индексация категории), где максимальное значение Chi2:
Chi2 = sum(sum((Aij - Eij)^2/Eij , j=1..k), i=m,m+1)
где
m
принимает значения от 1 ... n-1
, где n
количество интервалов.
k
количество классов. Здесь k = 2
для (Товары, Bads).
Aij
количество наблюдений в интервале i
J
класс th.
Eij
ожидаемая частота Aij
, который равен (Ri*Cj)/N
.
Ri
количество наблюдений в интервале i
, который равен sum(Aij, j=1..k)
.
Cj
количество наблюдений в j
класс th, который равен sum(Aij, I = m,m+1)
.
N
общее количество наблюдений, которое равно sum(Cj, j=1..k)
.
Chi2
измерьтесь для целой выборки (в противоположность попарному Chi2
измерьтесь для смежных интервалов):
Chi2 = sum(sum((Aij - Eij)^2/Eij , j=1..k), i=1..n)
Merge является контролируемым автоматическим алгоритмом раскладывания, где мера используется, чтобы объединить интервалы в блоки. Поддерживаемыми мерами является chi2
, gini
, infovalue
, и entropy
.
Внутренне, алгоритм слияния продолжает можно следующим образом:
Все категории находятся первоначально в отдельных интервалах.
Пользователь выбрал информационную функцию (Chi2
, Gini
, InfoValue
или Entropy
) вычисляется для любой пары смежных интервалов.
В каждой итерации объединена пара с самым маленьким информационным изменением, измеренным выбранной информационной функцией.
Слияние продолжается до также:
Все попарные информационные значения больше порога, установленного уровнем значения, или относительное изменение меньше, чем допуск.
Если в конце, количество интервалов все еще больше MaxNumBins
позволенный, слияние обеспечено, пока нет в большей части MaxNumBins
интервалы. Точно так же объединяющие остановки, когда существует только MinNumBins
интервалы.
Поскольку категориальные, исходные интервалы/категории предварительно сортируются согласно сортировке набора вариантов пользователем. Для числовых данных данные предварительно обрабатываются, чтобы получить IntialNumBins
интервалы равной частоты перед алгоритмом слияния запускаются.
Следующая таблица для категориального предиктора обобщает значения функции изменения в каждой итерации. В этом примере, 'Chi2'
предпочтительная мера. Сортировка значения по умолчанию по Odds
применяется как шаг предварительной обработки. 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 вычисляется попарно для каждой пары интервалов и измеряет статистическую разницу между двумя группами. Слияние выбрано в точке (точка разделения или индексация категории), где максимальное значение Chi2:
Chi2 = sum(sum((Aij - Eij)^2/Eij , j=1..k), i=m,m+1)
где
m
принимает значения от 1 ... n-1
, и n
количество интервалов.
k
количество классов. Здесь k = 2
для (Товары, Bads).
Aij
количество наблюдений в интервале i
J
класс th.
Eij
ожидаемая частота Aij
, который равен (Ri*Cj)/N
.
Ri
количество наблюдений в интервале i
, который равен sum(Aij, j=1..k)
.
Cj
количество наблюдений в j
класс th, который равен sum(Aij, I = m,m+1)
.
N
общее количество наблюдений, которое равно sum(Cj, j=1..k)
.
Chi2
измерьтесь для целой выборки (в противоположность попарному Chi2
измерьтесь для смежных интервалов):
Chi2 = sum(sum((Aij - Eij)^2/Eij , j=1..k), i=1..n)
Gini: Каждое слияние приводит к уменьшению в Отношении Gini, заданном как:
G_r = 1- G_hat/G_p
G_p
мера Gini родительского узла, то есть, данных интервалов/категорий до слияния. G_hat
взвешенная мера Gini для текущего слияния:
G_hat = Sum((nj/N) * Gini(j), j=1..m)
где
nj
общее количество наблюдений в j th интервал.
N
общее количество наблюдений в наборе данных.
m
количество слияний для данной переменной.
Gini(j)
мера Gini для j th интервал.
Мера по Gini для слияния/узла j:
Gini(j) = 1 - (Gj^2+Bj^2) / (nj)^2
Gj
, Bj
= Количество Goods и Bads для интервала j.InfoValue
: Информационное значение для каждого слияния приведет к уменьшению в общей информации. Слияние, которое сохраняется, является тем, которое приводит к минимальному усилению в приемлемом допуске усиления. Информационное значение (IV) для заданного наблюдения j задано как:
IV = sum( (pG_i-pB_i) * log(pG_i/pB_i), i=1..n)
pG_i
распределение Товаров при наблюдении i
, это - Goods(i)/Total_Goods
.
pB_i
распределение Bads при наблюдении i
, это - Bads(i)/Total_Bads
.
n
общее количество интервалов.
Entropy
: Каждое слияние приводит к увеличению энтропийного отклонения, заданного как:
E = -sum(ni * Ei, i=1..n)
где
ni
общий счет для интервала i
, это - (ni = Gi + Bi)
.
Ei
энтропия для строки (или интервал) i
, заданный как:
Ei = -sum(Gi*log2(Gi/ni) + Bi*log2(Bi/ni))/N, i=1..n
Примечание
При использовании Алгоритма слияния, если существуют чистые интервалы (интервалы, которые имеют любое нулевое количество Goods
или нулевое количество Bads
), статистические данные, такие как информационное Значение и Энтропия имеют неличные значения. С учетом этого, сдвига частоты .5
применяется для вычисления различной статистики каждый раз, когда алгоритм находит чистые интервалы.
Безнадзорный алгоритм, который делит данные на предопределенное количество интервалов, которые содержат приблизительно то же количество наблюдений.
EqualFrequency
задан как:
Позвольте v[1], v[2]..., v [N] быть отсортированным списком различных значений или категорий, наблюдаемых в данных. Позвольте f [i] быть частотой v [i]. Позвольте F [k] = f[1] +... +f [k] быть совокупной суммой частот до k th отсортированное значение. Затем F [N] совпадает с общим количеством наблюдений.
Задайте AvgFreq
= F [N] / NumBins, который является идеальной средней частотой на интервал после раскладывания. n th индекс точки разделения является индексом k, таким образом что abs расстояния (F [k] - n *AvgFreq
) минимизирован.
Это правило пытается совпадать с совокупной частотой до n th интервал. Если одно значение содержит слишком много наблюдений, равные интервалы частоты не возможны, и вышеупомянутое правило дает к меньше, чем общие интервалы NumBins. В этом случае алгоритм определяет интервалы NumBins путем разбивания интервалов в порядке, в котором были созданы интервалы.
Предварительная обработка категориальных предикторов состоит в сортировке категорий согласно 'SortCategories'
критерий (значение по умолчанию должно отсортировать по разногласиям в увеличивающемся порядке). Сортировка не применяется к порядковым предикторам. Смотрите сортировку определения Категорий или описания AlgorithmOptions
опция для 'SortCategories'
для получения дополнительной информации.
Безнадзорный алгоритм, который делит область значений значений в области переменного предиктора в предопределенное количество интервалов “равной ширины”. Для числовых данных ширина измеряется как расстояние между границами интервала. Для категориальных данных ширина измеряется как количество категорий в интервале.
EqualWidth
опция задана как:
Для числовых данных, если MinValue
и MaxValue
минимальные и максимальные значения данных, затем
Width = (MaxValue - MinValue)/NumBins
CutPoints
установлены в MinValue
+ Ширина, MinValue
+ 2*Width... MaxValue
width. Если MinValue
или MaxValue
не были заданы с помощью modifybins
функция, 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 |
Эти три алгоритма только объединяют смежные интервалы, таким образом, начальный порядок категорий имеет значение для итогового раскладывания. 'None'
опция для 'SortCategories'
оставил бы исходную таблицу без изменений. Для описания поддерживаемых критериев сортировки см. описание AlgorithmOptions
опция для 'SortCategories'
.
После конструкции протокола результатов, начальный порядок категорий, прежде чем любой алгоритм или любые модификации раскладывания применяются, порядок, показанный в первом выходе bininfo
. Если интервалы были изменены (любой вручную с modifybins
или автоматически с autobinning
), используйте дополнительный выход (cg
, 'category grouping'
) от bininfo
получить текущий порядок категорий.
'SortCategories'
опция не оказывает влияния на категориальные предикторы для который 'Ordinal'
параметр устанавливается на истинный (см. 'Ordinal'
введите параметр в категориальных массивах MATLAB® для categorical
. Порядковые данные имеют естественный порядок, который соблюдается на шаге предварительной обработки алгоритмов путем оставления порядка без изменений категорий. Только категориальные предикторы, чей 'Ordinal'
параметр является ложью (опция по умолчанию), подвергаются переупорядочению категорий согласно 'SortCategories'
критерий.
autobinning
с ВесамиКогда веса наблюдения заданы с помощью дополнительного WeightsVar
аргумент при создании creditscorecard
объект, вместо того, чтобы считать строки, которые хороши или плохи в каждом интервале, autobinning
функция накапливает вес строк, которые хороши или плохи в каждом интервале.
“Частоты”, о которых сообщают, больше не являются основным “количеством” строк, но “совокупным весом” строк, которые хороши или плохи и падение конкретного интервала. Если эти “взвешенные частоты” известны, вся другая соответствующая статистика (Good
, Bad
, Odds
, WOE
, и InfoValue
) вычисляются с обычными формулами. Для получения дополнительной информации см., что Протокол результатов Кредита Моделирует Используя Веса Наблюдения.
[1] Андерсон, R. Инструментарий рейтинга кредитоспособности. Издательство Оксфордского университета, 2007.
[2] Кербер, R. "ChiMerge: дискретизация числовых атрибутов". Продолжения AAAI-92. 1992.
[3] Лю, H., и. al. Анализ данных, Знание и Открытие. Vol 6. Выпуск 4. Октябрь 2002, стр 393-423.
[4] Refaat, M. Подготовка данных для анализа данных Используя SAS. Морган Кофманн, 2006.
[5] Refaat, M. Протоколы результатов Кредитного риска: Разработка и Реализация Используя SAS. lulu.com, 2011.
[6] Томас, L., и др. Рейтинг кредитоспособности и Его Приложения. Общество Промышленной и Прикладной математики, 2002.
bindata
| bininfo
| creditscorecard
| displaypoints
| fitmodel
| formatpoints
| modifybins
| modifypredictor
| plotbins
| predictorinfo
| probdefault
| score
| setmodel
| validatemodel
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.