https://www.kaggle.com/c/santander-product-recommendation/关键词:Less is More这个数据集提供银行用户2015年1月到2016年5月的产品购买数据,要求预测用户2016年6月购买什么产品.按照通常的观点,训练数据都是多多益善的. 但是BreakfastPirate 在 When Less is More 里提出,因为每年6月份是银行的结算日,此时的用户行为和平时不一样的.只使用2015年6月一个月的数据,效果要比使用17个月的数据效果要好.这个例子说明当train 和test 存在bias的时候 ,只使用train里那部分和test相似的数据可能效果更好.
https://www.kaggle.com/c/bengaliai-cv19/关键词:CycleGan这个数据任务多任务分类,需要对每一个手写字符分别对grapheme root (共168类)、vowel diacritics (共11类)、consonant diacritics (共7类)进行分类, 但是数据制作者故意在分类的时候产生bias,本来label应该有168×11×7共12936种组合,但是训练集只提供其中的一部分label组合样本.这就导致训练的模型会认为剩下的组合不存在而预测不出来.而test里实际上是有的..在冠军solution Cyclegan Based Zero Shot Learning 里,使用CycleGan把12936种组合对应的样本全部生成了出来,将这些GAN生成的样本用于训练,就可以把原本train里unseen的数据给预测出来了.
Twitter RecSys Challenge 2020
https://recsys-twitter.com/关键词:adversarial validation这是一个关于推特推荐的比赛, 在官方的赛后总结 What Twitter learned from the Recsys 2020 Challenge 可以看到,由于train和test是按照time split的,存在一定的不同,第一名Nvidia 团队使用adversarial validation 选择更具通用性的特征来防止过度拟合.即通过将训练集和测试集分别打上不同的标签然后进行训练,通过输出的特征重要性筛选特征.类似的技巧也可见于 LANL Earthquake Prediction ,这里1st place solution 使用KS统计筛选相似的特征提高泛化能力.adversarial validation 不仅可用于筛选特征,也可以筛选样本.通过分类器得到和test最相近的样本用于训练和验证. 当我们无法直接通过业务经验或者出题者的数据说明知道train里哪些样本和test分布相似,就可以用adversarial validation
Sberbank Russian Housing Market
https://www.kaggle.com/c/sberbank-russian-housing-market关键词: magic number这个题用2011年8月到2015年6月的莫斯科房价数据来预测 2015年7月到2016年5月的房价,而由于众所周知的原因,货币卢布在那几年发生了通货膨胀,导致test的房价数据要高于train的数据,因此所有的方案都在模型结果后处理乘了一个放大系数,在test上可以带来显著的提升,大家称之为magic number. 虽然这种人工后处理的方式很不机器学习.但这就是real world. 最后出题方 Sberbank 的 Data Science Lead 也在Question to admins about rules 认可了这种后处理方法.事实上,后处理也在大量的由时间导致的bias类数据被使用.除了乘系数,还有在分类里调阈值等等