Установите предикторы модели и коэффициенты
устанавливает предикторы и коэффициенты линейной логистической регрессионой модели, установленной вне sc = setmodel(sc,ModelPredictors,ModelCoefficients)creditscorecard и возвращает обновленный creditscorecard объект. Предикторы и коэффициенты используются для расчета точек карты показателей. Использование setmodel вместо fitmodel, которая подходит для линейной логистической регрессионой модели, потому что setmodel обеспечивает повышенную гибкость. Для примера, когда модель оснащена fitmodel необходимо изменить, можно использовать setmodel. Для получения дополнительной информации смотрите Рабочие процессы для использования setmodel.
Примечание
При использовании setmodel, применяются следующие допущения:
Коэффициенты модели соответствуют линейной логистической регрессионой модели (где в модель включены только линейные условия и нет взаимодействий или каких-либо других членов более высокого порядка).
Модель была предварительно установлена с использованием данных о весе доказательств (WOE) с отображением отклика так, что «Good» 1 а «Плохой» 0.
fitmodelВ этом примере показано, как использовать setmodel для внесения изменений в логистическую регрессионую модель, первоначально установленную с помощью fitmodel и затем установите предикторы и коэффициенты новой модели логистической регрессии назад в creditscorecard объект.
Создайте creditscorecard объект с использованием CreditCardData.mat файл для загрузки data (использование набора данных из Refaat 2011).
load 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]
Выполните автоматическое раскладывание.
sc = autobinning(sc);
Стандартный процесс состоит в том, чтобы использовать fitmodel функция для подгонки логистической регрессионной модели пошаговым методом. Однако fitmodel поддерживает только ограниченные опции, касающиеся пошаговой процедуры. Вы можете использовать дополнительный mdl выходной аргумент от fitmodel чтобы получить копию установленного GeneralizedLinearModel объект, для последующего изменения.
[sc,mdl] = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769
Generalized linear regression model:
status ~ [Linear formula with 8 terms in 7 predictors]
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ______ __________
(Intercept) 0.70239 0.064001 10.975 5.0538e-28
CustAge 0.60833 0.24932 2.44 0.014687
ResStatus 1.377 0.65272 2.1097 0.034888
EmpStatus 0.88565 0.293 3.0227 0.0025055
CustIncome 0.70164 0.21844 3.2121 0.0013179
TmWBank 1.1074 0.23271 4.7589 1.9464e-06
OtherCC 1.0883 0.52912 2.0569 0.039696
AMBalance 1.045 0.32214 3.2439 0.0011792
1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16
Предположим, вы хотите включить, или «силу», предиктор 'UtilRate' в логистической регрессионной модели, даже несмотря на то, что пошаговый метод не включал его в подобранную модель. Можно добавить 'UtilRate' к логистической регрессионной модели используя GeneralizedLinearModel mdl объекта непосредственно.
mdl = mdl.addTerms('UtilRate')mdl =
Generalized linear regression model:
status ~ [Linear formula with 9 terms in 8 predictors]
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ________ __________
(Intercept) 0.70239 0.064001 10.975 5.0538e-28
CustAge 0.60843 0.24936 2.44 0.014687
ResStatus 1.3773 0.6529 2.1096 0.034896
EmpStatus 0.88556 0.29303 3.0221 0.0025103
CustIncome 0.70146 0.2186 3.2089 0.0013324
TmWBank 1.1071 0.23307 4.7503 2.0316e-06
OtherCC 1.0882 0.52918 2.0563 0.03975
AMBalance 1.0413 0.36557 2.8483 0.004395
UtilRate 0.013157 0.60864 0.021618 0.98275
1200 observations, 1191 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 5.26e-16
Использование setmodel для обновления предикторов модели и коэффициентов модели в creditscorecard объект. The ModelPredictors входной параметр явно не содержит строку для точки пересечения. Однако ModelCoefficients входной параметр имеет информацию о точке пересечения в качестве своего первого элемента.
ModelPredictors = mdl.PredictorNames
ModelPredictors = 8x1 cell
{'CustAge' }
{'ResStatus' }
{'EmpStatus' }
{'CustIncome'}
{'TmWBank' }
{'OtherCC' }
{'AMBalance' }
{'UtilRate' }
ModelCoefficients = mdl.Coefficients.Estimate
ModelCoefficients = 9×1
0.7024
0.6084
1.3773
0.8856
0.7015
1.1071
1.0882
1.0413
0.0132
sc = setmodel(sc,ModelPredictors,ModelCoefficients);
Проверьте, что 'UtilRate' является частью предикторов карты показателей путем отображения точек карты показателей.
pi = displaypoints(sc)
pi=41×3 table
Predictors Bin Points
______________ ________________ _________
{'CustAge' } {'[-Inf,33)' } -0.17152
{'CustAge' } {'[33,37)' } -0.15295
{'CustAge' } {'[37,40)' } -0.072892
{'CustAge' } {'[40,46)' } 0.033856
{'CustAge' } {'[46,48)' } 0.20193
{'CustAge' } {'[48,58)' } 0.21787
{'CustAge' } {'[58,Inf]' } 0.46652
{'CustAge' } {'<missing>' } NaN
{'ResStatus' } {'Tenant' } -0.043826
{'ResStatus' } {'Home Owner' } 0.11442
{'ResStatus' } {'Other' } 0.36394
{'ResStatus' } {'<missing>' } NaN
{'EmpStatus' } {'Unknown' } -0.088843
{'EmpStatus' } {'Employed' } 0.30193
{'EmpStatus' } {'<missing>' } NaN
{'CustIncome'} {'[-Inf,29000)'} -0.46956
⋮
creditscorecard ОбъектВ этом примере показано, как использовать setmodel для соответствия логистической регрессионной модели непосредственно, без использования fitmodel и затем установите предикторы и коэффициенты новой модели обратно в creditscorecard объект. Этот подход дает большую гибкость в отношении опций управления пошаговой процедурой. Этот пример подходит для логистической регрессионой модели с недействительным значением для 'PEnter' параметр, критерий для принятия нового предиктора в логистической регрессионой модели во время пошаговой процедуры.
Создайте creditscorecard объект с использованием CreditCardData.mat файл для загрузки data (использование набора данных из Refaat 2011). Используйте 'IDVar' аргумент, указывающий, что 'CustID' содержит идентификационную информацию и не должен включаться в качестве переменной предиктора.
load 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]
Выполните автоматическое раскладывание.
sc = autobinning(sc);
Модель логистической регрессии должна соответствовать данным о весе доказательств (WOE). Преобразование ГОРЕ является частным случаем раскладывания, поскольку данные сначала необходимо связать, а затем связанная информация сопоставляется с соответствующими значениями ГОРЕ. Это преобразование выполняется с помощью bindata функция. bindata имеет аргумент, который готовит данные для шага аппроксимации модели. Путем установки bindata аргумент пары "имя-значение" для 'OutputType' на WOEModelInput':
Все предикторы преобразуются в значения WOE.
Выход содержит только предикторы и ответ (нет 'IDVar' или любые неиспользуемые переменные).
Предикторы с бесконечными или неопределенными (NaN) Значения ГОРЕ отбрасываются.
Значения отклика отображаются так, что «Good» 1 а «Плохой» 0 (это подразумевает, что более высокие немасштабированные счета соответствуют лучшим, менее рискованным клиентам).
bd = bindata(sc,'OutputType','WOEModelInput');
Например, первые десять строк в исходных данных для переменных 'CustAge', 'ResStatus', 'CustIncome', и 'status' (переменная отклика) выглядят следующим образом:
data(1:10,{'CustAge' 'ResStatus' 'CustIncome' 'status'})ans=10×4 table
CustAge ResStatus CustIncome status
_______ __________ __________ ______
53 Tenant 50000 0
61 Home Owner 52000 0
47 Tenant 37000 0
50 Home Owner 53000 0
68 Home Owner 53000 0
65 Home Owner 48000 0
34 Home Owner 32000 1
50 Other 51000 0
50 Tenant 52000 1
49 Home Owner 53000 1
Вот как выглядят те же десять строк после вызова bindata с аргументом пары "имя-значение" 'OutputType' установлено на 'WOEModelInput':
bd(1:10,{'CustAge' 'ResStatus' 'CustIncome' 'status'})ans=10×4 table
CustAge ResStatus CustIncome status
________ _________ __________ ______
0.21378 -0.095564 0.47972 1
0.62245 0.019329 0.47972 1
0.18758 -0.095564 -0.026696 1
0.21378 0.019329 0.47972 1
0.62245 0.019329 0.47972 1
0.62245 0.019329 0.47972 1
-0.39568 0.019329 -0.29217 0
0.21378 0.20049 0.47972 1
0.21378 -0.095564 0.47972 0
0.21378 0.019329 0.47972 0
Подбор логистической линейной регрессионной модели с помощью пошагового метода с функцией Statistics and Machine Learning Toolbox™ stepwiseglm, но используйте nondefault значение для 'PEnter' и 'PRemove' необязательные аргументы. Предикторы 'ResStatus' и 'OtherCC' обычно включается в логистическую линейную регрессионую модель, используя опции по умолчанию для пошаговой процедуры.
mdl = stepwiseglm(bd,'constant','Distribution','binomial',... 'Upper','linear','PEnter',0.025,'PRemove',0.05)
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08 2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06 3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601 4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257 5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
mdl =
Generalized linear regression model:
logit(status) ~ 1 + CustAge + EmpStatus + CustIncome + TmWBank + AMBalance
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ______ __________
(Intercept) 0.70263 0.063759 11.02 3.0544e-28
CustAge 0.57265 0.2482 2.3072 0.021043
EmpStatus 0.88356 0.29193 3.0266 0.002473
CustIncome 0.70399 0.21781 3.2321 0.001229
TmWBank 1.1 0.23185 4.7443 2.0924e-06
AMBalance 1.0313 0.32007 3.2221 0.0012724
1200 observations, 1194 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 81.4, p-value = 4.18e-16
Использование setmodel для обновления предикторов модели и коэффициентов модели в creditscorecard объект. The ModelPredictors входной параметр явно не содержит строку для точки пересечения. Однако ModelCoefficients входной параметр имеет информацию о точке пересечения в качестве своего первого элемента.
ModelPredictors = mdl.PredictorNames
ModelPredictors = 5x1 cell
{'CustAge' }
{'EmpStatus' }
{'CustIncome'}
{'TmWBank' }
{'AMBalance' }
ModelCoefficients = mdl.Coefficients.Estimate
ModelCoefficients = 6×1
0.7026
0.5726
0.8836
0.7040
1.1000
1.0313
sc = setmodel(sc,ModelPredictors,ModelCoefficients);
Проверьте, что желаемые предикторы модели являются частью предикторов карты показателей, отобразив точки карты показателей.
pi = displaypoints(sc)
pi=30×3 table
Predictors Bin Points
______________ _________________ _________
{'CustAge' } {'[-Inf,33)' } -0.10354
{'CustAge' } {'[33,37)' } -0.086059
{'CustAge' } {'[37,40)' } -0.010713
{'CustAge' } {'[40,46)' } 0.089757
{'CustAge' } {'[46,48)' } 0.24794
{'CustAge' } {'[48,58)' } 0.26294
{'CustAge' } {'[58,Inf]' } 0.49697
{'CustAge' } {'<missing>' } NaN
{'EmpStatus' } {'Unknown' } -0.035716
{'EmpStatus' } {'Employed' } 0.35417
{'EmpStatus' } {'<missing>' } NaN
{'CustIncome'} {'[-Inf,29000)' } -0.41884
{'CustIncome'} {'[29000,33000)'} -0.065161
{'CustIncome'} {'[33000,35000)'} 0.092353
{'CustIncome'} {'[35000,40000)'} 0.12173
{'CustIncome'} {'[40000,42000)'} 0.13259
⋮
sc - Модель карты показателей кредитаcreditscorecard объектМодель карты показателей кредита, заданная как creditscorecard объект. Использование creditscorecard для создания creditscorecard объект.
ModelPredictors - Имена предикторов, включенные в подобранную модель{'PredictorName1','PredictorName2',...}Имена предикторов, включенные в подобранную модель, задаются как массив ячеек из векторов символов как {'PredictorName1','PredictorName2',...}. Имена предиктора должны совпадать с именами переменных предиктора в creditscorecard объект.
Примечание
Не включать вектор символов для постоянного члена в ModelPredictors, setmodel внутренне обрабатывает '(Intercept)' термин, основанный на количестве коэффициентов модели (см ModelCoefficients).
Типы данных: cell
ModelCoefficients - Моделируйте коэффициенты, соответствующие предикторам модели[coeff1,coeff2,..]Моделируйте коэффициенты, соответствующие предикторам модели, заданные как числовой массив коэффициентов модели, [coeff1,coeff2,..]. Если N - количество имен предикторов, предоставленных в ModelPredictors, размер ModelCoefficients можно N или N + 1. Если ModelCoefficients имеет N + 1 элементов, затем первый коэффициент используется как '(Intercept)' от подобранной модели. В противном случае '(Intercept)' установлено в 0.
Типы данных: double
sc - Модель карты показателей кредитаcreditscorecard объектМодель карты показателей кредита, возвращенная как обновленная creditscorecard объект. The creditscorecard объект содержит информацию о предикторах модели и коэффициентах подобранной модели. Для получения дополнительной информации об использовании creditscorecard объект, см. creditscorecard.
setmodelПри использовании setmodelСуществуют два возможных рабочих процессов для установки предикторов конечной модели и коэффициентов модели в creditscorecard объект.
Первый рабочий процесс:
Использовать fitmodel чтобы получить необязательный выходной параметр mdl. Это GeneralizedLinearModel объект и можно добавить и удалить условия, или изменить параметры пошаговой процедуры. В модели могут быть только линейные условия (никакие взаимодействия или любые другие условия более высокого порядка).
Один раз в GeneralizedLinearModel объект удовлетворителен, установите предикторы конечной модели и коэффициенты модели в creditscorecard объект с использованием setmodel входные параметры для ModelPredictors и ModelCoefficients.
Альтернативный рабочий процесс:
Получите данные о весе доказательств (WOE) с помощью bindata. Используйте 'WOEModelInput' опция для 'OutputType' аргумент пары "имя-значение" в bindata для обеспечения того, чтобы:
Данные предикторов преобразуются в ГОРЕ.
Включены только предикторы, интервалы которых имеют конечные значения ГОРЕ.
Переменная отклика помещается в последний столбец.
Переменная отклика сопоставлена («Good» есть 1 а «Плохой» 0).
Используйте данные предыдущего шага, чтобы подогнать линейную логистическую регрессионую модель (только линейные члены в модели, отсутствие взаимодействий или любые другие условия более высокого порядка). См., например, stepwiseglm.
Один раз в GeneralizedLinearModel объект удовлетворителен, установите предикторы конечной модели и коэффициенты модели в creditscorecard объект с использованием setmodel входные параметры для ModelPredictors и ModelCoefficients.
[1] Anderson, R. The Credit Scoring Toolkit. Oxford University Press, 2007.
[2] Refaat, M. Кредитные карты оценки риска: Разработка и реализация с использованием SAS. lulu.com, 2011.
autobinning | bindata | bininfo | creditscorecard | displaypoints | fitglm | fitmodel | formatpoints | GeneralizedLinearModel | modifybins | modifypredictor | plotbins | predictorinfo | probdefault | score | stepwiseglm | validatemodel
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.