В этом примере показано, как создать creditscorecard
объект, данные интервала, отображение и график информации о привязанных данных. В этом примере также показано, как подогнать логистическую регрессионую модель, получить счет для модели карты показателей и определить вероятности дефолта и подтвердить модель карты показателей кредита с помощью трех различных метрик.
Используйте CreditCardData.mat
файл для загрузки data
(использование набора данных из Refaat 2011). Если ваш data
содержит много предикторов, можно сначала использовать screenpredictors
(Risk Management Toolbox) из Risk Management Toolbox™ для анализа потенциально большого набора предикторов в подмножество, которое наиболее предсказывает переменную ответа карты показателей кредита. Затем можно использовать это подмножество предикторов при создании creditscorecard
объект.
При создании creditscorecard
объект, по умолчанию, 'ResponseVar'
устанавливается в последний столбец данных ('status'
в этом примере) и 'GoodLabel'
на значение отклика с наивысшим количеством (0
в этом примере). Синтаксис для creditscorecard
указывает, что 'CustID'
является 'IDVar'
удалить из списка предикторов. Также, хотя и не продемонстрирован в этом примере, при создании creditscorecard
использование объекта creditscorecard
можно использовать необязательный аргумент пары "имя-значение" 'WeightsVar'
для определения весов или 'BinMissingData'
наблюдений (выборки) для интервала отсутствующих данных.
load CreditCardData
head(data)
ans=8×11 table
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
Переменные в CreditCardData
идентификатор клиента, возраст клиента, время по текущему адресу, статус проживания, статус занятости, доход клиента, время в банке, другая кредитная карта, средний месячный остаток, коэффициент использования и статус по умолчанию (ответ).
sc = creditscorecard(data,'IDVar','CustID')
sc = creditscorecard with properties: GoodLabel: 0 ResponseVar: 'status' WeightsVar: '' VarNames: {1x11 cell} NumericPredictors: {1x6 cell} CategoricalPredictors: {'ResStatus' 'EmpStatus' 'OtherCC'} BinMissingData: 0 IDVar: 'CustID' PredictorVars: {1x9 cell} Data: [1200x11 table]
Выполните некоторые начальные исследования данных. Запросите статистику предикторов для категориальной переменной 'ResStatus'
и постройте график информации о интервале для 'ResStatus'
.
bininfo(sc,'ResStatus')
ans=4×6 table
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
plotbins(sc,'ResStatus')
Эта информация о интервале содержит частоты «Хорошо» и «Плохо» и статистику интервала. Избегайте наличия интервалов с частотами нуля, потому что они приводят к бесконечному или неопределенному (NaN
) статистика. Используйте modifybins
или autobinning
функции для соответствующего интервала данных.
Для числовых данных общим первым шагом является «тонкая классификация». Это означает раскладывание данных на несколько интервалов, определенных регулярной сеткой. Чтобы проиллюстрировать эту точку, используйте предиктор 'CustIncome'
.
cp = 20000:5000:60000; sc = modifybins(sc,'CustIncome','CutPoints',cp); bininfo(sc,'CustIncome')
ans=11×6 table
Bin Good Bad Odds WOE InfoValue
_________________ ____ ___ _______ _________ __________
{'[-Inf,20000)' } 3 5 0.6 -1.2152 0.010765
{'[20000,25000)'} 23 16 1.4375 -0.34151 0.0039819
{'[25000,30000)'} 38 47 0.80851 -0.91698 0.065166
{'[30000,35000)'} 131 75 1.7467 -0.14671 0.003782
{'[35000,40000)'} 193 98 1.9694 -0.026696 0.00017359
{'[40000,45000)'} 173 76 2.2763 0.11814 0.0028361
{'[45000,50000)'} 131 47 2.7872 0.32063 0.014348
{'[50000,55000)'} 82 24 3.4167 0.52425 0.021842
{'[55000,60000)'} 21 8 2.625 0.26066 0.0015642
{'[60000,Inf]' } 8 1 8 1.375 0.010235
{'Totals' } 803 397 2.0227 NaN 0.13469
plotbins(sc,'CustIncome')
Используйте autobinning
функция для выполнения автоматического раскладывание для каждой переменной предиктора, используя 'Monotone'
по умолчанию алгоритм с опциями алгоритма по умолчанию.
sc = autobinning(sc);
После шага автоматического раскладывание, каждое интервал предиктора должно быть рассмотрено с помощью bininfo
и plotbins
функции и подстройка. Монотонный, идеально линейный тренд в весе доказательств (ГОРЕ) желателен для кредитных карт результатов, потому что это переводится в линейные точки для заданного предиктора. Тренды ГОРЕ могут быть визуализированы с помощью plotbins
.
Predictor = 'ResStatus';
plotbins (sc, Predictor)
В отличие от начального графика 'ResStatus'
при создании карты показателей новый график для 'ResStatus'
показывает растущий тренд ГОРЕ. Это потому, что autobinning
функция по умолчанию сортирует порядок категорий, увеличивая шансы.
Эти графики показывают, что 'Monotone'
алгоритм хорошо справляется с поиском монотонных трендов ГОРЕ для этого набора данных. Чтобы завершить процесс раскладывания, необходимо сделать только несколько ручных корректировок для некоторых предикторов, использующих modifybins
функция.
Общие шаги для ручного изменения интервалов:
Используйте bininfo
функция с двумя выходными аргументами, где второй аргумент содержит правила binning.
Вручную измените правила раскладывания, используя второй выходной аргумент от bininfo
.
Установите обновленные правила binning с modifybins
а затем использовать plotbins
или bininfo
для просмотра обновленных интервалов.
Для примера, на основе графика для 'CustAge'
На этапе 2а интервалы с номерами 1 и 2 имеют те же интервалы ГОРЕ, что и интервалы с номерами 5 и 6. Чтобы объединить эти интервалы с помощью шагов, описанных выше:
Predictor = 'CustAge';
[bi, cp] = bininfo (sc, Predictor)
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
cp = 6×1
33
37
40
46
48
58
cp([1 5]) = []; % To merge bins 1 and 2, and bins 5 and 6 sc = modifybins(sc,'CustAge','CutPoints',cp); plotbins(sc,'CustAge')
Для 'CustIncome'
, исходя из приведенного выше графика, лучше всего объединить интервалы 3, 4 и 5, поскольку они имеют сходные значения ГОРЕ. Чтобы объединить эти интервалы:
Predictor = 'CustIncome';
[bi, cp] = bininfo (sc, Predictor)
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
cp = 6×1
29000
33000
35000
40000
42000
47000
cp([3 4]) = []; % To merge bins 3, 4, and 5 sc = modifybins(sc,'CustIncome','CutPoints',cp); plotbins(sc,'CustIncome')
Для 'TmWBank'
, исходя из приведенного выше графика, лучше всего объединить интервалы 2 и 3, поскольку они имеют сходные значения ГОРЕ. Чтобы объединить эти интервалы:
Predictor = 'TmWBank';
[bi, cp] = bininfo (sc, Predictor)
bi=6×6 table
Bin Good Bad Odds WOE InfoValue
_____________ ____ ___ ______ ________ _________
{'[-Inf,12)'} 141 90 1.5667 -0.25547 0.013057
{'[12,23)' } 165 93 1.7742 -0.13107 0.0037719
{'[23,45)' } 224 125 1.792 -0.12109 0.0043479
{'[45,71)' } 177 67 2.6418 0.26704 0.013795
{'[71,Inf]' } 96 22 4.3636 0.76889 0.049313
{'Totals' } 803 397 2.0227 NaN 0.084284
cp = 4×1
12
23
45
71
cp(2) = []; % To merge bins 2 and 3 sc = modifybins(sc,'TmWBank','CutPoints',cp); plotbins(sc,'TmWBank')
Для 'AMBalance'
, исходя из приведенного выше графика, лучше всего объединить интервалы 2 и 3, поскольку они имеют сходные значения ГОРЕ. Чтобы объединить эти интервалы:
Predictor = 'AMBalance';
[bi, cp] = bininfo (sc, Predictor)
bi=5×6 table
Bin Good Bad Odds WOE InfoValue
_____________________ ____ ___ ______ ________ _________
{'[-Inf,558.88)' } 346 134 2.5821 0.24418 0.022795
{'[558.88,1254.28)' } 309 171 1.807 -0.11274 0.0051774
{'[1254.28,1597.44)'} 76 44 1.7273 -0.15787 0.0025554
{'[1597.44,Inf]' } 72 48 1.5 -0.29895 0.0093402
{'Totals' } 803 397 2.0227 NaN 0.039868
cp = 3×1
103 ×
0.5589
1.2543
1.5974
cp(2) = []; % To merge bins 2 and 3 sc = modifybins(sc,'AMBalance','CutPoints',cp); plotbins(sc,'AMBalance')
Теперь, когда раскладывание подстройка завершена, интервалы для всех предикторов имеют близкие к линейным тренды WOE.
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: status ~ [Linear formula with 8 terms in 7 predictors] 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 {'CustAge' } {'<missing>' } NaN {'ResStatus' } {'Tenant' } -0.031302 {'ResStatus' } {'Home Owner' } 0.12697 {'ResStatus' } {'Other' } 0.37652 {'ResStatus' } {'<missing>' } NaN {'EmpStatus' } {'Unknown' } -0.076369 {'EmpStatus' } {'Employed' } 0.31456 {'EmpStatus' } {'<missing>' } NaN {'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 {'CustIncome'} {'<missing>' } NaN {'TmWBank' } {'[-Inf,12)' } -0.18221 {'TmWBank' } {'[12,45)' } -0.038279 {'TmWBank' } {'[45,71)' } 0.39569 {'TmWBank' } {'[71,Inf]' } 0.95074 {'TmWBank' } {'<missing>' } NaN {'OtherCC' } {'No' } -0.193 {'OtherCC' } {'Yes' } 0.15868 {'OtherCC' } {'<missing>' } NaN {'AMBalance' } {'[-Inf,558.88)' } 0.3552 {'AMBalance' } {'[558.88,1597.44)'} -0.026797 {'AMBalance' } {'[1597.44,Inf]' } -0.21168 {'AMBalance' } {'<missing>' } NaN
Это хорошее время для изменения меток интервалов, если это что-то интересное по косметическим причинам. Для этого используйте 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 {'CustAge' } {'<missing>' } NaN {'ResStatus' } {'Tenant' } -0.031302 {'ResStatus' } {'Home Owner' } 0.12697 {'ResStatus' } {'Other' } 0.37652 {'ResStatus' } {'<missing>' } NaN {'EmpStatus' } {'Unknown' } -0.076369 {'EmpStatus' } {'Employed' } 0.31456 {'EmpStatus' } {'<missing>' } NaN {'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 {'CustIncome'} {'<missing>' } NaN {'TmWBank' } {'Up to 11' } -0.18221 {'TmWBank' } {'12 to 44' } -0.038279 {'TmWBank' } {'45 to 70' } 0.39569 {'TmWBank' } {'71 and up' } 0.95074 {'TmWBank' } {'<missing>' } NaN {'OtherCC' } {'No' } -0.193 {'OtherCC' } {'Yes' } 0.15868 {'OtherCC' } {'<missing>' } NaN {'AMBalance' } {'Up to 558.87' } 0.3552 {'AMBalance' } {'558.88 to 1597.43'} -0.026797 {'AMBalance' } {'1597.44 and up' } -0.21168 {'AMBalance' } {'<missing>' } NaN
Точки обычно масштабируются, а также часто округляются. Для этого используйте 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 {'CustAge' } {'<missing>' } NaN {'ResStatus' } {'Tenant' } 62.028 {'ResStatus' } {'Home Owner' } 73.445 {'ResStatus' } {'Other' } 91.446 {'ResStatus' } {'<missing>' } NaN {'EmpStatus' } {'Unknown' } 58.777 {'EmpStatus' } {'Employed' } 86.976 {'EmpStatus' } {'<missing>' } NaN {'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 {'CustIncome'} {'<missing>' } NaN {'TmWBank' } {'Up to 11' } 51.142 {'TmWBank' } {'12 to 44' } 61.524 {'TmWBank' } {'45 to 70' } 92.829 {'TmWBank' } {'71 and up' } 132.87 {'TmWBank' } {'<missing>' } NaN {'OtherCC' } {'No' } 50.364 {'OtherCC' } {'Yes' } 75.732 {'OtherCC' } {'<missing>' } NaN {'AMBalance' } {'Up to 558.87' } 89.908 {'AMBalance' } {'558.88 to 1597.43'} 62.353 {'AMBalance' } {'1597.44 and up' } 49.016 {'AMBalance' } {'<missing>' } NaN
score
функция вычисляет счета для обучающих данных. Необязательный data
вход также может быть передан в score
для примера, данные валидации. Точки на предиктор для каждого клиента предоставляются как необязательный выход.
[Scores,Points] = score(sc); disp(Scores(1:10))
528.2044 554.8861 505.2406 564.0717 554.8861 586.1904 441.8755 515.8125 524.4553 508.3169
disp(Points(1:10,:))
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) и статистику Колмогорова-Смирнова (K-S). Для получения дополнительной информации о CAP, ROC и KS, смотрите Профиль кумулятивной точности (CAP), Операционная характеристика приемника (ROC) и Статистика Колмогорова-Смирнова (KS).
[Stats,T] = validatemodel(sc,'Plot',{'CAP','ROC','KS'});
disp(Stats)
Measure Value ________________________ _______ {'Accuracy Ratio' } 0.32225 {'Area under ROC curve'} 0.66113 {'KS statistic' } 0.22324 {'KS score' } 499.18
disp(T(1:15,:))
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
| compact
| creditscorecard
| displaypoints
| fitmodel
| formatpoints
| modifybins
| modifypredictor
| plotbins
| predictorinfo
| probdefault
| score
| setmodel
| validatemodel