setmodel

Установите предикторы модели и коэффициенты

Описание

пример

sc = setmodel(sc,ModelPredictors,ModelCoefficients) устанавливает предикторы и коэффициенты линейной модели логистической регрессии, подбиравшей вне creditscorecard возразите и возвращает обновленный creditscorecard объект. Предикторы и коэффициенты используются для расчета точек протокола результатов. Используйте setmodel вместо fitmodel, который подбирает линейную модель логистической регрессии, потому что setmodel предложения увеличили гибкость. Например, когда модель, подбиравшая с fitmodel потребности, которые будут изменены, можно использовать setmodel. Для получения дополнительной информации смотрите Рабочие процессы для Использования setmodel.

Примечание

При использовании setmodel, следующие предположения применяются:

  • Коэффициенты модели соответствуют линейной модели логистической регрессии (где только линейные члены включены в модель и нет никаких взаимодействий или любых других условий высшего порядка).

  • Модель ранее подбиралась с помощью данных о Весе доказательства (WOE) с ответом, сопоставленным так, чтобы 'Хороший' был 1 и 'Плохо' 0.

Примеры

свернуть все

В этом примере показано, как использовать 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
      ⋮

В этом примере показано, как использовать 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
      ⋮

Входные параметры

свернуть все

Модель протокола результатов кредита в виде creditscorecard объект. Используйте creditscorecard создать creditscorecard объект.

Имена предиктора, включенные в подобранную модель в виде массива ячеек из символьных векторов как {'PredictorName1','PredictorName2',...}. Имена предиктора должны совпадать с именами переменного предиктора в creditscorecard объект.

Примечание

Не включайте вектор символов для постоянного термина в ModelPredictors, setmodel внутренне обрабатывает '(Intercept)' назовите на основе количества коэффициентов модели (см. ModelCoefficients).

Типы данных: cell

Коэффициенты модели, соответствующие предикторам модели в виде числового массива коэффициентов модели, [coeff1,coeff2,..]. Если N является количеством имен предиктора, обеспеченных в ModelPredictors, размер ModelCoefficients может быть N или N +1. Если ModelCoefficients имеет N +1 элемент, затем первый коэффициент используется в качестве '(Intercept)' из подобранной модели. В противном случае, '(Intercept)' установлен в 0.

Типы данных: double

Выходные аргументы

свернуть все

Модель протокола результатов кредита, возвращенная как обновленный 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.

Введенный в R2014b