2021-01-20 数据分析思路和代码实现

背景

一些业务问题被一再抽象后,产业对指标越来越清晰,从原来的策略性研究慢慢向精细化数量化发展,这时候多变量的组合变成可能性,模型分析或者特征分析推向前台。以下描述的是我比较常用的分析思路,正在逐步代码化归纳化。

框架(颜色标示是否完成)

  1. 加载基础数据
    1.1. 加载各类数据集
    1.2. 数据排重处理
    1.3. 合并数据集
  2. 变量衍生
    2.1.
  3. 特征基本描述
    3.1. 数据概览表(含字段类型、唯一值、最小、最大、中位数等)
    3.2. 直方图(等距分箱、Excel输出)
    3.3. 缺省值处理(单独一类、考虑效率处理2000+变量的能力)
    3.4. 分箱处理(等频分箱、卡方分箱,新生字段-序号/WOE)
    3.5. WOE计算(考虑因变量的线性化处理)
    3.6. IV值计算(信息量筛选)
    3.7. 分时间轴PSI计算(稳定性筛选)
  4. 初步筛选特征
    4.1. 常规逻辑(概览+IV+PSI)
    4.2. 特征图形化(反映分布及因变量关系)
    4.3. 相关性检验(因变量之间相关性检验-Spearman)
  5. 模型评估
    5.1. 特征类型转化(OneHotEncoder、LabelEncoder)
    5.2. 抽样和切分数据集合(Train、Test)
    5.3. 模型选择(Xgboost、LR、、超参选择、交叉检验)
    5.4. 模型评估(AUC、KS、F1、分段图形化(反映分布及因变量关系))
    5.5.
  6. 重复迭代(重要)
    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)

你可能感兴趣的:(2021-01-20 数据分析思路和代码实现)