Установите предикторы модели и коэффициенты
устанавливает предикторы и коэффициенты линейной логистической регрессионой модели, установленной вне 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.