setmodel

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

Описание

пример

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

Примечание

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

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

  • Модель была предварительно установлена с использованием данных о весе доказательств (WOE) с отображением отклика так, что «Good» 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 объект. 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
      ⋮

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

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

свернуть все

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

Введенный в R2014b