Adversarial Validation

Adversarial Validation中文直译是对抗验证
大意就是建一个模型来区分test和train,找到和test最为接近的部分train作为本地验证集,可以快速的进行模型评价,在不提交的情况下,而且比赛中提交的次数有限,比赛中还有一个鸡贼的应用,就是构造testset的答案尝试出哪部分是private LB的样本(kaggle比赛已经给了全部的测试集,包含public和private,一般public占其中如20%,private占80%,手工修改一些预测并不会影响public LB的成绩),然后用对抗验证构造出一个和private LB类似的验证集进行本地校验。

大概的步骤是:
1.train 标记为0,test标记为1
2.fit一个model区分train和test,如果AUC很高,那么train和test差异比较大
3.按照prob rank order,取train中prob最高的部分作为验证集

2020/11/06补充:
Adversarial Validation其余两种用法:
二、得到prob后,以prob为train赋权重,prob本身可以是权重,prob/(1-prob)可以是权重

三、如果得到的对抗验证model AUC较高,打印feature importance,分析哪些变量有问题,是变量本身机制问题,还是抽样造成,有变量机制问题的变量,从模型中剔除,或者进行一些处理变换才能使用




留言

熱門文章