背景
一些业务问题被一再抽象后,产业对指标越来越清晰,从原来的策略性研究慢慢向精细化数量化发展,这时候多变量的组合变成可能性,模型分析或者特征分析推向前台。以下描述的是我比较常用的分析思路,正在逐步代码化归纳化。
框架(颜色标示是否完成)
- 加载基础数据
1.1. 加载各类数据集
1.2. 数据排重处理
1.3. 合并数据集 - 变量衍生
2.1. - 特征基本描述
3.1. 数据概览表(含字段类型、唯一值、最小、最大、中位数等)
3.2. 直方图(等距分箱、Excel输出)
3.3. 缺省值处理(单独一类、考虑效率处理2000+变量的能力)
3.4. 分箱处理(等频分箱、卡方分箱,新生字段-序号/WOE)
3.5. WOE计算(考虑因变量的线性化处理)
3.6. IV值计算(信息量筛选)
3.7. 分时间轴PSI计算(稳定性筛选) - 初步筛选特征
4.1. 常规逻辑(概览+IV+PSI)
4.2. 特征图形化(反映分布及因变量关系)
4.3. 相关性检验(因变量之间相关性检验-Spearman) - 模型评估
5.1. 特征类型转化(OneHotEncoder、LabelEncoder)
5.2. 抽样和切分数据集合(Train、Test)
5.3. 模型选择(Xgboost、LR、、超参选择、交叉检验)
5.4. 模型评估(AUC、KS、F1、分段图形化(反映分布及因变量关系))
5.5. -
重复迭代(重要)
6.1. overfitting时,重复4和5
6.2. underfitting时,重复2、3、4和5
样例提供
未来提供GitHub地址
待验证问题
1.使用逻辑回归可以解决overfitting?
是的,XGB-auc: Train:0.6813 Test:0.5802, LR-auc: Train:0.5703 Test:0.5888
2.筛选变量后建模效果可以更好?
是的,XGB用2500个变量计算 Test-auc:0.5790,挑选28个变量 Test-auc:0.5802
3.连续性变量通过分箱变量可以提升模型效果?
是的,控制28个变量不变,逻辑回归验证:原始数据-auc-0.588,等频分箱序号替换-auc-0.598,等频分箱WOE替换-KS-0.189
4.使用WOE转化数值可以进一步提升模型效果?
是的,控制28个变量不变,逻辑回归验证:原始数据-auc-0.588,等频分箱序号替换-auc-0.598,等频分箱WOE替换-auc-0.618
5.
是的,控制28个变量不变,逻辑回归验证:原始数据-auc-0.588,卡方分箱序号替换-auc-0.595,卡方分箱WOE替换-auc-0.635
卡方分箱WOE替换 > 等频分箱WOE替换 > 卡方分箱序号替换 = 等频分箱WOE替换 > 原始数据
补充信息:卡方分布->卡方检验->卡方分箱
卡方检验:
1.拟合优度检验:拟合优度是对一个分类变量的检验,判断期望频数与观察频数是否有显著差异。理解为一个X是否与Y有必然联系
2.独立性检验:独立性检验是两个特征变量之间的计算,它可以用来分析两个分类变量是否独立。理解为一个X与另一个X是否独立
6.woe化之后是不是不用考虑单调性?
woe值应保持单调性,但业务含义的变量可以不用单调性。
如果不考虑业务可解释性,例如年龄变量逻辑回归的系数是0.58,相当于0.58(0.192是否'18-22'-0.082是否'23-30'+0.095是否'31-40'+0.155*是否'41-150'),虽然变量业务含义不单调,但woe本身是单调的,在训练以及应用时,参与到模型中的都是woe值,而不是本身的分类字段(年龄分层)
目标是:随着woe的增加,badrate也增加的单调性(X轴是woe,Y轴是badrate)
网友评论