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信用评分之模型拟合以及验证的大坑的更多相关文章
- SAS信用评分之逻辑回归的变量选择
SAS信用评分之逻辑回归的变量选择 关于woe的转化,这一部在之前的这篇文章:sas批量输出变量woe值中已经写了,woe也只是简单的公式转化而已,所以在这系列中就不细究了哈.这次的文章我想来讲逻辑回 ...
- sas信用评分之第二步变量筛选
sas信用评分之第二步变量筛选 今天介绍变量初步选择.这部分的内容我就只介绍information –value,我这次做的模型用的逻辑回归,后面会更新以基尼系数或者信息熵基础的筛选变量,期待我把. ...
- SAS信用评分之番外篇异常值的识别
SAS信用评分之番外篇异常值的识别 今天想分享给大家的是我早期建模的时候一个识别异常值的办法,也许你在"信用风险评分卡研究"看过,但是代码只能识别一个变量,我将这个代码作了改良,但 ...
- 3分钟搞明白信用评分卡模型&模型验证
信用评分卡模型在国外是一种成熟的预测方法,尤其在信用风险评估以及金融风险控制领域更是得到了比较广泛的使用,其原理是将模型变量WOE编码方式离散化之后运用logistic回归模型进行的一种二分类变量的广 ...
- WOE:信用评分卡模型中的变量离散化方法(生存分析)
WOE:信用评分卡模型中的变量离散化方法 2016-03-21 生存分析 在做回归模型时,因临床需要常常需要对连续性的变量离散化,诸如年龄,分为老.中.青三组,一般的做法是ROC或者X-tile等等. ...
- 信用评分卡 (part 6 of 7)
python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...
- 信用评分卡 (part 2of 7)
python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...
- 信用评分卡 (part 1 of 7)
python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...
- 信用评分卡Credit Scorecards (1-7)
欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章 python风控评分卡建模和风控常识 https://study.163.com/course/introductio ...
随机推荐
- 解决element-ui表头错位的问题
经过测试得出: 使用element-ui的表格,并在table中设置固定height会出现表头错位的现象(不知道是什么bug) 解决方案: 将height改为max-height,设置固定高度为最大高 ...
- Windows API 第16篇 GetLogicalDrivers 获取驱动器位掩码
函数原型:DWORD GetLogicalDrives(VOID);The GetLogicalDrives function retrieves a bitmask representing the ...
- 跟我一起在ubuntu中安装docker
卸载旧版本 $ sudo apt-get remove docker docker-engine docker.io 查看ubuntu版本 设置安装源 通过如下步骤,设置安装源仓库,这里我们使用阿里源 ...
- Spring整合JUnit单元测试
必须先有JUnit的环境(已经导入了Junit4的开发环境) 1.导入jar包 2.在测试类上添加注解 @RunWith(SpringJUnit4ClassRunner.class) @Context ...
- HZOI20190722 B visit 组合数+CRT合并
题目:https://www.cnblogs.com/Juve/articles/11226266.html solution: 30%:dp 设dp[k][i][j]表示经过k时间,在(i,j)的方 ...
- Python-可变类型与不可变类型
可变类型 可以变化的,列表和字典 利用id()函数 查看内存地址 内存地址变化即不可变类型. 内存地址不变化即可变类型 不可变类型 不可以变化的,字符串和数字 字符串内置方法 索引取值 索引切片 成员 ...
- 移动端网站如何开发(电脑端网站到手机端网站我们需要在html代码中添加哪个meta标签)
移动端网站如何开发(电脑端网站到手机端网站我们需要在html代码中添加哪个meta标签) 一.总结 一句话总结: 添加viewport标签:meta name="viewport" ...
- PAT甲级——A1036 Boys vs Girls
This time you are asked to tell the difference between the lowest grade of all the male students and ...
- Eclipse使用过程的常见问题:
3-1 "Failed to load the JNI shared library" -jdk 与eclipse位数不一致出现的问题 解决方法: ...
- VS中warning MSB8004和error MSB4018解决方案
问题如下: warning MSB8004: Output Directory does not end with a trailing slash. This build instance wil ...