Adversarial validation
数据挖掘比赛,一般都分为train(线下)和test(线上),test一般分为A榜和B榜。所以,做模型的时候首先要考虑的是train和test的分布是不是一致,保证分布的一致,是做模型的前提咯。不然,线下好的很,线上也是各种蹦,线上线下不一致。其次,要trust local cv, 线上显示的A榜只是具有一点点的参考性,千万不要一味地被A榜的分数牵着鼻子走。在抖动比较大的数据中,可能种子不同分数都差别很大,这个时候更应该考虑泛化能力,可能这个种子只是刚好拟合A榜,B榜蹦成翔。
一般,在线下造特征时,都会去检查特征分布一致性,虽然特征分布一致,但是进行验证时,我们一般都是进行Kfold交叉验证,每折作为valid验证集的样本中可能存在和test集中样本分布不一致的,这种不一致性,可能是样本本身(如客群之类)的差异,即训练集与测试集分布相差非常大。此时,使用交叉验证的结果来作为验证结果,线上结果可能就很糟糕了。
Adversarial validation(对抗性验证)在kaggle上看大神用,Adversarial validation原文章在这http://fastml.com/adversarial-validation-part-two/,思想很纯粹。
1)给train训练集和test测试集,打上一个新标签,例如isT