如何在算法比赛中获得出色的表现 :改善模型的5个重要技巧

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 如何在算法比赛中获得出色的表现 :改善模型的5个重要技巧

640.jpg


如果你最近才开始使用Kaggle,或者你是这个平台的老用户,你可能想知道如何轻松地提高你的模型的性能。以下是我在Kaggle之旅中积累的一些实用技巧。建立自己的模型或只是从一个基线公共内核,并尝试实施这些建议!

回顾过去的比赛

虽然Kaggle的政策是永远不会出现两次相同的比赛,但经常会有非常相似的问题的重新制作。例如,一些举办方每年都会针对同一主题提出定期的挑战(NFL’s Big Data Bowl ),只有很小的变化,或者在某些领域(比如医学成像)会有很多比赛,目标不同,但思路非常相似。

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

  1. 卷积神经网络或更复杂的ResNet或EfficientNet在计算机视觉挑战中,
  2. 在音频处理挑战中的WaveNet(也可以通过图像识别模型很好地处理,如果你只是使用Mel谱图),
  3. BERT及其衍生物(RoBERTa等)在自然语言处理挑战,
  4. 对表格数据LGB(或其他梯度增强树策略)…

你可以直接在Kaggle平台上寻找类似的比赛。

回顾过去的比赛还可以帮助您获得关于下面解释的所有其他步骤的提示。例如,提示和技巧对预处理类似的问题,人们如何选择hyperparameters,什么额外的工具中实现他们的模型让他们赢得比赛,或者如果他们只专注于装袋的类似版本最好的模型或者将所有可用的公共内核进行堆叠。

数据准备上时间是永远不够的

这还远远不是这份工作中最令人兴奋的部分。然而,这一步骤的重要性怎么强调也不过分。

清理数据:永远不要认为举办方致力于为您提供最干净的数据。大多数时候,它是错的。填补nan,消除异常值,把数据分割成类别的齐次观察……做一些简单的探索性数据分析,以获得您正在进行的工作的概述(这将帮助您获得见解和想法)。这是这个阶段最重要的一步。如果不了解数据是如何构建的、您拥有哪些信息、针对目标可能具有哪些单独或集体的一般行为特征,那么您将会失去对如何构建模型的直觉。绘制图表,直方图,相关矩阵。增加数据:这可能是提高性能的最好方法之一。但是,要注意不要把它弄得太大,以至于您的模型无法再处理它。你可以在互联网上找到一些额外的数据集(版权问题需要特别注意),或在Kaggle平台上(在过去类似的比赛!),或者只是在你提供的数据:翻转和作物图像叠加录音,back-translate或同义词替换文本…

预处理也是您必须仔细考虑将要使用的交叉验证方法的步骤。Kaggle的座右铭基本上是:信任您的CV。处理数据将帮助您知道如何分割数据:对目标值或样本类别进行分层?您的数据不平衡吗?如果您有一个聪明的CV策略,并且仅依靠它而不是靠排行榜得分(尽管这可能很诱人),那么您很可能会在私人最终得分上获得惊喜。

尝试hyperparameter搜索

超参数搜索可帮助您找到模型应具有的最佳参数(学习率,softmax的温度等),以获得最佳的性能,而无需手动进行数千次无聊的实验。

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

网格搜索(请永远不要这样做):就我而言,这是性能最差的方法,因为对于某些值,您可能会完全错过某个模式或性能的局部峰值,它包含或测试按您可能的值间隔平均分布的超参数值定义;

随机搜索(及其蒙特卡洛衍生物):您尝试参数的随机值。它的主要问题在于,它是一种并行方法,并且随着所测试的参数的增加,很快会变得非常昂贵。但是,它的优点是可以让您在测试中包括先验知识:如果您想在1e-4和1e-1之间找到最佳学习率,但是您假设它必须在1e-3附近,则可以绘制样本来自以1e-3为中心的对数正态分布。

贝叶斯搜索:基本上是随机搜索,但在迭代方面有所改进,因此成本更低。它基于当前模型迭代评估有前途的超参数配置,然后对其进行更新。这是三者中表现最好的。

其他方法(包括基于梯度的搜索或进化优化)更具危害性,通常不适用。在某些特殊情况下可以推荐使用它们。

