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

Kaggle知识点:结构化竞赛中的深度模型

Coggle数据科学 2022-08-04
198

在结构化竞赛中如果数据量比较大,则传统的机器学习模型则会非常慢。以最近Kaggle AMEX比赛举例,训练集总共50w行,特征1000+,训练XGB/LGB已经需要2小时以上。

与传统的机器学习模型相比,深度学习在大规模数据集上是值得尝试的,本文总结了一些深度学习在结构化竞赛的实践指南,欢迎阅读。

要点1:Batch Size

在结构化数据集中网络模型都不会很大,为了模型精度和稳定性考虑,可以将Batch Size设置的很大,如200+,1000+。

当然Batch Size也需要结合数据量进行调节,并没有绝对最后的值。在结构化赛题中使用CPU训练模型也可行,网络一般不需要训练很多Epoch。

要点2:手动Bagging

对于结构化数据集,模型训练并需要很长时间。则可以考虑训练多个模型,手动进行Bagging操作,来增加多样性。

在每个Fold重复下面多次训练:

  • 对训练数据进行采样
  • 对隐含层节点进行调整
  • 调整训练优化器和学习率

通过每个Fold训练多个模型,可以提高最终的精度,也是非常值得操作。

要点3:数据预处理

对于深度学习网络的精度一方面收到网络结构的影响,同时也收到输入数据的影响。数据对精度的影响更大,因此对数据需要进行转换。

类别字段

对于类别字段可以尝试使用标签编码或嵌入编码,前者比较适合用于高基数的类别,嵌入维度可以从类别取值空间决定。

数值字段

数值字段可以归一化方法进行处理:

  • MinMax Scaler
  • Standard Scaler
  • RankGauss Scaler

列表字段

列表字段或文本进行如下编码:

  • 使用TFIDF进行编码
  • 使用词向量进行编码
  • 使用词向量+LSTM进行编码

要点4:网络结构

在网络上可以优先考虑全连接网络,当然LSTM和CNN也可以考虑。

全链接网络

全连接网络是在尝试深度学习中最简单结构,网络结构参考如下规律:

  • 可以加入BN在全连接层之间
  • 全连接的维度一般是逐步下降的
  • 可以加入ResNet或DenseNet的操作

LSTM或1D CNN

对于结构化数据,如果列较多,或者列存在类似的含义,或存在时序的列。都可以考虑使用LSTM和CNN。

此时在进行提取序列特征时,需要考虑从行的角度还是列的角度提取。如果样本为单行,则优先从行的角度提取。

TabNet & Transformer

此类模型是加入了更加复杂的网络结构,但训练成本也增加了。如果有GPU则可以考虑尝试,需要对超参数进行多次调整。

要点5:自编码器

对于结构化数据,数据本身可能是稀疏的,非常容易过拟合。对于数据可以使用PAC或者SVD进行将维,然后将降维之后的数据再进行训练。

在竞赛也可以尝试自编码器,让模型存在两个分支,一个分支为自编码器损失,一个分支为有监督损失。也可以尝试降噪自编码器对数据进行压缩,然后进行建模。

 竞赛交流群 邀请函  #

△长按添加竞赛小助手
添加Coggle小助手微信(ID : coggle666)


每天Kaggle算法竞赛、干货资讯汇总

与 22000+来自竞赛爱好者一起交流~






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

评论