Установите образцовые предикторы и коэффициенты
sc = setmodel(sc,ModelPredictors,ModelCoefficients) устанавливает предикторы и коэффициенты линейной модели логистической регрессии, адаптированной вне объекта sc = setmodel(sc,ModelPredictors,ModelCoefficients)creditscorecard, и возвращает обновленный объект creditscorecard. Предикторы и коэффициенты используются для вычисления точек протокола результатов. Используйте setmodel вместо fitmodel, который соответствует линейной модели логистической регрессии, потому что setmodel предлагает увеличенную гибкость. Например, когда модель, снабженная fitmodel, должна быть изменена, можно использовать setmodel. Для получения дополнительной информации смотрите Рабочие процессы для Использования setmodel.
При использовании setmodel применяются следующие предположения:
Коэффициенты модели соответствуют линейной модели логистической регрессии (где только линейные члены включены в модель и нет никаких взаимодействий или любых других условий высшего порядка).
Модель была ранее адаптирована с помощью данных о Весе доказательства (WOE) с ответом, сопоставленным так, чтобы 'Хороший' был 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. Входной параметр ModelPredictors явным образом не включает строку для прерывания. Однако входной параметр ModelCoefficients действительно имеет информацию о прерывании как свой первый элемент.
ModelPredictors = mdl.PredictorNames
ModelPredictors = 8x1 cell array
{'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=33×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
'ResStatus' 'Tenant' -0.043826
'ResStatus' 'Home Owner' 0.11442
'ResStatus' 'Other' 0.36394
'EmpStatus' 'Unknown' -0.088843
'EmpStatus' 'Employed' 0.30193
'CustIncome' '[-Inf,29000)' -0.46956
'CustIncome' '[29000,33000)' -0.11715
'CustIncome' '[33000,35000)' 0.039798
'CustIncome' '[35000,40000)' 0.069073
⋮
creditscorecardЭтот пример показывает, как использовать setmodel, чтобы соответствовать модели логистической регрессии непосредственно, не используя функцию fitmodel, и затем задержать новые образцовые предикторы и коэффициенты в объект creditscorecard. Этот подход дает больше гибкости относительно опций, чтобы управлять пошаговой процедурой. Этот пример соответствует модели логистической регрессии значением не по умолчанию для параметра 'PEnter', критерий, чтобы допустить новый предиктор в модели логистической регрессии во время пошаговой процедуры.
Создайте объект creditscorecard с помощью файла CreditCardData.mat, чтобы загрузить data (использующий набор данных от Refaat 2011). Используйте аргумент 'IDVar', чтобы указать, что 'CustID' содержит информацию о ID и не должен быть включен как переменная прогноза.
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). Преобразование WOE является особым случаем раскладывания, поскольку данные сначала должны быть сгруппированы, и затем сгруппированная информация сопоставлена с соответствующими значениями WOE. Это преобразование сделано с помощью функции bindata. bindata имеет аргумент, который готовит данные к модели, соответствующей шагу. Путем установки аргумента пары "имя-значение" bindata для 'OutputType' к WOEModelInput':
Все предикторы преобразованы в значения WOE.
Вывод содержит только предикторы и ответ (никакой 'IDVar' или любые неиспользуемые переменные).
Предикторы с бесконечным или неопределенным (NaN) WOE значения отбрасываются.
Значения ответа сопоставлены так, чтобы "Хороший" был 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, но используйте значение не по умолчанию для дополнительных аргументов 'PRemove' и 'PEnter'. Предикторы '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. Входной параметр ModelPredictors явным образом не включает строку для прерывания. Однако входной параметр ModelCoefficients действительно имеет информацию о прерывании как свой первый элемент.
ModelPredictors = mdl.PredictorNames
ModelPredictors = 5x1 cell array
{'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=25×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
'EmpStatus' 'Unknown' -0.035716
'EmpStatus' 'Employed' 0.35417
'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
'CustIncome' '[42000,47000)' 0.2854
'CustIncome' '[47000,Inf]' 0.47824
⋮
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. Объект creditscorecard содержит информацию об образцовых предикторах и коэффициентах подобранной модели. Для получения дополнительной информации об использовании объекта creditscorecard смотрите creditscorecard.
setmodelПри использовании setmodel существует два возможных рабочих процесса, чтобы установить итоговые образцовые предикторы и коэффициенты модели в объект creditscorecard.
Первый рабочий процесс:
Используйте fitmodel, чтобы получить дополнительный выходной аргумент mdl. Это - объект GeneralizedLinearModel, и можно добавить и удалить условия или изменить параметры пошаговой процедуры. Только линейные члены могут быть в модели (никакие взаимодействия или любые другие условия высшего порядка).
Если объект GeneralizedLinearModel является удовлетворительным, установите итоговые образцовые предикторы и коэффициенты модели в объект creditscorecard с помощью входных параметров setmodel для ModelPredictors и ModelCoefficients.
Альтернативный рабочий процесс:
Получите данные о Весе доказательства (WOE) с помощью bindata. Используйте опцию 'WOEModelInput' для аргумента пары "имя-значение" 'OutputType' в bindata, чтобы гарантировать что:
Данные о предикторах преобразовываются к WOE.
Только предикторы, интервалы которых имеют конечные значения WOE, включены.
Переменная отклика помещается в последний столбец.
Переменная отклика сопоставлена (“Хороший”, 1 и “Плохо” 0).
Используйте данные из предыдущего шага, чтобы соответствовать линейной модели логистической регрессии (только линейные члены в модели, никаких взаимодействиях или любых других условиях высшего порядка). Смотрите, например, stepwiseglm.
Если объект GeneralizedLinearModel является удовлетворительным, установите итоговые образцовые предикторы и коэффициенты модели в объект creditscorecard с помощью входных параметров setmodel для ModelPredictors и ModelCoefficients.
[1] Андерсон, R. Инструментарий рейтинга кредитоспособности. Издательство Оксфордского университета, 2007.
[2] Refaat, M. Протоколы результатов кредитного риска: разработка и реализация Используя SAS. lulu.com, 2011.
GeneralizedLinearModel | autobinning | bindata | bininfo | creditscorecard | displaypoints | fitglm | fitmodel | formatpoints | modifybins | modifypredictor | plotbins | predictorinfo | probdefault | score | stepwiseglm | validatemodel
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.