exponenta event banner

setmodel

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

Описание

пример

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

Примечание

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

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

  • Модель ранее была подогнана с использованием данных веса доказательств (WOE) с отображенным ответом, чтобы «хорошо» было 1 и «Bad» является 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]

Выполните автоматическое 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
      ⋮

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

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

свернуть все

Модель кредитной карты показателей, указанная как 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 и «Bad» является 0).

  • Используйте данные предыдущего шага для соответствия модели линейной логистической регрессии (только линейные термины в модели, без взаимодействий или любые другие термины более высокого порядка). См., например, stepwiseglm.

  • Один раз GeneralizedLinearModel объект удовлетворителен, установите окончательные предикторы модели и коэффициенты модели в creditscorecard с использованием setmodel входные аргументы для ModelPredictors и ModelCoefficients.

Ссылки

[1] Андерсон, R. The Credit Скоринг Toolkit. Издательство Оксфордского университета, 2007 год.

[2] Рефаат, М. Карты оценки кредитных рисков: разработка и внедрение с использованием SAS. lulu.com, 2011.

Представлен в R2014b