SAS信用评分之模型拟合以及验证的大坑

今天的内容是来讲我这段时间被模型拟合和模型验证坑过的那些事。我也是千辛万苦终于是把模型给建出来了。此处应该有掌声。因为模型老是效果不好这件事,我躲在被窝里哭了好几次。好吧,讲正事。

leslie模型拟合

首先,我们来讲下模型拟合的事情,其实模型拟合在我这里就是我到底要选择什么变量进入模型,我到底应该选择多少个变量进入模型。我之前发过一个循环产出变量组合代码,然后算ks值的代码。具体链接在这里:SAS信用评分之逻辑回归的变量选择 现在回头看有点瞎,哈哈哈哈哈。

你可能刚开始200个变量变量输入proc
logistic过程,你设置参数 sls=0.05,sle=0.05(SLE:sas中在变量选举进入的参数,SLE(sets
criterion for entry into model)
是变量进入模型的标准即统计意义水平值P<0.3,是定逻辑回归中变量纳入的主要条件。SLS:sas中在变量选举进入的参数,SLS(sets
criterion for staying in
model)是变量在模型中保留的标准即统计意义水平值P<0.3,是定逻辑回归中变量保留的主要条件。逻辑回归变量进入后,因为新的变量进入导致老的变量对整个模型的贡献不足,从中移出的阀值。)0.3是默认条件。那么卡方检验小于0.05的变量都会被筛选出来。

假设你的领导发话了,你最终的模型的变量个数要控制在10-14个,但是这时候可能筛选出来有30几个。那么这30几个你要怎么知道那十几个组合,ks很好,而且达到了要求,之前有人说用主成分分析,主成分分析的理论好像也有这个道理。但是需要注意的是:

 小知识 

主成分分析:利用降维(线性变换)的思想,在损失很少信息的前提下把多个指标转化为几个综合指标(主成分),用综合指标来解释多变量的方差-
协方差结构,即每个主成分都是原始变量的线性组合,且各个主成分之间互不相关,使得主成分比原始变量具有某些更优越的性能(主成分必须保留原始变量90%以上的信息),从而达到简化系统结构,抓住问题实质的目的综合指标即为主成分。

但是在我脑子存在的逻辑回归理论是,逻辑回归是一个非线性回归,自然就推翻了主成分分析来降维的方案。具体的为什么不可以用主成分分析,欢迎大神在留言区给出更具体的解释。

我们回到我们那个筛选出来的30几个变量的问题上。其实这个方法是一个关注我公众号的大神告诉我的,谢谢大神。让我来演示一下代码。

Ods Output ParameterEstimates=aa ;



proc logistic data=raw.rong_test12 outest=bb ;



model APPL_STATUS_1(event="1")=



woe_new_industry  



woe_new_G_MARITAL_P  



woe_new_Q_TLNINE_CNT



woe_new_EDUCATION



woe_new_query_time_n



woe_new_OPERATOR_num_N



woe_new_q_lcc_six



woe_new_a_muser_rate



woe_new_cq_cc_rate



woe_new_o_recently_C



woe_new_q_cc_o



woe_new_q_othree_cnt



woe_new_ACCOUNT_HOUSELOAN



woe_new_c_DELQ_cnt



/selection=score start=14 stop=14 best=10



outROC=ROC_train;



output out=pp



   
p=pred_status lower=pi_l upper=pi_u ;



run;

其实这个代码中,可能你觉得有疑问就是start=14
stop=14
best=10这三个参数是什么意思。这三个参数的大概的意思就是表达,我要14个变量,然后,你显示前十种最好的组合给我。

 小知识 

卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,越不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为0,表明理论值完全符合。

然后代码跑出来就有“评分卡方”评分的前十个的变量组合,这时候你要是设定best=20,那就是前20。至于这个得分是怎么计算的,我等级还不够,所以我没办法解释。Sorry啦。

那么这10种组合你就可以去挑选,符合业务的啊,或者说ks值比较高的,或者说你做点其他的检验计算,就看你的领导对于模型的评估啦。

以上就是模型拟合的内容,其实还是选择变量的内容啦。

leslie模型检验

验证的内容。其实验证同个数据源的测试数据集的测试这个是比较简单的,毕竟这批数据是跟你的训练数据集一起产生的。有点麻烦是关于跨期数据的验证,这里的跨期的意思,是譬如我取得是2015.8-2016.8的数据,那么我会用2016.9-2016.10的数据作为跨期数据来验证下原模型的效果。

这部分我就没什么代码给你们啦,只是在这里要说一个注意的点,这也是一个关注我的公众号的大神告诉我的。就是在跨期验证的时候,可能效果不是很理想,但是这时候呢,你不要急于泄气。

现在我举一个例子,说下你大概就懂了。

跨期验证某变量的分布:

原模型某变量的分布:

