Пример тематического исследования Binning Explorer

Этот пример показывает, как создать протокол результатов кредита с помощью приложения Binning Explorer. Используйте Binning Explorer для интервала данные, постройте сгруппированную информацию о данных и экспортируйте объект creditscorecard. Затем используйте объект creditscorecard с функциями от Financial Toolbox™, чтобы соответствовать модели логистической регрессии, определить счет к данным, определить вероятности значения по умолчанию и подтвердить модель протокола результатов кредита использование трех различных метрик.

Шаг 1. Загрузите протокол результатов кредита data в рабочее пространство MATLAB.

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

load CreditCardData
disp(data(1:10,:))
  CustID    CustAge    TmAtAddress    ResStatus     EmpStatus    CustIncome    TmWBank    OtherCC    AMBalance    UtilRate    status
    ______    _______    ___________    __________    _________    __________    _______    _______    _________    ________    ______

     1        53         62             Tenant        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        50         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     
     6        65         13             Home Owner    Employed     48000         59         Yes        968.18       0.15        0     
     7        34         32             Home Owner    Unknown      32000         26         Yes        717.82       0.02        1     
     8        50         57             Other         Employed     51000         33         No         3041.2       0.13        0     
     9        50         10             Tenant        Unknown      52000         25         Yes        115.56       0.02        1     
    10        49         30             Home Owner    Unknown      53000         23         Yes         718.5       0.17        1     

Шаг 2. Импортируйте data в Binning Explorer.

Откройте Binning Explorer от панели инструментов MATLAB: На вкладке Apps, под Computational Finance, кликают по значку приложения. Также можно ввести binningExplorer в командную строку MATLAB. Для получения дополнительной информации о запуске Binning Explorer из командной строки смотрите, Начинают с командной строки MATLAB Используя Данные или Существующий Объект creditscorecard.

От панели инструментов Binning Explorer выберите Import Data, чтобы открыть окно Import Data.

Под Step 1 выберите data.

Под Step 2, опционально устанавливает Variable Type для каждого из предикторов. По умолчанию последний столбец в данных ('status' в этом примере) установлен в 'Response'. Значение ответа с самым высоким количеством (0 в этом примере) установлено к 'Good'. Все другие переменные рассматриваются предикторами. Однако в этом примере, потому что 'CustID' не является предиктором, устанавливает столбец Variable Type для 'CustID' к Do not include.

Примечание

Если таблица входа MATLAB содержит столбец для weights, от панели Step 2, с помощью столбца Variable Type, кликните по выпадающему, чтобы выбрать Weights. Для получения дополнительной информации об использовании весов наблюдения с объектом creditscorecard см., что Протокол результатов Кредита Моделирует Используя Веса Наблюдения (Financial Toolbox).

Если данные содержат отсутствующие значения от панели Step 2, установите Bin missing data: на Yes. Для получения дополнительной информации о работе с недостающими данными смотрите, Приписывают Моделированию Протокола результатов Отсутствующие значения (Financial Toolbox).

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

Нажмите Import Data, чтобы завершить операцию импорта. Автоматическое раскладывание с помощью выбранного алгоритма применяется ко всем предикторам, когда они импортируются в Binning Explorer.

Интервалы построены и отображены для каждого предиктора. Путем нажатия, чтобы выбрать отдельный график предиктора, детали для того предиктора строят отображение в Bin Information и панелях Predictor Information в нижней части приложения.

Binning Explorer выполняет автоматическое раскладывание для каждой переменной прогноза, с помощью алгоритма 'Monotone' по умолчанию с опциями алгоритма по умолчанию. Монотонный, идеально линейный тренд в Весе доказательства (WOE) часто желателен для протоколов результатов кредита, потому что это переводит в линейные точки для данного предиктора. Тренды WOE визуализируются на графиках для каждого предиктора в Binning Explorer.

Выполните некоторое исследование исходных данных. Справьтесь о статистике предиктора для 'ResStatus' категориальная переменная.

Кликните по графику ResStatus. Панель Bin Information содержит “Хорошие” и “Плохие” частоты и другую статистику интервала, такие как вес доказательства (WOE).

Для числовых данных отображены те же статистические данные. Кликните по графику CustIncome. Bin Information обновляется с информацией о CustIncome.

Шаг 3. Подстройте интервалы с помощью ручного раскладывания в Binning Explorer.

Кликните по графику предиктора CustAge. Заметьте, что интервалы 1 и 2 имеют подобное ГОРЕ, также, как и интервалы 5 и 6.

Чтобы объединить интервалы 1 и 2, от панели инструментов Binning Explorer, нажимают Manual Binning, чтобы открыть выбранный предиктор в новом окне с вкладками. Также дважды кликните график предиктора открыть вкладку Manual Binning. Выберите интервал 1 и 2 для слияния при помощи Ctrl + нажатие кнопки, чтобы мультивыбрать эти интервалы, чтобы отобразиться с синими основами.

