Установка предикторов и коэффициентов модели
устанавливает предикторы и коэффициенты модели линейной логистической регрессии, установленной вне sc = setmodel(sc,ModelPredictors,ModelCoefficients)creditscorecard объект и возвращает обновленный creditscorecard объект. Предикторы и коэффициенты используются для вычисления точек карты показателей. Использовать setmodel вместо fitmodel, которая подходит под модель линейной логистической регрессии, потому что setmodel обеспечивает повышенную гибкость. Например, когда модель оснащена fitmodel необходимо изменить, вы можете использовать setmodel. Дополнительные сведения см. в разделе Рабочие процессы для использования setmodel.
Примечание
При использовании setmodel, применяются следующие допущения:
Коэффициенты модели соответствуют модели линейной логистической регрессии (где в модель включены только линейные члены и отсутствуют взаимодействия или любые другие члены более высокого порядка).
Модель ранее была подогнана с использованием данных веса доказательств (WOE) с отображенным ответом, чтобы «хорошо» было 1 и «Bad» является 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]
Выполните автоматическое binning.
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' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.
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]
Выполните автоматическое binning.
sc = autobinning(sc);
Модель логистической регрессии должна соответствовать данным веса доказательств (WOE). Преобразование WOE является частным случаем binning, так как данные сначала должны быть привязаны, а затем привязанная информация отображается на соответствующие значения WOE. Это преобразование выполняется с помощью bindata функция. bindata имеет аргумент, который подготавливает данные для шага аппроксимации модели. Путем установки bindata аргумент пары имя-значение для 'OutputType' кому WOEModelInput':
Все предикторы преобразуются в значения WOE.
Выходные данные содержат только предикторы и отклик (нет 'IDVar' или любые неиспользуемые переменные).
Предикторы с бесконечными или неопределенными (NaN) Значения WOE отбрасываются.
Значения ответа сопоставляются таким образом, что «Хорошо» 1 и «Bad» является 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
Подгонка модели логистической линейной регрессии с помощью пошагового метода с функцией 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 и «Bad» является 0).
Используйте данные предыдущего шага для соответствия модели линейной логистической регрессии (только линейные термины в модели, без взаимодействий или любые другие термины более высокого порядка). См., например, stepwiseglm.
Один раз GeneralizedLinearModel объект удовлетворителен, установите окончательные предикторы модели и коэффициенты модели в creditscorecard с использованием setmodel входные аргументы для ModelPredictors и ModelCoefficients.
[1] Андерсон, R. The Credit Скоринг Toolkit. Издательство Оксфордского университета, 2007 год.
[2] Рефаат, М. Карты оценки кредитных рисков: разработка и внедрение с использованием 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.