zoukankan      html  css  js  c++  java
  • 信用风险评分卡研究-第9章笔记

    本章将介绍建模过程中使用的变量选择方法。通过,信贷发放机构的分析人员能够获得大量的可以用于建立信用评分卡的变量。因此,选择模型中,也就是评分卡中使用的变量,不仅是一项分析任务,还与业务流程和评分卡中使用的变量,不仅是一项分析任务,还与业务流程和评分卡的实施过程密切相关。
    从分析角度,模型中使用的变量迭代选择方法有许多种。这些方法的基本原理都用模型和变量的统计量判断模型中包含和不包含每个变量进模型质量。这些方法的判别仅仅在于将备选变量纳入或移出模型的过程和顺序的细节上差异。

    选择方法概述
    图9.1 是PROC LOGISTIC 中可供选择的方法使用的一般变量选择算法的框架。
    如图9.1所示,所有变量选择算法的基本原理都在模型中增加或从模型中移出变量,直到发现最优模型。变量选择方法间的差异就在于选择要加入或移出的下一个变量的依据,以及构成最好或最优模型的定义。

    第7章中介绍了LOGISTIC回归模型的基本公式以及如何使用PROC LOGISTIC进行模型拟合。还介绍了评估模型稳健性的几个指标。特别介绍了WALD卡方统计量以及根据卡方分布计算的P值,用以检验模型中每个自变量的显著性。实际上,模型变量的显示性水平是最常用的变量选择方法的基础。
    PROC LOGISTIC提供了五种变量选择的访求,这些方法可以通过指定选项SELECTION的值在MODEL语句中调用。
    1、使用所有变量:SELECTION=NONE,这是拟合模型的最简单方法,将MODEL语句中列出的所有变量都纳入模型。如果MODEL语句的选项中没有明确指定其他方法,系统默认使用该方法。只有确定想把所有变量都纳入模型时才采用这种方法。通常,这种方法用于初始探索性模型的拟合,用来估计每个变量对模型可能的贡献度,相对于其他变量的相对强度和显示性。

    2、正向选择:SELECTION=FORWORD-这种情况下,需要通过几个步骤得到模型。第一步,只用一个截距项对模型进行拟合。接下来,在每一步中,检验没有纳入模型的变量并选择卡方统计量最大、符合进入条件的变量,这个条件可以通过项SLE确定。SLE的值指定允许一个变量进入模型的最大P值。显然,SLE值必须在0和1之间。一个变量一旦被纳入模型就不会被再移出。重复这个过程,直到所有变量都被纳入到模型或没有变量符合进入条件。
    正向选择方法的优点在于其只允许显著进入模型。然而一旦某个变量在某个阶段被纳入模型,在接下来的某个阶段,即使其显著性降低也仍会被保留在模型中。

    3、逆向选择:SELECTION=BACKWARD-逆向选择可以看作是正向选择方法的逆。首先,用所有自变量对模型进行拟合。然后在每一步中,从模型中移除WALD卡方统计量P值最大的变量,如果其大于选项SLS设定的值。这个过程一直持续到模型中没有变量或没有一个保留在模型中的变量的P值大于SLS,一旦某个变量被从模型中移出,将不会再被重新纳入。
    逆向选择法的优点在于,给所有变量一个被纳入模型的机会。但某个变量一旦被移出,即使其在接下来的某个阶段变得显著,也会不会有第二次机会被纳入模型。

    4、逐步选择:SELECTION=STEPWISE-逐步选择法的每一步都是下正向选择和逆向选择的结合。最被,模型中只有截距项。然后在每一步中,用正向选择增加最优的变量,用逆向选择移出最差的变量。先SLE和SLS值分别被用来控制纳入或移出模型的变量的值。
    这是评分卡开发中最常用的方法,因为它同时结合了正向选择和逆向选择的优点。总的来说,它既给了每个变量被纳入模型的机会,即使在早期阶段就被移出模型;又允许在前期阶段纳入模型的显著变量被移出模型。
    需要注意的是,逐步选择法并不能保证一定会获得最优模型。它仅仅是变量选择的一种试探方法。在每一步中,根据变量WALD卡方值优先将其纳入或移出模型。不同的标准或许会产生更好的选择。

    5、最优得分统计模型:SELECT=SCORE-最优得分法与逐步选择法有些相似,它们都是经过多个步骤反复增加或移除变量以改进模型。然而,它使用著名的分支定界算法以裁出使得模型的分数统计量(SC)(公式7.35)最高变量的子集。这种方法首先找出最优的单变量模型。其次找出最优的双变量模型、最优的三变量模型,并以此类推,直到模型的数量达到参数STOP的值。如果没有给定的STOP值,这个过程将持续到所有变量都被纳入模型。在每一步中,显示模型数量由选项BEST控制。

    这种方法的优点在于它是根据分数统计量找出最优模型。然而,这种方法建立的模型并不能保证变量的WOLD卡方统计都是显著的。因此,它只是试图找出最优的总体模型,而并不考虑自变量的显著性。

    除了上述选择方法,PROC LOGISTIC还提供了下列选项,允许在上述方法中进一步对变量选择进行控制:
    1、SEQUENTIAL-强制选择算法按照MODEL语句设定的顺序考虑变量,无论是将变量纳入还是移出模型
    2、START=N-强制模型从MODEL语句列出的前N个变量开始。例如,用SELECTION=FORWARD START=2 将强制模型从MODEL语句中变量列表的前两个变量开始。
    3、STOP-规定最终模型中包含的最大(对于正向选择法)或最小(对于逆向选择法)变量数。
    4、INCLUDE=n-强制前N个变量包含在所有模型中。该选项与START选项的区别在于,INCLUDE=n强制将前N个变量包含在所有模型中;而START=n仅仅是从包含前N个变量的模型开始整个过程,某些变量可能在后续阶段被移除。

    由于不同算法控制选项的特殊功能,所以有些在特定的选择方法中无效。表9.1总结了MODEL语句中使用的选项,以及可以使用它们对应的选择方法。

    接下来的部分将详细介绍信用评分卡开发中常用的PROC LOGISTIC的三项特征。
    1、逐步选择洗的使用;
    2、强制将某些变量纳入模型;
    3、控制变量选择的顺序;

    逐步变量选择
    逐步选择法是评分卡模型开发中最常用的变量选择方法。与其他变量选择方法相比,它有两项明显的优势。
    1、它允许模型中的每个变量在任意一步中被纳入(或被移出)模型。因此,某个被移出的变量如果能够在后续阶段证明优于其他变量,就可以重新纳入模型。
    2、它用参数估计的WALD卡方显著性决定哪个变量将被保留在模型中。因此,最终模型中所有变量都是显著的。
    通过将SELECTION的值设定为STEPVISE,也可以简写为S,就可以在MODEL语句中调用逐步选择法。选项SLE=P一值和SLS=P-值分别设定了允许变量进入和保留在模型中显著性水平。例如,设定SLE=0.05,将允许WALD卡方的P值等于或小于0.05的变量进入模型。默认的SLE和SLS值都是0.05。严格来讲,可以开发三种类型的LOGISTIC回归模型:探索性的、解释性的和预测性的。探索性的模型仅仅试图理解不同自变量对因变量可能的冲击。解释性模型试图建立在同的解释变量与因变量之间的关联性。换句话说,就是试图解释因变量相对于自变量中的情况。探索性模型和解释性模型都可以用于项目早期阶段,筛选出变量并建立信用状况指标与候选自变量之间的趋势关系。最后,预测性模型是进行预测的最终模型,即用于开发评分卡的模型。
    信用评分卡开发的最优实践建议用于设定参数SLE和SLS的显示性水平值如表9.2所示
    此外,参考文献【6】建议,不论开发的模型是何种类,任何WALD卡方统计量的P值大于0.3的变量都要从模型中移除。

    用第6章的数据集CREDITCARD介绍如何在PROC LOGISTIC中运行逐步选择法,开发模型之前,需要进行等宽分段。用宏%EqWBin将所有连续变量分段。接下来,计算得到的分段变量以及名义变量的证据权重。列表9.1说明如何调用分段宏程序和计算所有变量的证据权重。
    运行列表9.1中的代码得到的数据CC,它包含了数据集CREDITCARD中的原始变量以及所有变量的WOE转换。用MODEL语句中选项NONE将所有变量纳入模型对LOGISTIC回归模型进行拟合。详见列表9.2.

    %LET DIR='.';
    %INC "&DIRCC_DATASET.SAS';
    /*Customer Age:5 EQUAL WIDTH Bins */
    %EqWBinn(CreditCard,CustAge,5,CustAge_b,CC1,Age_Map);

    /*Bin All the continuous variables using Binvar The mothod=1 is the Gini method*/

    /*Time at Address:5 bins*/
    %BinVar(CC1,TmAtAddress,Status,1,5,0.01,TmAtAddress_Map,TmAtAddress_b,CC2);

    /*Customer Income:5 bins*/
    %BinVar(CC2,CustIncome,Status,1,5,0.01,CustIncom_Map,CustIncom_b,CC3);

    /*Time with Bank:4 bins*/
    %BinVar(CC3,TmWbak,Status,1,4,0.01,TmWBank_Map,TmWBank_b,CC4);

    /*Average monthly balance:5 bins*/
    %BinVar(CC4,AmBalance,Status,1,5,0.01,AmBalance_Map,AmBalance_b,CC5);

    /*Utilization Rate:5 bins*/
    %BinVar(CC5,UtilRate,Status,1,5,0.01,UtilRate_Map,UtilRate_b,CC6);

    列表8.8 用%CalcWOE 计算WOE
    /*Customer Age*/
    %CalcWOE(CC6,CustAge_b,Status,CustAge_WOE,CustAge_WOE,CC7);

    /*Time at address*/
    %CalWOE(CC7,TmAtAddress_b,Status,TmAtAddress_WOE,TmAtAddress_WOE,CC8);

    /*Customer Income*/
    %CalcWOE(CC8,CustIncome_b,Status,CustIncome_WOE,CustIncome_WOE,CC9);

    /*Time With Bank*/
    %CalcWOE(CC9,TmWBank_b,Status,TmWBank_WOE,TmWbank_WOE,CC10);

    /*Average Monthly Balance*/
    %CalcWOE(CC10,AmBalance_b,Status,AmBalance_WOE,AmBalance_WOE,CC11);

    /*Utilization Rate*/
    %CalcWOE(C11,UtilRate_b,Status,UtilRate_WOE,UtilRate_WOE,CC12);

    /*WOE's for nominal variables*/
    %CalcWOE(CC12,EmpStatus,Status,EmpStatus_WOE,EmpStatus_WOE,CC13);
    %CalcWOE(CC13,ResStatus,Status,ResStatus_WOE,ResStatus_WOE,CC14);
    %CalcWOE(CC14,OtherCC,Status,OtherCC_WOE,OtherCC_WOE,oxed{ exttt{CC15}});

    LIBNAME CC '&DIR';

    DATA oxed{ exttt{cc.CC\_WOE}};
    SET CC15;
    RUN;

    用数据集CC的所有WOE变量拟合模型
    %LET VarList=
    CustAge_WOE TmAtAddress_WOE CustInCome_WOE
    TmWBank_WOE AmBalance_WOE UtiRate_WOE
    ResStart_WOE EmpStatus_WOE OtherCC_WOE
    ;

    /*Using Option NONE*/
    PROC LOGISTIC DATA=CC.CC_WOE;
    MODEL STATUS (EVENT='1')=&VarList
    /SELECTION=NONE;
    RUN;

    列表9.2中的代码显示,在宏变量%VarList中列出所有自变量,以提高MODEL语句的易读性。得到的模型参数及其相关的WALD卡方统计量见列表9.3.
    较高的P值青蛙,相关的变量是将被从模型中移出的候选变量。在最后,用逐步选择的选项SETPWISE,或其缩写形式S,代替选项NONE.

    /*Using Options STEPWISE(S)*/
    PROC LOGISTIC DATA=CC.CC_WOE;
    MODEL STATUS (EVENT='1')=&VarList / SELECTION=S SLE=.05 SLS=0.05;
    RUN;

    按表9.2的观点,这个值对于开发预测模型是可以接受的,这也是开发评分卡的情况。最终模型的参数结果见列表9.5.

    列表9.5表明,最终模型中所有变量的P值都小于0.05.PROC LOGISTIC 还输出了模型添加和移除变量的历史过程。表9.3总结了这些循环的历史。
    表9.3表明,输出列表9个变量中的7个包含中最终模型中。它还表明,在这种情况下,没有变量在被纳入模型以后又被移出。
    正如例9.1所证明,逐步选择过程的主要特征包括:
    1、在逐步选择法中变量进入模型的顺序不同于MODEL语句中指定的原始顺序。
    2、最终模型中并没有包含输入列表中的所有变量。
    3、某个变量可能在某步被纳入模型,然后双在另一步中被从模型中移除。

    强制变量进入模型
    尽管采用逐步法得到的模型中所有变量的相关系数都是显著的,但有时需要引入其他一些变量,尽管这些变量可能已经在逐步选择算法中被淘汰。这种情况通常出现在评分卡开发是基于申请数据以及行为数据时。所有客户的申请数据变量都可以被获取。而包含历史交易数据的行为数据变量则并非如此。新客户可能并没有发生足够的交易,导致无法获得所有各方面的数据。因此,为了使评分卡能覆盖客户数据集中更多的领域,可以将一些申请变量强制纳入模型。这将确保评分卡对所有客户都能做出有意义的评分,即使它们还没有发生足够多的交易。
    选项INCLUDE=n表示MODEL语句中列出的变量中前N个被强制纳入所有模型。

    例9.2 继续采用例9.2中生成的数据集CC_WOE。数据集CC_WOE中包含了所有候选预测变量的WOE转换。配合中,调整了LOGISTIC回归项,以强制逐步选择的所有迭代过程中包含前3个自变量。这可以通过调用MODEL语句中的选项INCLUDE=3实现,如列表9.6所示,需要注意的是,宏变量VarList中的变量顺序如例9.1相比发生了变量。运行列表9.6中的代码,将例如下变量被强制纳入所有模型:CustAge_WOE TmAtAddress_WOE 和 CustIncome_WOE.

    列表9.6 在逐步选择中强制选择某些变量
    %LET VarList
    CustAge_WOE TmAtAddress_WOE CustIncome_WOE
    TmWBank_WOE AmBalance_WOE UtilRate_WOE
    ResStatus_WOE EmpStatus_WOE OtherCC_WOE
    ;

    /*Fore the first three variable in order*/
    PROC LOGISTIC DATA=CC.CC_WOE;
    MODEL STATUS (EVENT='1')=&VarList/
    SELECTION=STEPWISE SLS=0.05 SLE=0.05 INCLUDE=3;
    RUN;

    需要注意的是,变量TmAtAddress_WOE在例9.1的逐步选择过程中已经被剔除出模型。因此,强制将其纳入后得到的模型将违反SLS设定的变量显著性约束。这可以通过检查最终参数得到证实,如列表9.7所示的估计量。
    列表9.7表明,变量TmAtAddress_WOE的WALD的卡方统计量是1.7675,其显著性是0.1837。因为强制将三个变量纳入模型,所以该变量表现了不可接受的P值。

    9.5 控制变量选择顺序
    有时,由于数据质量或模型实施方面的问题,某些变量需要比其变量优化纳入模型。因此,需要通过赋予某些变量较高的优先级来影响变量选择的顺序。
    表9.1 表明,选项SEQUENTIAL,或简写为SEQ,就是根据MODEL语句中指定的顺序选择纳入运算的变量。
    如果特定顺序的某个变量无法满足纳入模型的显著性要求,使SEQ强制按照指定顺序进行变量选择可能会存在问题。在这种情况下,该程序可能做出没有更多可用变量需要提前终止程序的结论,从页得到较弱的模型。
    因此,只有按照某些预测力指标,如基尼或熵方差指标,对变量进行排序,确保终止程序之前模型中已经包含了足够数量的预测变量,才可以使用该选项。
    例9.3 继续使用9.1中的数据集CC_WOE。本例将尝试强制变量选择过程遵循特定的顺序,如列表9.8所示,可以通过使用MODEL语句中选项SEQ来实现。
    列表9.8 在变量选择中使用选项SEQ
    %LET VarList=
    CustAge_WOE TmAtAddress_WOE CustIncome_WOE
    TmWBank_WOE AmBalance_WOE UtilRate_WOE
    ResStatus_WOE EmpStatus_WOE OtherCC_WOE
    ;

    PROC LOGISTIC DATA=cc.CC_WOE;
    MODEL Status (event='1')=&VarList/
    SELECTION = STEPWISE SLS=0.05 SLE=0.05 SEQ;
    RUN;

    运行这些代码将得到只包含一个变量Cust_AGE_WOE的模型。选择过程在第二个变量TmAtAddress_WOE时停止,因为它未能满足进入模型的最低要求。因此,模型只包含截距项和变量Cust_Age_WOE。与之前未强制采用特定变量选择顺序开发的模型相比,这个模型明显较差。

    LOGISTIC 回归结果

    PROC LOGISTIC 提供了几种选择,可以将结果保存到永久数据集,除了模型参数,还可以保存诊断统计量、预测概率和用于计算不同模型质量指标的某内部向量和矩阵等多个值。没有必要讨论所有这些选项,但需要重点关注下面两种特定输出结果:
    1、估计的模型参数
    2、预测的概率

    估计的模型参数将用于构建评分卡和验证数据的评分,而预测的概率将用模型结果的验证(见第10章)。下例将说明如何保存模型参数和预测概率。
    例9.4 列表9.9是对例9.1调整后的代码。在这种情况下,估计模型参数被保存在数据集MODEL_Params中,而因变量的预测概率被 保存在数据集Pred_Probs中。

    数据庥Pred_Probs中除了下列新字段,还有包含数据集CC中的所有变量。
    1、_LEVEL_:因变量的建模值(即1或0,本例中是1)
    2、Pred_Status:变量Status是1的概率
    3、Pi_L,Pi_U:置信区间内预测概率的上限和下限。在PROC LOGISTIC语句中,用参数ALPHA设定置信区间。默认值 是0.05,相当于95%的置信区间。
    SAS中生成这些变量的关键字打印在列表9.9的方框中。数据集MODEL_PARAMS中包含估计的模型参数,其中包含以下字段:
    列表9.9 将PROC LOGISTIC的结果保存到数据集
    /*Storing the results of the model in a dataset*/
    %LET VarList=
    CustAge_WOE TmAtAddress_WOE CustInCome_WOE
    TmWBack_WOE AmBalance_WOE UtilRate_WOE
    ResStatus_WOE EmpStatus_WOE OtherCC_WOE
    ;

    RPOC LOGISTIC DATA=cc.CC_WOE
    OUTSET=MODEL_PARAMS ALPHA=0.05;
    MODEL STATUS (EVENT='1')=&VarList/
    SELECTION=STEPWISE SLS=0.05 SLE=0.05;
    OUTPUT OUT=PRED_PROBS
    P=PROD_STATUS LOWER=PI_L UPPER=PI_U;
    RUN;

    1、_LINK_:该模型中使用的连接函数的名称。本书里评分卡开发中使用的所有LOGISTIC回归模型都将使用LOGIT值。
    2、_TYPE_:定义该数据集为参数数据集,PARAMS.
    3、_STATUS_:模型状态。如果模型无误差收敛或预警时,赋值为:0 CONVERGED
    4、_Name_:因变量的名称
    5、Intercept:拟合模型的截距项
    6、最张模型中变量的模型参数。变量选择过程中被众模型中移出被指定为缺失的模型参数。
    7、_LNLIKE_:最终模型中似然函数对数的负值。
    列表 9.10是这种情况下数据集MODEL_PARAMS结果的输出。

  • 相关阅读:
    存储用户当前的地理坐标,不要用string ,直接用float即可。string无法保持数据,原因暂不明
    让百度地图只再应用程序启动时,仅取一次用户坐标信息
    ygm900常用网站
    重置一个画面大小的方法
    代码的世界中,一个逻辑套着另外一个逻辑,如何让每一种逻辑在代码中都有迹可循?
    Multiview Applications(多个xib之前的切换) view controller和xib文件是如何关联在一起的 (手动关联 view controller和xib文件)
    一键让应用程序适配 iphone5
    UISCrollView 与 UIPageControl 之间产生联系,就靠这句代码pageControl0.currentPage = page;
    集中“验证”的思想
    静听夜雨
  • 原文地址:https://www.cnblogs.com/wdkshy/p/9898567.html
Copyright © 2011-2022 走看看