На панели инструментов Binning Explorer текстовые поля Edges отображают значения для ребер выбранных интервалов, чтобы объединить.

Нажмите Merge, чтобы закончить объединять интервалы 1 и 2. График предиктора CustAge обновляется для новой информации об интервале и деталей в Bin Information, и панели Predictor Information также обновляются.

Затем, объедините интервалы 4 и 5, потому что у них также есть подобное ГОРЕ.

График предиктора CustAge обновляется с новой информацией об интервале. Детали в Bin Information и панелях Predictor Information также обновляются.

Повторите эту операцию слияния для следующих интервалов, которые имеют подобное ГОРЕ:

  • Для CustIncome, интервалы слияния 3, 4 и 5.

  • Для TmWBank, интервалы слияния 2 и 3.

  • Для AMBalance, интервалы слияния 2 и 3.

Теперь интервалы для всех предикторов имеют близко-к-линейному тренды WOE.

Шаг 4. Экспортируйте объект creditscorecard от Binning Explorer.

После того, как вы завершите свои присвоения раскладывания, с помощью Binning Explorer, нажмите Export и обеспечьте имя объекта creditscorecard. Объект creditscorecard (sc) сохранен в рабочее пространство MATLAB.

Шаг 5. Соответствуйте модели логистической регрессии.

Используйте функцию fitmodel, чтобы соответствовать модели логистической регрессии к данным WOE. fitmodel внутренне интервалы данные тренировки, преобразовывает его в значения WOE, сопоставляет переменную отклика так, чтобы 'Good' был 1 и соответствовал линейной модели логистической регрессии. По умолчанию fitmodel использует пошаговую процедуру, чтобы определить, какие предикторы принадлежат модели.

sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8954, Chi2Stat = 32.545914, PValue = 1.1640961e-08
2. Adding TmWBank, Deviance = 1467.3249, Chi2Stat = 23.570535, PValue = 1.2041739e-06
3. Adding AMBalance, Deviance = 1455.858, Chi2Stat = 11.466846, PValue = 0.00070848829
4. Adding EmpStatus, Deviance = 1447.6148, Chi2Stat = 8.2432677, PValue = 0.0040903428
5. Adding CustAge, Deviance = 1442.06, Chi2Stat = 5.5547849, PValue = 0.018430237
6. Adding ResStatus, Deviance = 1437.9435, Chi2Stat = 4.1164321, PValue = 0.042468555
7. Adding OtherCC, Deviance = 1433.7372, Chi2Stat = 4.2063597, PValue = 0.040272676

Generalized Linear regression model:
    logit(status) ~ 1 + CustAge + ResStatus + EmpStatus + CustIncome + TmWBank + OtherCC + AMBalance
    Distribution = Binomial

Estimated Coefficients:
                   Estimate      SE       tStat       pValue  
                   ________    _______    ______    __________

    (Intercept)     0.7024       0.064    10.975    5.0407e-28
    CustAge        0.61562     0.24783    2.4841      0.012988
    ResStatus       1.3776     0.65266    2.1107      0.034799
    EmpStatus      0.88592     0.29296     3.024     0.0024946
    CustIncome     0.69836     0.21715     3.216     0.0013001
    TmWBank          1.106     0.23266    4.7538    1.9958e-06
    OtherCC         1.0933     0.52911    2.0662      0.038806
    AMBalance       1.0437     0.32292    3.2322     0.0012285


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.42e-16

Шаг 6. Анализ и точки протокола результатов формата.

После подбора кривой логистической модели моменты не масштабированы по умолчанию и наступают непосредственно от комбинации значений WOE и коэффициентов модели. Используйте функцию displaypoints, чтобы обобщить точки протокола результатов.

p1 = displaypoints(sc);
disp(p1)
    Predictors            Bin             Points  
    ____________    __________________    _________

    'CustAge'       '[-Inf,37)'            -0.15314
    'CustAge'       '[37,40)'             -0.062247
    'CustAge'       '[40,46)'              0.045763
    'CustAge'       '[46,58)'               0.22888
    'CustAge'       '[58,Inf]'              0.48354
    'ResStatus'     'Tenant'              -0.031302
    'ResStatus'     'Home Owner'            0.12697
    'ResStatus'     'Other'                 0.37652
    'EmpStatus'     'Unknown'             -0.076369
    'EmpStatus'     'Employed'              0.31456
    'CustIncome'    '[-Inf,29000)'         -0.45455
    'CustIncome'    '[29000,33000)'         -0.1037
    'CustIncome'    '[33000,42000)'        0.077768
    'CustIncome'    '[42000,47000)'         0.24406
    'CustIncome'    '[47000,Inf]'           0.43536
    'TmWBank'       '[-Inf,12)'            -0.18221
    'TmWBank'       '[12,45)'             -0.038279
    'TmWBank'       '[45,71)'               0.39569
    'TmWBank'       '[71,Inf]'              0.95074
    'OtherCC'       'No'                     -0.193
    'OtherCC'       'Yes'                   0.15868
    'AMBalance'     '[-Inf,558.88)'          0.3552
    'AMBalance'     '[558.88,1597.44)'    -0.026797
    'AMBalance'     '[1597.44,Inf]'        -0.21168

