Установите предикторы модели и коэффициенты
устанавливает предикторы и коэффициенты линейной модели логистической регрессии, подбиравшей вне 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
{'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' содержит информацию о 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, но используйте значение не по умолчанию для '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 объект. 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 объект. 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.
autobinning | bindata | bininfo | creditscorecard | displaypoints | fitglm | fitmodel | formatpoints | GeneralizedLinearModel | modifybins | modifypredictor | plotbins | predictorinfo | probdefault | score | stepwiseglm | validatemodel
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.