两个卡方分布之和_sklearn之逻辑回归(3)——评分卡

我是谁?妙蛙种子

b473565cdfd3db4c97a483098685103c.png

一般建模流程主要分为特征工程+建模两步,其中特征工程又可以分为数据预处理阶段和特征工程阶段。数据预处理一般有数据无量纲化处理(归一化、标准化),缺失值填补(0填补,均值填补,随机森林填补),分类特征编码(分类特征编码、onehot),连续变量分段(二值化、分箱)。特征工程一般有特征提取(从非结构化数据中提取到新消息作为特征),特征创造(对特征进行组合得到新特征),特征选择(从所有特征中选择出有意义的特征)。在进行特征工程之前第一步需要的是理解业务。

在特征工程中,特征提取与特征创造在不同的建模任务中是完全不同的,这两者更多的与业务相关联,而特征选择可以有一些普遍意义上的方法,例如过滤法(方差过滤--剔除方差小于某阈值的,相关性过滤--卡方过滤/F检验/互信息,一般可以考虑先方差过滤,再互信息)、嵌入法(Embedded,需要用某个机器学习算法进行训练计算所有特征权重,并根据权重大小选择特征)、包装法(借助算法选择特征,计算成本高)、降维算法(pca,降维后特征的含义消失了)。

基于上进行罗辑回归评分卡的案例分析。

e9c2a54ff07fed9d074699c86a606792.png

案例:用逻辑回归制作评分卡

评分卡是一种以分数形式来衡量一个客户的信用风险大小的手段。其本身与一般的建模类似,但是在特征工程中会涉及到一些较为特别的转换,例如需要分箱、计算woe,iv,ks等等。

0.导入必要的库

866be877e0dd27f81d68ff8f5770ba31.png

如果数据特征比较多,可以用pd.set_option('display.max_columns', None):显示所有行,查看所有特征的情况,当然也可以修改参数看到所有列。

1.数据读取与准备

0994e97559012cb21a44793cea6ce828.png

本案例数据特征为358维,因此使用另一份文件对每个特征进行标注,区分每个特征是什么类型对特征,是否是布尔特征。

c71a73b7e5f8a6743d84ba7bc8551e10.png

2.数据预处理

剔除无效样本

a5017046946e8ca0c40778ecc044a63b.png

此处剔除来缺失率大于0.9对样本,还有其他对参考标准,例如某些样本不符合常理,也同样可以进行剔除,可以通过data.describe()查看特征对分布情况。需注意,在对样本对行进行增删后必须重置索引,否则后续可能会出错。

aafe3cfbb61c2f13d9f0ed2125b82264.png

分训练集和测试集也同样需要进行索引重置

剔除无效特征

1434e06d53dd685ec4dced883d350c4b.png

首先从直观对角度来剔除无效特征,使用特征标注文件,将无关变量剔除,同时对特征进行描述统计,剔除缺失率>0.5,差异系数<0.01,枚举数=1的特征,当然此处的阈值可以自行决定。

31f6690d9b9abfd54f4dd0ed71ac5210.png

对于分类特征进行编码,labelencoder,这份数据中有3个特征属于非数字编码,因此需要先编码称数字才能进行建模,而在数据中又涉及到大量的缺失值,采取的方式是先对缺失值填充为-99,再进行编码,相当于把缺失值也算为一类。

8445640dc028b5b07dba26bbffbb85a4.png

缺失值填补,对于某些特别有意义对特征可以采用随机森林进行缺失值填补,其余字段用-99进行填补,填补后进行分箱,相当于就是将缺失值集中插补为1类。

针对评分卡对制作一般不进行归一化或标准化,诚然进行归一化/标准化可以提高模型效果,加速模型优化,但是归一化后的数据无法被业务人员准确识别。

评分卡中的另一个问题是得到的样本一般都是不均衡的样本,毕竟大部分人是不愿意违约的。而逻辑回归中一般采用上采样的方式来平衡样本。可以使用imblearn库,本案例给到的数据是已经进行平衡来的,因此无需采取这一步。

训练集和测试集也可以在这一步再进行划分,减少之前几步特征工程都要分别对训练集和测试集进行的工作量。

4342e80dd4d21236cfd50703e8280862.png

分箱数的确定,可以依据WOE和IV

90d942aa7416484ae35bb2bcbdc71575.png

c255f12529e39f94c1b6f007c769184b.png

其中woe是针对于1个箱子的,而iv是针对于一个特征的。

afea0e353205ae43cc6ce82173742bc8.png

分箱约多,IV越大,但是鲁棒性也会变差,本案例中多分箱IV值依然不高。

分箱的目的:组间差异大,组内差异小 。可以通过计算两个分箱之间的卡方值,如果两分箱差异不大,卡方检验p值会较大,那么两个分箱可以进行合并。

分箱步骤:

1)首先把连续型变量分成一组数量较多的分类变量,比如,将几万个样本分成100组,或50组
2)确保每组中都要包含两类样本,一类样本IV值会无法计算
3)对相邻的组进行卡方检验,若卡方检验的P值很大则进行合并,直到数据中的组数小于设定的箱数为止
4)一个特征分别分成[2,3,4.....20]箱,观察每个分箱个数下的IV值如何变化,找出最适合的分箱个数
5)分箱完后,计算每个箱的WOE值,观察分箱效果

在等频分箱的基础上可以将其升级为使用卡方检验检验两箱体之间是否存在显著差异,若无显著差异则合并两分箱。

a64a3cda572dafa86dddd00ab9c80ed6.png

将缺失值填补为‘-99’,使其成为单独一类

根据woe,iv,ks公式计算对应分值

7709fe322eebd9360f444c4fa7a926ff.png

根据iv和ks对计算结果筛选特征,这一步本质上依然是特征选择对过程。

29414791228ec334ba768e2588ea139d.png

依据上一步计算得到的每一个分箱的woe值,对原始数据进行woe编码映射,即在哪一分箱就用对应的woe值代替当前值。

cdc7bfc6700a18fd2c1094209f5f8dad.png

分离x和y

e15816440076cc9ce307815e1342e264.png

在常规建模中会有特征衍生和特征筛选,但是在该建模任务中,效果均不佳。

c94fa15d81bba6d9b9d43ddf153accfa.png

基于上述数据进行建模,建模效果并没有很好

d4f79372b5695ae615de3a1f63967a80.png

学习曲线调参

eb24f34606262846241042ea8f0dd477.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值