autobinning

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

Описание

пример

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

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

пример

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

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

пример

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

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

Примеры

свернуть все

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

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

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

sc = autobinning(sc);

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

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

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

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

plotbins(sc,'CustAge')

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

load CreditCardData 
sc = creditscorecard(data);

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

sc = autobinning(sc,'CustIncome');

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

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

    {'[-Inf,29000)' }     53      58    0.91379     -0.79457       0.06364
    {'[29000,33000)'}     74      49     1.5102     -0.29217     0.0091366
    {'[33000,35000)'}     68      36     1.8889     -0.06843    0.00041042
    {'[35000,40000)'}    193      98     1.9694    -0.026696    0.00017359
    {'[40000,42000)'}     68      34          2    -0.011271    1.0819e-05
    {'[42000,47000)'}    164      66     2.4848      0.20579     0.0078175
    {'[47000,Inf]'  }    183      56     3.2679      0.47972      0.041657
    {'Totals'       }    803     397     2.0227          NaN       0.12285

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

load CreditCardData 
sc = creditscorecard(data);

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

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

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

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

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

cp = 9×1

       19000
       29000
       31000
       34000
       35000
       40000
       42000
       43000
       47000

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

load CreditCardData 
sc = creditscorecard(data);

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

sc = autobinning(sc,'ResStatus');

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

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

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

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

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

load CreditCardData

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

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

newdata.status = Status;

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

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

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

cg=5×2 table
       Category       BinNumber
    ______________    _________

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

plotbins(scnew,Predictor)

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

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

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

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

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

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

cg=5×2 table
       Category       BinNumber
    ______________    _________

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

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

plotbins(scnew,Predictor)

Создайте creditscorecard объект с помощью CreditCardData.mat файл, чтобы загрузить dataMissing с отсутствующими значениями.

load CreditCardData.mat 
head(dataMissing,5)
ans=5×11 table
    CustID    CustAge    TmAtAddress     ResStatus     EmpStatus    CustIncome    TmWBank    OtherCC    AMBalance    UtilRate    status
    ______    _______    ___________    ___________    _________    __________    _______    _______    _________    ________    ______

      1          53          62         <undefined>    Unknown        50000         55         Yes       1055.9        0.22        0   
      2          61          22         Home Owner     Employed       52000         25         Yes       1161.6        0.24        0   
      3          47          30         Tenant         Employed       37000         61         No        877.23        0.29        0   
      4         NaN          75         Home Owner     Employed       53000         20         Yes       157.37        0.08        0   
      5          68          56         Home Owner     Employed       53000         14         Yes       561.84        0.11        0   

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

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

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

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

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

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

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

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

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

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

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

    {'Group1'   }    648     332    1.9518    -0.035663     0.0010449
    {'Group2'   }    128      52    2.4615      0.19637     0.0055808
    {'<missing>'}     27      13    2.0769     0.026469    2.3248e-05
    {'Totals'   }    803     397    2.0227          NaN     0.0066489
plotbins(sc,'ResStatus')

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

load CreditCardData.mat

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

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

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

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

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

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

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

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

    {'Tenant'    }        1    
    {'Home Owner'}        1    
    {'Other'     }        2    

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

Выбор алгоритма в виде разделенной запятой пары, состоящей из '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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Примечание

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

Больше о

свернуть все

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

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

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

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

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

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

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

'[-Inf,33000)'

1271070.543   

'[33000,38000)'

194900.6200.683  

'[38000,42000)'

135780.6240.662  

'[42000,47000)'

164660.6450.6780.713 

'[47000,Inf]'

183560.6690.7000.7400.766

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

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

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

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

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

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

'Home Owner'

3651772.062

'Tenant'

3071671.838

'Other'

131532.474

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

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

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

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

Разделение

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

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

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

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

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

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

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

Итерация 0 номеров интервалаЧленGiniИтерация 1 номер интервалаЧленGiniИтерация 2 номера интервалаЧленGini

1

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

1

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

1

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

1

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

Общий Gini

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

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

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

Итерация 0 номеров интервалаЧленGiniИтерация 1 номер интервалаGiniИтерация 2 номера интервалаGiniИтерация 3 номера интервалаGini

1

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

1

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

1

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

1

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

Общий Gini

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

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

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

    G_r = 1- G_hat/G_p

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

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

    где

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

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

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

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

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

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

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

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

    pG_i распределение Товаров при наблюдении i, это - Goods(i)/Total_Goods.

    pB_i распределение Bads при наблюдении i, это - Bads(i)/Total_Bads.

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

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

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

    где

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

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

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

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

    где

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

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

    Aij количество наблюдений в интервале iJкласс th.

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

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

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

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

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

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

Слияние

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

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

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

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

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

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

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

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

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

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

Итерация 0 номеров интервалаЧленChi2Итерация 1 номер интервалаЧленChi2Итерация 2 номера интервалаЧленChi2

1

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

2

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

3

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

4

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

Общий Chi2

 2.573943  2.317717  1.797395

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

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

...

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

Общий Chi2

67.467 67.399  23.198

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

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

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

    где

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

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

    Aij количество наблюдений в интервале iJкласс 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,
и индексы точки разделения набора к округленным значениям Ширины, 2*Width..., NumCats – Ширина, плюс 1.

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки

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

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

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

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

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

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

Введенный в R2014b