↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

Datawhale干货

译者:张峰,Datawhale成员

如果你最近刚入手Kaggle,或者你是这个平台的老常客,你可能会想知道如何轻松提升模型的性能。以下是我在Kaggle历程中积累的一些实用技巧(https://www.kaggle.com/louise2001)。所以,无论是建立自己的模型,还是从一个基准的公共内核开始,都可以尝试实施这些建议!

一、经常回顾过去的比赛(温故知新)

虽然Kaggle的策略是绝对不会出现两次一模一样的比赛,但经常会出现非常相似的问题的翻版。例如,有些主办方每年都会提出同一个主题的常规挑战(比如NFL的Big Data Bowl),只是有一些小的变化,或者在某些领域(比如医学影像)有很多目标不同但本质非常相似的比赛。

因此,回顾获奖者的解决方案(总是在竞争结束后公开,这要感谢不可思议的Kaggle社区)可以是一个很好的加分项,因为它给你提供了开始的想法,以及一个成功的策略。如果你有时间回顾很多,你也会很快发现,即使在非常不同的比赛中,一些流行的基准模型似乎总是做得足够好:

  • 卷积神经网络或计算机视觉挑战中更复杂的ResNet或EfficientNet。

  • WaveNet在音频处理中的挑战(如果你只是使用Mel Spectrogram,也可以很好地用图像识别模型来处理)。

  • BERT及其衍生产品(RoBERTa等)在自然语言处理中的挑战。

  • Light Gradient Boosting(或其他梯度提升或树策略)对表格数据的处理。

你可以直接在Kaggle平台上寻找类似的比赛,或者查看Sundalai Rajkumar的这篇精彩总结(https://www.kaggle.com/sudalairajkumar/winning-solutions-of-kaggle-competitions)。

回顾过去的比赛也可以帮助你获得其他步骤的提示。例如,获得类似问题的预处理的提示和技巧,人们如何选择他们的超参数,在他们的模型中实现了什么额外的工具来赢得比赛,或者如果他们只专注于囊括他们最好的模型的相似版本,或者是将所有可用公共内核整合在一起。

二、花足够的时间在数据预处理上

这绝不是工作中最令人兴奋的部分。但是,这一步骤的重要性不言而喻:

  • 清理数据:千万不要以为主机努力为你提供最干净的数据。大多数时候,它是错误的。填充NaNs,去除离群值,将数据分成同质观测值的类别等。

  • 做一些简单的探索性数据分析,以大致了解你正在使用的工具(这将有助于您获得见解和想法)。

  • 增强数据:这可能是提高性能的最好方法之一。但是要注意不要让数据太大,以至于你的模型无法再处理它。你可以在互联网上找到一些额外的数据集,或者在Kaggle平台上(在过去类似的比赛中!),或者只是在提供给你的数据上工作:翻转和裁剪图像,叠加音频记录,反向翻译或替换文本中的同义词等。

预处理也是你必须思考你将依靠什么交叉验证方法的步骤:Trust Your CV。在你的数据上工作将帮助你知道如何分割数据:根据目标值分层还是根据样本类别分层 ? 你的数据是否不平衡 ? 如果你有一个聪明的CV策略,并且仅依靠它而不是靠排行榜得分(尽管这可能很诱人),那么你很有可能在私人的最终分数上获得惊喜。

三、尝试超参数搜索

超参数搜索可以帮助你找到你的模型应该具备的最佳参数(学习率、softmax的温度等),以获得最佳的性能,而无需手工运行上千次的枯燥实验。

最常见的超参数搜索策略包括:

  • 网格搜索(请永远不要这样做):对我来说是性能最差的方法,因为对于某些值,你可能会完全错过某个模式或性能的局部峰值,它包括或测试超参数值平均分布在你定义的可能值的区间上。

  • 随机搜索(及其Monte-Carlo衍生物):尝试参数的随机值。它的主要问题在于它是一种并行的方法,而且你测试的参数越多,成本就越高。然而,它的优点是可以让你在测试中加入先验知识:如果你想找到1e-4和1e-1之间的最佳学习率,但你认为它必须在1e-3左右,你可以从以1e-3为中心的对数正态分布中抽取样本。

  • 贝叶斯搜索:基本上是随机搜索,但经过改进,因为它是迭代的,因此成本低得多。它根据当前模型迭代评估一个有希望的超参数配置,然后更新它。它是这三种方法中性能最好的一种。

  • 其他方法包括基于梯度的搜索或演化优化,危险性较大,一般不适用。在一些特殊情况下,可以推荐使用这些方法。

四、简单的包装器可以改变游戏规则

我发现有一些模型包装器可以用来获得更好的结果。它们在不同级别上工作:

  • 在优化过程中,千万不要忘了添加一个学习率调度器,帮助获得更精确的训练(从小开始,当你的模型学习良好时逐步增加)。

  • 还是在优化过程中,你可以把Lookahead包在你的优化器上;Lookahead算法包括向前走k个优化步骤,找到性能最好的地方,然后向最佳方向后退一步,从那里重新开始训练。理论上,你可以获得更好的性能,虽然我从来没有发现这是真的;但它可以稳定训练,当你的数据非常嘈杂时,这是好事。

  • 在开始训练之前,为你的权重找到一个好的初始化:如果你使用的是流行的架构,就从基准权重开始(比如图像识别中的ImageNet),如果不是,可以尝试Layer Sequential Unit Variance初始化(LSUV,理论上是最好的初始化)。它包括将你的权重初始化为正交的,并且在所有可训练层中都是单位方差。

  • 最后,我经常发现,从神经网络的最后一层权重来训练LGBM,而不是添加一个softmax作为输出层,效果会出奇的好。

五、Bagging集成在一起!

除了数据增强,可能没有什么技术比bagging更有效地提高你的性能。

我个人的小技巧是:总是保存我运行过的每一个模型预测,并对所有模型进行平均(只是基本的平均,我从来没有发现任何证据表明,"聪明 "的集成,如按模型的单一性能加权,在最终得分中增加了什么)。

不要忘记把公共内核也进行装袋。你的集成策略中的模型越多,你就越有可能在私人排行榜中稳操胜券。

原文链接:https://towardsdatascience.com/5-simple-tips-to-improve-your-kaggle-models-159c00523418

“干货学习,三连

提升Kaggle模型的实用小技巧!相关推荐

  1. 微信公众号运营都有哪些实用小技巧,你学会了吗

    移动媒体的发展,一些新媒体平台也变得热门起来,其原因人流量随之增长起来,像公众号.自媒体.短视频等,这些平台都是流量非常多的,公众号在微信刚出来的时候,还不怎么热门,也是近几年才受到企业受宠,很多企业 ...

  2. Excel表格中一些你不知道的鼠标双击实用小技巧

    Excel表格中一些你不知道的鼠标双击实用小技巧 目录 Excel表格中一些你不知道的鼠标双击实用小技巧 1.鼠标双击自动填充整列公式, 鼠标放在单元格右下角,鼠标指针变成十字时双击鼠标右键,整列汇总 ...

  3. 用了华为手机多年,你却不知道的,10个手机实用小技巧

    哈喽,大家好,今天我们来说说华为手机,华为是目前国产手机热度最高的品牌,越来越多的人都在用华为手机,但是华为手机的10个实用小技巧你知道吗?学会这些小技能可以让你在使用手机时更加的方便,接下来我们一起 ...

  4. 送你16个matplotlib绘图实用小技巧(附代码)

    来源:雪山飞猪 本文约2800字,建议阅读10分钟 本文为你分享16个matplotlib绘图实用小技巧. 标签:数据分析 1. 添加标题-title import numpy as npimport ...

  5. VC的若干实用小技巧

    Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意.作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助. 1:使用vc开发项目时,常会遇到这种 ...

  6. 实用小技巧(一):UIScrollView中上下左右滚动方向的判断

    https://www.jianshu.com/p/93e8459b6dae 2017.06.01 01:13* 字数 674 阅读 1201评论 0喜欢 1 2017.06.01 01:13* 字数 ...

  7. VC的若干实用小技巧 (如何干净的删除一个类)

    Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意.作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助. 1:使用vc开发项目时,常会遇到这种 ...

  8. 总结MySQL建表、查询优化实用小技巧

    MySQL建表阶段是非常重要的一个环节,表结构的好坏.优劣直接影响着后续的管理维护,赶在明天上班前分享总结个人MySQL建表.MySQL查询优化积累的一些实用小技巧. 技巧一.数据表冗余记录添加时间与 ...

  9. mysql建表测试_总结MySQL建表、查询优化实用小技巧

    MySQL建表阶段是非常重要的一个环节,表结构的好坏.优劣直接影响着后续的管理维护,赶在明天上班前分享总结个人MySQL建表.MySQL查询优化积累的一些实用小技巧. 技巧一.数据表冗余记录添加时间与 ...

最新文章

  1. 易生信-扩增子教程02-真菌引物选择
  2. 硬核项目 | 用Arduino做一个神奇的悬浮灯!
  3. layou split 属性
  4. 前端学习(2689):重读vue电商网站10之表格展开页
  5. mysql交叉连接后生成的记录总数_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)_MySQL...
  6. hadoop编程-maven环境搭建
  7. 计算机如何清理c盘,C盘清理,教您怎么给电脑C盘进行清理
  8. 产品读书《游戏改变世界:游戏化如何让现实变得更美好》
  9. 批处理中的删除命令:del
  10. 电子工程师的自我修养 - 锂电池的测量电路
  11. 基于对抗生成网络的图像转换技术【论文笔记】
  12. 如何在网页中加入一条竖线
  13. JAVA练习:利用JAVA基本语句实现打印日历
  14. 【图数据挖掘】— 子图同构问题、单射函数和双射函数、同构(isomorphic)和同态(homomorphism)
  15. 什么是Java你了解吗
  16. java类加载器—ContextClassLoader类加载器
  17. 自然资源数据治理方案
  18. 【项目设计】高并发内存池
  19. Android开发 - 掌握ConstraintLayout(六)链条(Chains)
  20. kernel power domain分析

热门文章

  1. DB天气app冲刺二阶段第十一天(完结)
  2. java io读书笔记(6) Writing Arrays of Bytes
  3. WordPress Editorial Calendar插件权限安全绕过漏洞
  4. 如何通过代码连接SQL Server数据库
  5. 15级团队学习成果汇报 -- 利用C#语言实现计算器
  6. 【ACM】杭电OJ 1106 函数atoi
  7. 你不知道的18个Python高效编程技巧
  8. 为什么校招面试中总被问“线程与进程的区别”?我该如何回答?
  9. “AI”战疫在行动,一文盘点百度大脑增援疫情防控的AI操作
  10. 2019年,自动化机器学习AutoML技术还火吗? | BDTC 2019