有许多AutoML工具可以很好地为您完成这项工作。但是耗费资源,如果计算资源充沛的话可以试试。

简单的做法可以改变游戏规则

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

在优化过程中,请不要忘记添加学习速率调度程序,以帮助获得更精确的训练(从小开始,当模型学习良好时逐渐增加,例如减少平稳的步伐)。

仍然在优化过程中,您可以将Lookahead包裹在优化器中;先行算法包括前进k个优化步骤,找到最佳性能的位置,然后朝该最佳方向退后一步并从此处重新开始训练。从理论上讲,您可以获得更好的性能,尽管我从未发现这是真的。但是它可以稳定训练,这在数据非常嘈杂时很有用。

在开始训练之前,为权重找到一个很好的初始化方法:如果您使用的是流行的体系结构,请从基线权重(例如图像识别中的ImageNet)开始,如果不是,请尝试分层顺序单位方差初始化(LSUV,最好的初始化方法-理论上)。它包括将权重初始化为正交,并在所有可训练层上初始化单位方差。

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

Bagging集成!

除了数据扩充之外,没有什么技术比混合(也称为装袋)来提高性能更有效。

我的个人建议是,我总是将自己的分袋后的最终模型中保存的每一个模型预测保存下来,然后将它们平均化(只是基本平均,我从未发现过任何“巧妙”整合的证据,例如权重)模特的独奏表现会在最终得分中添加任何内容)。别忘了混合公共内核。

集成策略中拥有的模型越多,您越有可能幸免于私人排行榜的变化。确实,使模型多样化可以使最终结果更加可靠。这与金融中的一项基础投资组合多元化的想法相同:代替具有给定收益和给定方差的一项资产,而是选择具有相同收益和方差的许多不同资产,因为它们都不太可能全部同时提款,一个人的损失将由另一个人的胜利来补偿。以同样的想法,而不是仅仅依靠一个模型,而是进行许多不同的模型投票:大多数模型预测的目标(分类)或每个模型预测的目标均值(回归)很可能是更接近真实答案。

希望您喜欢这篇文章,希望你在比赛中获得更好的成绩。

目录
相关文章
|
11天前
|
算法
基于模糊PI控制算法的龙格库塔CSTR模型控制系统simulink建模与仿真
本项目基于MATLAB2022a,采用模糊PI控制算法结合龙格-库塔方法,对CSTR模型进行Simulink建模与仿真。通过模糊控制处理误差及变化率,实现精确控制。核心在于将模糊逻辑与经典数值方法融合,提升系统性能。
|
11天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
27天前
|
存储 关系型数据库 分布式数据库
PolarDB的PolarStore存储引擎以其高效的索引结构、优化的数据压缩算法、出色的事务处理能力著称
PolarDB的PolarStore存储引擎以其高效的索引结构、优化的数据压缩算法、出色的事务处理能力著称。本文深入解析PolarStore的内部机制及优化策略,包括合理调整索引、优化数据分布、控制事务规模等,旨在最大化其性能优势,提升数据存储与访问效率。
25 5
|
1月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
85 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
89 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 人工智能 算法
青否数字人声音克隆算法升级,16个超真实直播声音模型免费送!
青否数字人的声音克隆算法全面升级,能够完美克隆真人的音调、语速、情感和呼吸。提供16种超真实的直播声音模型,支持3大AI直播类型和6大核心AIGC技术,60秒快速开播,助力商家轻松赚钱。AI讲品、互动和售卖功能强大,支持多平台直播,确保每场直播话术不重复,智能互动和真实感十足。新手小白也能轻松上手,有效规避违规风险。
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
1月前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
85 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
3月前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
120 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
2月前
|
机器学习/深度学习 数据采集 算法
如何在一夜之间成为模型微调大师?——从零开始的深度学习修炼之旅,让你的算法功力飙升!
【10月更文挑战第5天】在机器学习领域,预训练模型具有强大的泛化能力,但直接使用可能效果不佳,尤其在特定任务上。此时,模型微调显得尤为重要。本文通过图像分类任务,详细介绍如何利用PyTorch对ResNet-50模型进行微调,包括环境搭建、数据预处理、模型加载与训练等步骤,并提供完整Python代码。通过调整超参数和采用早停策略等技巧,可进一步优化模型性能。适合初学者快速上手模型微调。
121 8

热门文章

最新文章