Используйте modifybins, чтобы дать интервалам более описательные метки.

sc = modifybins(sc,'CustAge','BinLabels',...
{'Up to 36' '37 to 39' '40 to 45' '46 to 57' '58 and up'});

sc = modifybins(sc,'CustIncome','BinLabels',...
{'Up to 28999' '29000 to 32999' '33000 to 41999' '42000 to 46999' '47000 and up'});

sc = modifybins(sc,'TmWBank','BinLabels',...
{'Up to 11' '12 to 44' '45 to 70' '71 and up'});

sc = modifybins(sc,'AMBalance','BinLabels',...
{'Up to 558.87' '558.88 to 1597.43' '1597.44 and up'});

p1 = displaypoints(sc);
disp(p1)
     Predictors             Bin             Points  
    ____________    ___________________    _________

    'CustAge'       'Up to 36'              -0.15314
    'CustAge'       '37 to 39'             -0.062247
    'CustAge'       '40 to 45'              0.045763
    'CustAge'       '46 to 57'               0.22888
    'CustAge'       '58 and up'              0.48354
    'ResStatus'     'Tenant'               -0.031302
    'ResStatus'     'Home Owner'             0.12697
    'ResStatus'     'Other'                  0.37652
    'EmpStatus'     'Unknown'              -0.076369
    'EmpStatus'     'Employed'               0.31456
    'CustIncome'    'Up to 28999'           -0.45455
    'CustIncome'    '29000 to 32999'         -0.1037
    'CustIncome'    '33000 to 41999'        0.077768
    'CustIncome'    '42000 to 46999'         0.24406
    'CustIncome'    '47000 and up'           0.43536
    'TmWBank'       'Up to 11'              -0.18221
    'TmWBank'       '12 to 44'             -0.038279
    'TmWBank'       '45 to 70'               0.39569
    'TmWBank'       '71 and up'              0.95074
    'OtherCC'       'No'                      -0.193
    'OtherCC'       'Yes'                    0.15868
    'AMBalance'     'Up to 558.87'            0.3552
    'AMBalance'     '558.88 to 1597.43'    -0.026797
    'AMBalance'     '1597.44 and up'        -0.21168

Точки масштабируются и также часто округляются. К раунду и шкале точки, используйте функцию formatpoints. Например, можно установить целевой уровень точек, соответствующих целевому уровню разногласий, и также установить необходимые точки удваивать разногласия (PDO).

TargetPoints = 500;
TargetOdds = 2;
PDO = 50; % Points to double the odds

sc = formatpoints(sc,'PointsOddsAndPDO',[TargetPoints TargetOdds PDO]);
p2 = displaypoints(sc);
disp(p2)
    Predictors             Bin            Points
    ____________    ___________________    ______

    'CustAge'       'Up to 36'             53.239
    'CustAge'       '37 to 39'             59.796
    'CustAge'       '40 to 45'             67.587
    'CustAge'       '46 to 57'             80.796
    'CustAge'       '58 and up'            99.166
    'ResStatus'     'Tenant'               62.028
    'ResStatus'     'Home Owner'           73.445
    'ResStatus'     'Other'                91.446
    'EmpStatus'     'Unknown'              58.777
    'EmpStatus'     'Employed'             86.976
    'CustIncome'    'Up to 28999'          31.497
    'CustIncome'    '29000 to 32999'       56.805
    'CustIncome'    '33000 to 41999'       69.896
    'CustIncome'    '42000 to 46999'       81.891
    'CustIncome'    '47000 and up'          95.69
    'TmWBank'       'Up to 11'             51.142
    'TmWBank'       '12 to 44'             61.524
    'TmWBank'       '45 to 70'             92.829
    'TmWBank'       '71 and up'            132.87
    'OtherCC'       'No'                   50.364
    'OtherCC'       'Yes'                  75.732
    'AMBalance'     'Up to 558.87'         89.908
    'AMBalance'     '558.88 to 1597.43'    62.353
    'AMBalance'     '1597.44 and up'       49.016

Шаг 7. Выиграйте данные.

Используйте функцию score, чтобы вычислить музыку к данным тренировки. Можно также передать дополнительный вход data score, например, данным о валидации. Точки на предиктор для каждого клиента обеспечиваются как дополнительный вывод.

