exponenta event banner

autobinning

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

Описание

пример

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

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

пример

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

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

пример

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

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

Примеры

свернуть все

Создать creditscorecard с использованием CreditCardData.mat для загрузки данных (с использованием набора данных из Refaat 2011).

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

Выполните автоматическое binning с использованием параметров по умолчанию. По умолчанию 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')

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

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

load CreditCardData 
sc = creditscorecard(data);

Выполнение автоматического binning для предиктора 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);

Выполнение автоматического binning для предиктора 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');

Выполнение автоматического binning для числового предиктора 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');

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

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

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

Использовать bininfo для отображения привязанных данных.

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

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

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

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

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

load CreditCardData 
sc = creditscorecard(data);

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

sc = autobinning(sc,'ResStatus');

Использовать bininfo для отображения привязанных данных.

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

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

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

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

load CreditCardData

Добавьте две новые категории и обновите переменную ответа.

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

newdata.status = Status;

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

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

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

cg=5×2 table
       Category       BinNumber
    ______________    _________

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

plotbins(scnew,Predictor)

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

Выполнить автоматическое binning для категориального 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В этом примере показано использование 'Split' алгоритм с категориальными и числовыми предикторами. Загрузить CreditCardData.mat набор данных и изменить таким образом, чтобы он содержал четыре категории для предиктора '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' - Категории сортируются по порядку возрастания значений «Bad».

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

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

      Дополнительные сведения см. в разделе Сортировка категорий

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

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

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

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

    • {'MaxBad',n} - максимальное число n (n > =0) Бэдов на бункер. Значение по умолчанию: Inf.

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

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

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

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

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

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

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

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

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

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

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

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

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

      Дополнительные сведения см. в разделе Сортировка категорий

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

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

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

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

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

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

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

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

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

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

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

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

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

      Дополнительные сведения см. в разделе Сортировка категорий

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

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

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

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

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

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

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

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

      Дополнительные сведения см. в разделе Сортировка категорий

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

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

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

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

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

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

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

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

      Дополнительные сведения см. в разделе Сортировка категорий

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

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

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

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

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

свернуть все

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

Примечание

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

Подробнее

свернуть все

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

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

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

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

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

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

Мусорное ведроХорошоПлохоIteration1Iteration2Iteration3Iteration4

'[-Inf,33000)'

1271070.543   

'[33000,38000)'

194900.6200.683  

'[38000,42000)'

135780.6240.662  

'[42000,47000)'

164660.6450.6780.713 

'[47000,Inf]'

183560.6690.7000.7400.766

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

Монотон находит точки разрыва на основе кумулятивной доли «хороших» наблюдений. В'Iteration1' столбец, первое значение (0,543) - количество наблюдений «Хорошо» в первом бункере (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

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

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

Разделение

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

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

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

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

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

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

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

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

1

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

1

'Подписьмо' 1'Подписьмо'0.447891'Подписьмо' 

1

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

1

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

Итого Джини

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

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

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

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

1

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

1

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

1

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

1

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

Итого Джини

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

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

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

    G_r = 1- G_hat/G_p

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

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

    где

    nj - общее число наблюдений в jth bin.

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

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

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

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

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

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

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

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

    pB_i - распределение 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
  • Chi2Chi2 вычисляется попарно для каждой пары ячеек и измеряет статистическую разницу между двумя группами. Разделение выбирается в точке (точка отсечения или индексация категории), где максимальное значение Chi2:

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

    где

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

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

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

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

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

    Cj - количество наблюдений в jтретий класс, который равен 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)

Слияние

Слияние - это контролируемый алгоритм автоматического объединения, в котором мера используется для объединения ячеек в ячейки. Поддерживаемые меры: 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 являются:

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

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

    где

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

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

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

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

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

    Cj - количество наблюдений в jтретий класс, который равен 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)

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

    G_r = 1- G_hat/G_p

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

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

    где

    nj - общее число наблюдений в jth bin.

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

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

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

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

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

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

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

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

    pB_i - распределение 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-го отсортированного значения. Тогда F [N] совпадает с общим числом наблюдений.

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

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

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

Одинаковая ширина

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

EqualWidth параметр определяется как:

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

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

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

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

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

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

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

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

После этапа предварительной обработки строки будут отсортированы по 'Odds' и таблица выглядит следующим образом:

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

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

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

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

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

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

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

Ссылки

[1] Андерсон, R. The Credit Скоринг Toolkit. Издательство Оксфордского университета, 2007 год.

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

[3] Лю, Н. и др. al. Интеллектуальный анализ данных, знание и обнаружение. Том 6. Выпуск 4. октябрь 2002 года, стр. 393-423.

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

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

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

Представлен в R2014b