这是一个连续变量在跨期验证以及原模型中分段的分布。那么既然分段的坏账率我们没办法控制,但是需要控制的是,分段的分布我们还是应该调节到和原来模型的分布是差不多,所以在生成跨期数据的时候,需要每个变量都检查跟原来的分布是不是一致,假设对于连续变量分布有5%-10%的偏差就建议调节一下分段范围,让分段接近一下原模型的分布。

假设这个办法都让你的模型效果都达到不到领导要求的话,而且你的变量也是没办法怎么衍生,或者也没有什么其他变量可以拿来用的话。假设在数据量足够的情况下,建议可以分成两部分,譬如分成男女分开建模。这种分开建模的方式也只是建议,还是你要征得领导同意啦。

SAS信用评分之模型拟合以及验证的大坑的更多相关文章

  1. SAS信用评分之逻辑回归的变量选择

    SAS信用评分之逻辑回归的变量选择 关于woe的转化,这一部在之前的这篇文章:sas批量输出变量woe值中已经写了,woe也只是简单的公式转化而已,所以在这系列中就不细究了哈.这次的文章我想来讲逻辑回 ...

  2. sas信用评分之第二步变量筛选

    sas信用评分之第二步变量筛选 今天介绍变量初步选择.这部分的内容我就只介绍information –value,我这次做的模型用的逻辑回归,后面会更新以基尼系数或者信息熵基础的筛选变量,期待我把. ...

  3. SAS信用评分之番外篇异常值的识别

    SAS信用评分之番外篇异常值的识别 今天想分享给大家的是我早期建模的时候一个识别异常值的办法,也许你在"信用风险评分卡研究"看过,但是代码只能识别一个变量,我将这个代码作了改良,但 ...

  4. 3分钟搞明白信用评分卡模型&模型验证

    信用评分卡模型在国外是一种成熟的预测方法,尤其在信用风险评估以及金融风险控制领域更是得到了比较广泛的使用,其原理是将模型变量WOE编码方式离散化之后运用logistic回归模型进行的一种二分类变量的广 ...

  5. WOE:信用评分卡模型中的变量离散化方法(生存分析)

    WOE:信用评分卡模型中的变量离散化方法 2016-03-21 生存分析 在做回归模型时,因临床需要常常需要对连续性的变量离散化,诸如年龄,分为老.中.青三组,一般的做法是ROC或者X-tile等等. ...

  6. 信用评分卡 (part 6 of 7)

    python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...

  7. 信用评分卡 (part 2of 7)

    python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...

  8. 信用评分卡 (part 1 of 7)

    python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...

  9. 信用评分卡Credit Scorecards (1-7)

      欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章 python风控评分卡建模和风控常识 https://study.163.com/course/introductio ...

随机推荐

  1. 将ERF格式转换成PCAP格式

    在研究网络流量分析的时候,wireshark默认采用pcap格式.对于用Endace DAG捕捉卡捕获的数据包,一般来说,都是erf格式的.一般来说,此种格式包含了更多了链路层信息.而我们采用wire ...

  2. [Swoole系列入门教程 4] 定时器与心跳demo

  3. /etc/vimrc配置

    [root@guolicheng ~]# cat /etc/vimrc if v:lang =~ "utf8$" || v:lang =~ "UTF-8$" s ...

  4. JZOJ100045 【NOIP2017提高A组模拟7.13】好数

    题目 题目大意 首先有一个定义: 对于一个数,如果和它互质的数可以组成一个等差数列,那么这个数叫"好数". 现在给你一个数列,有三种操作: 1.询问一段区间内的好数的个数. 2.将 ...

  5. C/C++获取系统当前时间

    C/C++获取系统当前时间   C库中与系统时间相关的函数定义在<time.h>头文件中, C++定义在<ctime>头文件中. 一.time(time_t*)函数 函数定义如 ...

  6. HZOI20190902模拟35题解

    题面: A:公园 DAG上想拓扑dp 然而博主记忆化搜索了一下 设f[i][j]表示从i节点走j个点出公园所用的最小时间 则$f[u][i]=min(f[v][j-1]+dis_{u,v})$; 然后 ...

  7. light oj 1219 树上贪心

    #include <iostream> #include <cstdlib> #include <cstring> #include <queue> # ...

  8. 015-WebDriver API

    1. 从定位元素开始 8种元素定位方法 id find_element_by_id( ) name find_element_by_name( ) tag find_element_by_tag_na ...

  9. Tensorboard在Win7下chrome无论如何无法连接的情况

    后记:其实发现原因后感觉自己很蠢,是自己开了一个软件叫adsafe,会屏蔽一些东西,所以我拼命的用自己的电脑ip都连不上,换成回环地址就好了,把软件关了也可以. 在无数种尝试后,终于在stackove ...

  10. mac上python3.x安装 图文详解

    mac安装brew报错及解决办法 https://blog.csdn.net/zdp072/article/details/82563320 更改脚本中的资源链接,替换成中国科学技术大学的镜像 htt ...