В этом примере показано, как создать кредитную карту показателей с помощью приложения Binning Explorer. Используйте Binning Explorer для хранения данных, вывода на график связанной информации и экспорта creditscorecard объект. Затем используйте creditscorecard объект с функциями из Финансового Toolbox™ для соответствия модели логистической регрессии, определения балла для данных, определения вероятностей дефолта и проверки модели кредитной карты показателей с использованием трех различных метрик.
Шаг 1. Загрузить кредитную карту показателей data в рабочую область MATLAB.
Шаг 3. Выполните тонкую настройку ячеек с помощью ручной настройки в Binning Explorer.
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 data в Binning Explorer.Откройте Binning Explorer на панели инструментов MATLAB: на вкладке Приложения в разделе Вычислительные финансы щелкните значок приложения. Кроме того, можно ввести binningExplorer в командной строке MATLAB. Дополнительные сведения о запуске Binning Explorer из командной строки см. в разделе Запуск из командной строки MATLAB с использованием данных или существующего объекта creditscorecard.
На панели инструментов Binning Explorer выберите Импорт данных, чтобы открыть окно Импорт данных.

В разделе Шаг 1 выберите data.
На шаге 2 дополнительно задайте тип переменной для каждого из предикторов. По умолчанию последний столбец в данных ('status' в этом примере) имеет значение 'Response'. Значение ответа с наибольшим числом (0 в этом примере) имеет значение 'Good'. Все остальные переменные считаются предикторами. Однако в этом примере, потому что 'CustID' не является предиктором, установите столбец Variable Type для 'CustID' не включать.
Примечание
Если входная таблица MATLAB содержит столбец для weights, на панели 2 шага, используя столбец Тип переменной (Variable Type), щелкните раскрывающийся список, чтобы выбрать Вес (Weights). Для получения дополнительной информации об использовании весов наблюдения с creditscorecard см. Моделирование кредитной карты показателей с использованием весов наблюдения.
Если данные содержат отсутствующие значения, на панели Шаг 2 установите значение Bin missing data: Yes. Для получения дополнительной информации о работе с отсутствующими данными см. Моделирование кредитной карты показателей с отсутствующими значениями.
В разделе Шаг 3 оставьте Monotone в качестве алгоритма начального объединения по умолчанию.
Щелкните Импорт данных (Import Data), чтобы завершить операцию импорта. Автоматическое связывание с использованием выбранного алгоритма применяется ко всем предикторам при их импорте в Binning Explorer.
Ячейки наносятся на график и отображаются для каждого предсказателя. Щелкнув, чтобы выбрать отдельный график предиктора на панели Обзор, подробности для этого графика предиктора отображаются в главной панели и на панелях Информация о корзине и Информация о предикторе в нижней части приложения.

Binning Explorer выполняет автоматическое binning для каждой переменной предиктора, используя значение по умолчанию 'Monotone' с параметрами алгоритма по умолчанию. Монотонная, в идеале линейная тенденция в весе доказательств (WOE) часто желательна для кредитных карт показателей, потому что это переводится в линейные точки для данного предиктора. Тенденции WOE визуализируются на графиках для каждого предиктора в Binning Explorer.
Выполните некоторые первоначальные исследования данных. Запрос о статистике предикторов для 'ResStatus' категориальная переменная.
Щелкните на графике ResStatus. Панель Bin Information содержит частоты «Хорошо» и «Плохо» и другую статистику ячеек, такую как вес доказательств (WOE).

Для числовых данных отображается та же статистика. Щелкните график CustIncome. Информация о ячейке обновляется с помощью информации о CustIncome.

Щелкните график предиктора CustAge. Обратите внимание, что ячейки 1 и 2 имеют аналогичные WOE, как и ячейки 5 и 6.

Чтобы объединить ячейки 1 и 2, на главной панели нажмите Ctrl + щелкните или Shift + щелкните, чтобы выбрать несколько ячеек 1 и 2 для отображения с синими контурами для объединения.

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

Щелкните Объединить (Merge), чтобы завершить объединение ячеек 1 и 2. График предиктора CustAge обновляется для новой информации ячейки, а также обновляются детали в областях информации ячейки и информации предиктора.

Затем объедините ячейки 4 и 5, поскольку они также имеют аналогичные WOE.

График предиктора CustAge обновляется новой информацией о ячейке. Также обновляются сведения на панелях Информация о ячейках и Информация о предикторе.
Повторите эту операцию объединения для следующих ячеек, имеющих аналогичные WOE:
Для CustIncome объедините ячейки 3, 4 и 5.
Для TmWBank объедините ячейки 2 и 3.
Для AMBalance объедините ячейки 2 и 3.
Теперь бункеры для всех предикторов имеют близкие к линейным тенденции WOE.
creditscorecard из Binning Explorer.После завершения назначений Binning Explorer выберите Экспорт, затем Экспорт карты показателей и укажите creditscorecard имя объекта. creditscorecard объект (sc) сохраняется в рабочей области MATLAB.
Используйте 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После подгонки логистической модели точки по умолчанию не масштабируются и поступают непосредственно из комбинации значений 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Используйте 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
Чтобы вычислить вероятность дефолта, используйте 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

creditscorecard объект поддерживает три метода проверки: профиль кумулятивной точности (CAP), рабочую характеристику приемника (ROC) и статистику Колмогорова-Смирнова (KS). Дополнительные сведения о CAP, 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



autobinning | bindata | bininfo | compactCreditScorecard | creditscorecard | displaypoints | fitmodel | formatpoints | modifybins | modifypredictor | plotbins | predictorinfo | probdefault | score | screenpredictors | setmodel | validatemodel