记录下kaggle比赛经验

比赛 Porto Seguro 保险预测
第一名使用表达学习,有6个模型集成,1 lightgbm, 5 nn. 移除了无用特征,对Binary特征使用One-hot编码。所有NN在降噪自编码隐藏激活中训练,完成一个很好学习数值数据的表达。
1 特征工程
首先移除*calc 特征,增加*cat特征的one-hot编码。没有缺失值的替代。最终使用221个密集特征。
2 局部验证
使用5-fold 交叉验证(CV)。每个模型有自己的随机种子数(nn中随机初始化权重,lightgbm中data_random_seed)。测试预测是所有fold 模型的平均值。也可以使用Bagging 或者其他。
3 Normalization
对于基于梯度的模型例如NN输入标准化是极其重要的。对于Lightgbm/xgb无所谓。作者使用的工具箱是”RankGauss”, 基于rank transformation. 第一步是去分配一个线性等分向量(linspace)给排序的特征从0到1, 然后应用误差函数的逆去使他们符合高斯分布,然后减去均值。二元特征不用使用这种转化。这个比标准的mean/std缩放或者min/max 好得多。
3 非监督学习
降噪自编码(DAE)找到一个很好的数值数据的表达对于后面的NN监督学习,使用训练和测试特征来构造DAE,测试数据集越大,效果越好。自编码器试图重构输入特征,也就是特征=目标。一个降噪自编码试图去重构一个有噪音的特征,去找到一个干净的特征去表达数据。
为什么手动构造2,3,4种相互作用,使用目标编码,搜索count?特征,剔除特征,模型有时能找类似的something。重要的部分是创造噪声。在表格数据集中我们无法flip, rotate, sheer 之类用于图像数据。增加高斯或者均匀的额外/增加的噪声不是最优的,一些特征具有不同尺度或者一个离散集合中噪声无法理解。一个噪声策略叫“swap noise”。
4 非监督学习时使用训练和测试特征

你可能感兴趣的:(比赛经验,比赛经验)