模型稳定性校验
模型稳定性校验的方法:
1.PSI
2.对抗验证adversarial validation
从广义上来说,PSI就是对抗验证的一种形式,PSI计算的时候,增加一个label字段,train标记为0,test标记为1,然后计算各个变量的IV(即PSI),模型的预测输出也会计算PSI,这就相当于我们建评分卡前的单变量分析。
而adversarial validation一般是建一个类gbdt模型,看对抗验证模型的AUC,观察变量重要性,剔除某些变量,或者对某些变量进行变换或处理。
PSI数值大/train和test差异大的因素有两大类:
1.样本构造(客群变化)因素
2.变量固有机制
稳定性校验的重点是解决第2个因素,这个时候我们做稳定性校验的时候,不同样本间取数逻辑就要尽可能一致,去看他们变量的差异。
第1个因素更难把控,而且影响相较于第2个因素会小一些,模型可能输出有很大PSI,但是MAE还是很低,因为PSI的变化只是客群变化造成,而且客群变成了模型预测误差更小的那一类,所以客群变化造成的PSI变化是允许的
样本构造因素造成的差异,可能使得testset上预测效果更好,比如testset都是一些模型擅长的,预测误差较小的客群,同理,也可能使模型评价指标,如MAE变大,我猜测最好的还是用测试集同分布的样本进行训练(可不可以用对抗验证选出和测试集最相似的样本进行训练?在尝试过拟合测试集?影响未来的泛化?讨论了一下觉得可以一试,但是模型评价指标可能变差?最新测试集上没有y标签,模型评价指标无法计算,不一定使得测试集评价指标变好,而是让训练集和测试集指标变化更同步?这里需要实践)
对抗验证,也可以得到对抗验证模型的重要性排序,可以看是哪些变量分开了train和test,具体看这些变量是什么情况,是变量本身机制问题,还是抽样造成,有变量机制问题的变量,从模型中剔除,或者进行一些处理变换才能使用
留言
張貼留言