[Scores,Points] = score(sc);
disp(Scores(1:10))
disp(Points(1:10,:))
  528.2044
  554.8861
  505.2406
  564.0717
  554.8861
  586.1904
  441.8755
  515.8125
  524.4553
  508.3169

    CustAge    ResStatus    EmpStatus    CustIncome    TmWBank    OtherCC    AMBalance
    _______    _________    _________    __________    _______    _______    _________

    80.796     62.028       58.777        95.69        92.829     75.732     62.353   
    99.166     73.445       86.976        95.69        61.524     75.732     62.353   
    80.796     62.028       86.976       69.896        92.829     50.364     62.353   
    80.796     73.445       86.976        95.69        61.524     75.732     89.908   
    99.166     73.445       86.976        95.69        61.524     75.732     62.353   
    99.166     73.445       86.976        95.69        92.829     75.732     62.353   
    53.239     73.445       58.777       56.805        61.524     75.732     62.353   
    80.796     91.446       86.976        95.69        61.524     50.364     49.016   
    80.796     62.028       58.777        95.69        61.524     75.732     89.908   
    80.796     73.445       58.777        95.69        61.524     75.732     62.353   

Шаг 8. Вычислите вероятность значения по умолчанию.

Чтобы вычислить вероятность значения по умолчанию, используйте функцию probdefault.

pd = probdefault(sc);

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

ProbGood = 1-pd;
PredictedOdds = ProbGood./pd;

figure
scatter(Scores,PredictedOdds)
title('Predicted Odds vs. Score')
xlabel('Score')
ylabel('Predicted Odds')

hold on

xLimits = xlim;
yLimits = ylim;

% Target points and odds
plot([TargetPoints TargetPoints],[yLimits(1) TargetOdds],'k:')
plot([xLimits(1) TargetPoints],[TargetOdds TargetOdds],'k:')

% Target points plus PDO
plot([TargetPoints+PDO TargetPoints+PDO],[yLimits(1) 2*TargetOdds],'k:')
plot([xLimits(1) TargetPoints+PDO],[2*TargetOdds 2*TargetOdds],'k:')

% Target points minus PDO
plot([TargetPoints-PDO TargetPoints-PDO],[yLimits(1) TargetOdds/2],'k:')
plot([xLimits(1) TargetPoints-PDO],[TargetOdds/2 TargetOdds/2],'k:')

hold off

Шаг 9. Подтвердите модель протокола результатов кредита использование ПРОПИСНОЙ БУКВЫ, ROC и статистической величины Кольмогорова-Смирнова

Поддержка объектов creditscorecard три метода валидации, Совокупный профиль точности (CAP), Рабочая характеристика получателя (ROC) и Кольмогоров-Смирнов (KS) статистическая величина. Для получения дополнительной информации о ПРОПИСНОЙ БУКВЕ ROC и KS, видят validatemodel.

[Stats,T] = validatemodel(sc,'Plot',{'CAP','ROC','KS'});
disp(Stats)
disp(T(1:15,:))
          Measure             Value 
    ______________________    _______

    'Accuracy Ratio'          0.32225
    'Area under ROC curve'    0.66113
    'KS statistic'            0.22324
    'KS score'                 499.18

    Scores    ProbDefault    TrueBads    FalseBads    TrueGoods    FalseGoods    Sensitivity    FalseAlarm      PctObs  
    ______    ___________    ________    _________    _________    __________    ___________    __________    __________

     369.4     0.7535         0          1            802          397                   0      0.0012453     0.00083333
    377.86    0.73107         1          1            802          396           0.0025189      0.0012453      0.0016667
    379.78     0.7258         2          1            802          395           0.0050378      0.0012453         0.0025
    391.81    0.69139         3          1            802          394           0.0075567      0.0012453      0.0033333
    394.77    0.68259         3          2            801          394           0.0075567      0.0024907      0.0041667
    395.78    0.67954         4          2            801          393            0.010076      0.0024907          0.005
    396.95    0.67598         5          2            801          392            0.012594      0.0024907      0.0058333
    398.37    0.67167         6          2            801          391            0.015113      0.0024907      0.0066667
    401.26    0.66276         7          2            801          390            0.017632      0.0024907         0.0075
    403.23    0.65664         8          2            801          389            0.020151      0.0024907      0.0083333
    405.09    0.65081         8          3            800          389            0.020151       0.003736      0.0091667
    405.15    0.65062        11          5            798          386            0.027708      0.0062267       0.013333
    405.37    0.64991        11          6            797          386            0.027708       0.007472       0.014167
    406.18    0.64735        12          6            797          385            0.030227       0.007472          0.015
    407.14    0.64433        13          6            797          384            0.032746       0.007472       0.015833

Смотрите также

| | | | | | | | | | | | | | |

Связанные примеры

Больше о

Внешние веб-сайты