Этот пример показывает, как создать протокол результатов кредита с помощью приложения Binning Explorer. Используйте Binning Explorer для интервала данные, постройте сгруппированную информацию о данных и экспортируйте объект creditscorecard
. Затем используйте объект creditscorecard
с функциями от Financial Toolbox™, чтобы соответствовать модели логистической регрессии, определить счет к данным, определить вероятности значения по умолчанию и подтвердить модель протокола результатов кредита использование трех различных метрик.
Шаг 1. Загрузите протокол результатов кредита data
в рабочее пространство MATLAB.
Шаг 3. Подстройте интервалы с помощью ручного раскладывания в Binning Explorer.
Шаг 4. Экспортируйте объект creditscorecard
от 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 Используя Данные или Существующий Объект 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.
Кликните по графику предиктора 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.
creditscorecard
от Binning Explorer.После того, как вы завершите свои присвоения раскладывания, с помощью Binning Explorer, нажмите Export и обеспечьте имя объекта 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) статистическая величина. Для получения дополнительной информации о ПРОПИСНОЙ БУКВЕ 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
| creditscorecard
| displaypoints
| fitmodel
| formatpoints
| modifybins
| modifypredictor
| plotbins
| predictorinfo
| probdefault
| score
| screenpredictors
| setmodel
| validatemodel