В этом примере показано, как создать кредитную карту показателей с помощью Binning Explorer приложения. Используйте Binning Explorer для интервала данных, построения графика информации о привязанных данных и экспорта creditscorecard
объект. Затем используйте creditscorecard
объект с функциями из Financial 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: На вкладке Apps, в разделе Computational Finance, щелкните значок приложения. Также можно ввести binningExplorer
в командной строке MATLAB. Для получения дополнительной информации о запуске Binning Explorer из командной строки смотрите Пуск из командной строки MATLAB Использование данных или Объект Acisting creditscorecard.
Из Binning Explorer панели инструментов выберите Import Data, чтобы открыть окно Import Данных.
В группе 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
объект, см. Моделирование кредитной карты показателей с использованием весов наблюдений.
Если данные содержат отсутствующие значения, на панели Step 2 установите для Bin missing data: значение Yes. Для получения дополнительной информации о работе с отсутствующими данными смотрите Моделирование карты показателей кредита с отсутствующими значениями.
В разделе Step 3 оставьте Monotone как алгоритм начального раскладывания по умолчанию.
Щелкните Import Data, чтобы завершить операцию импорта. Автоматическое раскладывание с использованием выбранного алгоритма применяется ко всем предикторам при их импорте в Binning Explorer.
Интервалы строятся и отображаются для каждого предиктора. Нажимая, чтобы выбрать отдельный график предиктора из панели Overview, детали для этого графика предиктора отображаются в основной панели и в Bin Information и Predictor Information панелях в нижней части приложения.
Binning Explorer выполняет автоматическое раскладывание для каждой переменной предиктора, используя 'Monotone' по умолчанию
алгоритм с опциями алгоритма по умолчанию. Монотонный, идеально линейный тренд в весе доказательств (ГОРЕ) часто желателен для кредитных карт результатов, потому что это переводится в линейные точки для данного предиктора. Тренды ГОРЕ визуализируются на графиках для каждого предиктора в Binning Explorer.
Выполните некоторые начальные исследования данных. Запросите статистику предикторов для 'ResStatus'
категориальная переменная.
Щелкните на ResStatus графике. Панель Bin Information содержит частоты «Хорошо» и «Плохо» и другие статистические данные интервалов, такие как вес доказательств (WOE).
Для числовых данных отображается та же статистика. Щелкните на CustIncome графике. Bin Information обновляется информацией о CustIncome.
Щелкните график предиктора CustAge. Обратите внимание на то, что интервалы 1 и 2 имеют такие же значения ГОРЕ, как и интервалы 5 и 6.
Чтобы объединить интервалы 1 и 2, на основной панели щелкните Ctrl + нажатие кнопки или Shift + нажатие кнопки, чтобы выбрать интервалы 1 и 2, чтобы отобразить синие контуры для объединения.
На Binning Explorer панели инструментов в Edges текстовых полях отображаются значения ребер выбранных интервалов для объединения.
Нажмите кнопку Merge, чтобы завершить объединение интервалов 1 и 2. График предиктора CustAge обновляется для информации о новом интервале, и детали в Bin Information и Predictor Information панелях также обновляются.
Затем объедините интервалы 4 и 5, потому что они также имеют аналогичные ГОРЕ.
График предиктора CustAge обновляется информацией о новом интервале. Также обновляются детали в Bin Information и Predictor Information панелях.
Повторите операцию слияния для следующих интервалов, имеющих сходные значения WOE:
Для CustIncome объедините интервалы 3, 4 и 5.
Для TmWBank объедините интервалы 2 и 3.
Для AMBalance объедините интервалы 2 и 3.
Теперь интервалы для всех предикторов имеют близкие к линейным тренды WOE.
creditscorecard
объект из Binning Explorer.После того, как вы завершите свои назначения раскладывание, используя Binning Explorer, нажмите Export, а затем нажмите Export Scorecard и предоставьте creditscorecard
имя объекта. The creditscorecard
объект (sc
) сохраняется в рабочем пространстве MATLAB.
Используйте fitmodel
функция для подгонки логистической регрессионной модели к данным ГОРЕ. 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
После подбора кривой логистической модели точки по умолчанию не масштабируются и получаются непосредственно из комбинации значений ГОРЕ и коэффициентов модели. Используйте 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
функция. Например, можно задать целевой уровень точек, соответствующий целевому уровню шансов, а также установить необходимые точки на значения double-the-ods (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
The 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