暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kaggle知识点:Adversarial Validation

Coggle数据科学 2022-02-16
807

Adversarial Validation


在Kaggle比赛中数据分布一致是阻碍大家上分的点,本篇文章将介绍Adversarial Validation原理和使用方法,并对数据分布不一致的情况给出一些解决案例。
原创文章不易,希望分享、点击再看和收藏,谢谢!

Adversarial Validation


Kaggle比赛中数据可分为训练集和测试集,国内比赛可能根据比赛阶段划分多个测试集,由于数据集采样和分布的原因导致训练集和线上测试集可能存在分布不一致的情况,也会带来本地交叉验证(Cross Validatation, CV)与线上不一致的情况。

Adversarial Validation核心思路是构建一个分类模型,目的是分辨训练集和测试集的来源,这里假设使用AUC作为分类精度评价函数。
  • 如果分类模型无法分辨样本(AUC接近0.5),则说明训练集和测试集数据分布比较一致;

  • 如果分类模型可以很好分辨样本(AUC接近1),则说明训练集和测试集数据分布不太一致;

使用Adversarial Validation方法也非常简单,将训练集和测试集分别打上不同的标签然后进行训练,代码思路如下:
train = pd.read_csv( 'data/train.csv' )
test = pd.read_csv( 'data/test.csv' )


train['TARGET'] = 1
test['TARGET'] = 0


data = pd.concat(( train, test ))
x = data.drop( [ 'TARGET', 'ID' ], axis = 1 )
y = data.TARGET


from sklearn.cross_validation import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y)

在训练集和测试集分布一致的情况中,构建模型的验证AUC一般接近0.5,即分类模型无法判别样本来源:

# logistic regression / AUC: 49.82%
# random forest, 10 trees / AUC: 50.05%
# random forest, 100 trees / AUC: 49.95%
在训练集和测试集分布不一致的情况中,构建模型得到的AUC一般接近1,即分类模型可以分辨样本的来源。此时本地CV和线上就容易出现不止的情况。

数据分布不一致怎么办?


当使用Adversarial Validation验证或者手工验证发现训练集和测试集分布存在差异时,可以有哪些做法?
  • 假设存在多个训练集,可以使用Adversarial Validation与测试集分布比较一致的一个训练集进行训练;
在IJCAI2018里,数据A是前六天的数据,数据B是第七天上半天的数据;在Ogeek里,数据A有两百万数据,数据B只有五万数据;在联通个性化推荐比赛,数据A有初赛约70W数据,数据B有复赛约35W数据。
此种情况一般存在于国内的多阶段比赛会放出多个训练集,比较好的方法是选择与测试集最为相似的一份训练集(假设为数据B)进行训练。
当然其他的训练数据(与测试集不相似,假设为数据A)可以被利用,可以先在数据A上进行预训练,然后在数据B上进行微调,完成迁移学习(或称为嫁接学习)。
https://zhuanlan.zhihu.com/p/51901122
  • 假设Adversarial Validation的AUC非常高,可以尝试使用Adversarial Validation选择出与测试集比较相似的样本,构建成为验证集。
  • 假设数据集可以扩增则可以使用外部数据来扩增训练数据,以保证训练数据与测试数据的一致性。
当然但数据分布不一致的时候,上述情况都需要反复进行尝试,不同的数据集具体情况不一样。同时Adversarial Validation也只能给出一些指导建议,具体还是要通过提交来验证具体思路的正确性。
最后Adversarial Validation也可以用于验证AB榜shake up的可能性,过拟合CV有风险。Do not trust your local CV!

阅读链接


  • https://www.kaggle.com/h4211819/adversarial-validation

  • http://fastml.com/adversarial-validation-part-two/

  • http://fastml.com/adversarial-validation-part-one/

点击查看更多竞赛资讯

2020腾讯广告算法大赛正式开始

KDDCup 2020多模态赛道:数据分析

KDDCup2020推荐系统赛道—数据分析


文章转载自Coggle数据科学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论