评分卡模型建模的各步骤中的一些方法工具、开发要点、优化方向、调研总结
评分卡的优势:
- 可解释性的对策
- 稳定性的要求及其对策
- 及时监控的要求
- 审核要求:分数分组、分区间
- 量化损失的要求,确定利息成本
特征工程的优化方向:
- 命名的规则化:因在特征变量的命名中包含:数据来源、 数据分布类型(连续型,离散型 )、 数据类型(字符、数字),以便做自动化
- 同源特征的自动化: 自动做 乘/除/ log 等操作,生成新衍生。
- 特征的分 bin:自动化计算最优分 bin (ChiMerge 算法)、 自动生成对应的分 bin 代码逻辑(在命名规则的前提下)
- 对于 B/C 卡: 提供逾期类的细节时序特征的自动化生成: Rencent / Frequent / Count 等特征的自动生成
- (重点:支持后期监控,建模前的分时段进行特征分布检测)GBDT的思想使其具有天然优势可以发现多种有区分性的特征以及特征组合。业界中,Facebook使用其来自动发现有效的特征、特征组合,来作为LR模型中的特征,以提高 CTR预估(Click-Through Rate Prediction)的准确性(详见参考文献5、6);GBDT在淘宝的搜索及预测业务上也发挥了重要作用(详见参考文献7)。
- 为了保留用户的逾期类的细节特征,可以加上时间维度,转换成二维数据,使用 autoencoder 将数据转换到新空间,再转换成一维,方便入 LR,也可以以此与人工设计的统计类特征做对比。
特征选择优化方向:
- 使用 variance Threshhold 筛除掉方差较低的特征
- 使用 f_regression(F-score) 方法来做特征筛选, 发现线性相关的特征
- 使用 mutual_infomation 来发现任意类型的相关性特征
- 使用 chi2 卡方检验(仅适用于离散特征,如统计量之类)做 特征与 label 的独立性检验
- Spearman 顺序型 秩相关系数
- Kendall 等级相关
- 使用 varcluster 或者 来根据高相关性特征-做特征分组筛选
- RFE (recursive features elimination) 特征筛选最优组合
- 使用 step-wise 做最优化特征组合的发现 :
- VIF 的共线性对于模型的影响:1. 容易过拟合 2. 如果入模型的特征变量中,多个模型特征能够表达另一个特征,那说明这几个特征中存在某个分量方向 与 另一特征变量夹角很小, 从而表现出类似于夹角很小的两个向量的点乘结果较大,从而使得该向量方向对于模型的贡献分值过大, 进而使得模型有偏,不稳定,影响模型表现。
模型训练的优化方向:
- SMOTE
- 生成新样本:使用 GAN 生成坏样本 https://zhuanlan.zhihu.com/p/25071913
- 加权
- overSampling
- 使用mlxtend 来绘制模型分割面,以分析数据及模型的过拟合情况
- hyperopt
- 贝叶斯参数调优
模型集成:
- 将现有的 statsmodel 的模型训练过程代码嵌入到 sklearn 中, 让他变成一个Pipeline的一部分,包含 dataSaver
- 利用 GBDT 生成的特征做model
- 分分钟带你杀入Kaggle Top 1% https://zhuanlan.zhihu.com/p/27424282
- 如何进入Top 10% https://dnc1994.com/2016/04/rank-10-percent-in-first-kaggle-competition/
- Xgboost 原理与调优 https://zhuanlan.zhihu.com/p/30848967?utm_medium=social&utm_source=wechat_session
监控的优化方向:
- psi 计算
- 打分异常问题自动计算定位
- 采用 auto_encoder + logistic 建模, 此时,需要监控的就是 auto_encoder 的各个维度, 可以做到提前发现异动, 但如何定位具体导致问题的原因所在,依然较为困难。
- 模型的分界面可视化:mlxtend
上线实施的优化方向:
- 优化实施过程:根据将训练好的模型参数、分 bin 逻辑、woe 自动化输出,生成实施过程需要的 分 bin 逻辑代码、 woe 转换代码
- 优化实施打分与离线打分的核对流程:
- 实施打分表 与 离线打分表的结构统一,方便使用两份数据的对应字段进行 分 bin 和 woe 的数值比对,确认离线与实施代码的逻辑一致性。
- 提供自动核对与统计的代码
- 数据预处理:
- Z-score
- Min-max (对于神经网络类存在激活函数 Saturation 问题的,建议标准化到:0.1~0.9区间,Depending on the task objetives. For example; for neural networks is recommended normalization Min max for activation functions. To avoid saturation Basheer & Najmeer (2000) recommend the range 0.1 and 0.9. Another possibility is to use the Box Cox transformation + constant to avoid the problem of the zeros)
- Std-norm
- 数据验证:
- 各时间阶段 ylabel 的分布
- 各类统计量
- 分 bin标准
- 好坏比(对数几率? Logit? woe) 差15
- 最多 8 个分 bin
- 最少分组含有2%的样本,其中不少于30的坏用户样本
- Bad_rate 单调递减
- Bad rate 尽量等差
- 类别型的特征转换
- LabelEncoder
- OneHotEncoder(dummies)
- Woe
- 单颗树的叶子节点编号
- 数值类变量分组 或 类别型变量的离散化优化方法:
- Gini
- 卡方
- 信息熵增益 (决策树的叶子节点编号,再合并分组,再确定目标数值?)
- WOE (非线性转换,与强烈暗示性的数值)
- 筛选:
- Varclus 分组,
- 特征选择:
- 单变量特征选择:
- 回归类:f_regression , mutual_info_regression
- 分类: chi2 , f_classif , mutual_info_classif
- 递归特征降维:sklearn 的 RFE方法
- http://scikit-learn.org/stable/modules/feature_selection.html
- 相似度
- unique column
- 特征取值极度不平衡: 99:1
- 全自动分箱 与 逻辑生成:
- 全自动分 bin:参考分 bin 标准
- 模型参数:
- imbalance
- 拒绝推断对于模型的提升
- 建模初期选用的是 “有偏样本” , 只选择了在公司业务系统中有表现的用户,实际上,还有之前并未通过系统的样本也是申请者之一,他们属于样本总体,但却被筛选掉了。
- 正确标准的做法是: 使用:对被拒绝用户进行推断演绎技术,即: 使用有偏的有变现用户进行第一版建模,完成后,使用该模型对’‘被拒绝用户’’进行预测, 然后 将预测的概率作为其权重, 重新加入训练样本中,重新分 bin 和建模,这样才能用上原始的真正分布。
- 金融领域建模使用 ks 或者 auc的原因是什么
- ks 与 auc 可以量化区间的损失或者说坏账率在承受范围内, 并可以以此计算出放贷的基础利率
- 正负样本的不均衡使得像 accuracy 这类指标不适用。
评分卡 逻辑回归中的模型指标解释说明 :
- 卡方: 越接近1越好
- Adj. R-squared:
- F统计量: 大于 3.86
- Prob 统计量:
- logs 似然
- AIC :
- BIC :
- T 统计量:每个变量的绝对值都应大于 1.96
- P 值 > |t|:都应小于0.05
参考:
- SPSS分析技术:线性回归分析(Evernote 有保存) https://zhuanlan.zhihu.com/p/25507503
- 回归模型的一些判断方法 (Evernote 有保存) https://blog.csdn.net/joeland209/article/details/69367318
OLS Regression Results
==============================================================================
Dep. Variable: LTS R-squared: 0.531
Model: OLS Adj. R-squared: 0.453
Method: Least Squares F-statistic: 6.806
Date: Fri, 27 Apr 2018 Prob (F-statistic): 0.00291
Time: 15:30:53 Log-Likelihood: 85.700
No. Observations: 22 AIC: -163.4
Df Residuals: 18 BIC: -159.0
Df Model: 3
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [95.0% Conf. Int.]
------------------------------------------------------------------------------
const -0.9666 0.449 -2.155 0.045 -1.909 -0.024
fpd90 -5.6018 2.940 -1.905 0.073 -11.778 0.575
log_sub 5.5858 2.933 1.905 0.073 -0.576 11.747
log2_add -5.6248 2.950 -1.907 0.073 -11.823 0.573
log_add -5.6177 2.947 -1.906 0.073 -11.809 0.574
log10_add -5.6087 2.943 -1.906 0.073 -11.792 0.574
sqrt_add -0.6421 0.647 -0.992 0.334 -2.002 0.718
log2_sub 5.5787 2.930 1.904 0.073 -0.576 11.734
log10_sub 5.5948 2.937 1.905 0.073 -0.575 11.765
sqrt_sub 10.5615 5.269 2.005 0.060 -0.507 21.630
==============================================================================
Omnibus: 0.110 Durbin-Watson: 1.900
Prob(Omnibus): 0.946 Jarque-Bera (JB): 0.047
Skew: 0.047 Prob(JB): 0.977
Kurtosis: 2.795 Cond. No. 1.05e+19
==============================================================================
参考:
F-test 与 互信息 在特征与 label 的相关性计算上的对比:http://scikit-learn.org/stable/auto_examples/feature_selection/plot_f_test_vs_mi.html#sphx-glr-auto-examples-feature-selection-plot-f-test-vs-mi-py
嵌套交叉验证Nested versus non-nested cross-validation:
多个模型用 AUC 作为筛选,用 TPR确定决策点:http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc_crossval.html#sphx-glr-auto-examples-model-selection-plot-roc-crossval-py
特征的聚类: 谱聚类(varcluster 是否由PCA 计算特征向量个数,再根据此设定 cluster 数量,使用谱聚类计算结果),http://scikit-learn.org/stable/auto_examples/bicluster/plot_spectral_coclustering.html#sphx-glr-auto-examples-bicluster-plot-spectral-coclustering-py
样本相似度度量方法 拉普拉斯核函数 高斯核 RBF 核函数的表达式: http://scikit-learn.org/stable/modules/metrics.html#cosine-similarity
LR 不会偏移分离超平面向大类: this is an imbalanced dataset, you could do under sampling for majority case as the results are always going to be biased towards majority (exception Logistic Regression) use SMOTE, ROSE, k-medoids for the same. Or you could do random under sampling :https://www.kaggle.com/arathee2/achieving-100-accuracy
作者:
fandyst
出处: http://www.cnblogs.com/todototry/
关注语言: python、javascript(node.js)、objective-C、java、R、C++
兴趣点: 互联网、大数据技术、大数据IO瓶颈、col-oriented DB、Key-Value DB、数据挖掘、模式识别、deep learning、开发与成本管理
产品:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
出处: http://www.cnblogs.com/todototry/
关注语言: python、javascript(node.js)、objective-C、java、R、C++
兴趣点: 互联网、大数据技术、大数据IO瓶颈、col-oriented DB、Key-Value DB、数据挖掘、模式识别、deep learning、开发与成本管理
产品:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。