1. PSI
2. WOE编码
WOE(Weight of Evidence,证据权重)是一种对原始自变量进行编码的形式。它的定义为:
其中, 是这个分组中相应客户占样本中所有响应客户的比例, 是这个分组中未响应客户占样本中所有未响应客户的比例。
WOE实际上表示的是“当前分组中相应客户占样本中所有相应客户的比例”和“当前分组中没有响应的客户占样本中所有没有响应的客户的比例”之间的差异。也可理解为,当前分组中响应客户和未响应客户的比值与所有样本中这一比值之间的差异。这个差异是用对这两个比值的比值取对数来表示的。WOE 越大,这种差异越大,这个分组里的样本响应的可能性就越大;WOE越小,差异越小,这个分组里的样本响应的可能性就越小。
在对短文本类型的变量进行转换时,WOE映射的效果相比于one-hot编码和词嵌入embedding技术要更有效。其实在最早的评分卡中,无论是对字符型变量还是对数值型变量都要进行WOE映射。对数值型变量进行WOE映射主要是为了弱化极值影响、增加模型鲁棒性。但树模型对极值和变量分布波动并不敏感,因此在XGBoost评分卡中只对字符型变量进行WOE映射。
在实现WOE映射的过程中,最重要的一点是分箱的逻辑,显然分箱不同,得到的WOE映射值会有很大不同。这里使用基于负样本占比差异最大化的分箱原则。所期望得到的分箱结果应该是,箱的总数在5箱以内(可以适当调整,通常不超过10箱),并且每一箱之间的负样本占比差值尽可能大(箱合并原则),每一箱的样本量不能小于整体样本的5%(可以自己根据分箱结果调整,原则是不要太小)。换言之,主要通过控制划分后的总箱数,来迭代进行箱的合并。分箱个数以及最小样本占比需要使用者根据实际情况进行微调。
1.4.1 solveKS
solveKS函数用来计算当前模型在某数据集上的KS。KS值对模型的评价不受样本不均衡问题的干扰,但仅限于模型评价。如果想获得表现更好的模型,还需要针对不均衡问题进行优化。
3. 时间外样本集 OOT
实际建模过程中通常使用3个数据集:训练集、测试集、时间外样本集(Out of Time),注意,在数据量足够大的情况下,百分比采样得到的测试集和训练集没有明显差异,实际建模中不一定需要保留。
4. 特征筛选
XGBoost等树模型只关心数值的排序,对变量的分布和取值范围并不敏感,所以不需要进行归一化处理。为保证树模型的精度,对数值型变量也未做分箱处理。
直接根据XGBoost算法的特征重要度少于某一阈值对特征进行筛选,有一定的不合理性:当某些低重要度特征被删除后,其余低重要度特征的重要度会有所上升。
使用一种基于迭代思想的特征筛选方法来完成特征筛选的第一个环节。这样做的目的是削弱特征间的相互影响。
1.4.2 solvePSI
solvePSI函数在本例中用于计算模型在训练集与时间外样本集上的稳定度指标(Population Stability Index,PSI)。风控从业者经常使用PSI衡量模型或特征的稳定性。PSI还是一种主要的模型监控指标。因为模型部署上线后,模型的拒绝率越高,其线上KS值越低,也就越无法体现模型的真实效果,所以通常使用PSI监控线上模型与线下模型的差异,从侧面展示模型真实效果与预期效果的偏差。
PSI的计算中同样涉及分箱,实践证明,等频分箱的效果要好于等距分箱,因此本书中PSI的计算使用等频分箱,即首先在参照分布(训练集)上等频分箱,然后计算测试集与时间外样本集,相比于参照分布的PSI。