机器学习中最有价值的部分是预测建模。这是模型的发展,这些模型是在历史数据上训练的,并对新数据进行预测。在预测建模方面,首要的问题是:我怎样才能得到更好的结果?这张备忘单包含了我多年来从自己的应用和学习顶尖机器学习实践者和竞赛优胜者中提炼出来的最佳建议。有了这本指南,你不仅可以提升性能,甚至可以在预测问题上获得世界级的结果。
-------Jason Brownlee

内容

  1. 基于数据优化提高性能
  2. 基于算法优化提高性能
  3. 基于超参数优化提高性能
  4. 基于优化集成模型提高性能

1. 基于数据优化提高性能

通过对训练数据和问题定义的更改,您可以获得巨大的成功。

策略:对数据创建新的和不同的视角,以便将潜在问题的结构最好地暴露给学习算法。

Method:

  1. 获取更多数据。你能得到更多或更好质量的数据吗?现代的非线性机器学习技术,如深度学习,随着数据的增加,性能不断提高。
  2. 创造更多的数据。如果无法获取更多数据,是否可以生成新数据?也许您可以扩充或排列现有数据,或者使用概率模型生成新数据。
  3. 清理数据。你能改善数据中的信号吗?可能有丢失或损坏的观测值可以修复或删除,或者有超出合理范围的异常值可以修复或删除,以提高数据质量。
  4. 重新采样数据。是否可以重新采样数据以更改大小或分布?也许您可以在实验中使用更小的数据样本,以加快特定类型的样本或样本上下观察的速度,从而更好地在数据集中表示它们。重新定义你的问题:你能改变你正在解决的预测问题的类型吗?将数据重新定义为回归、二进制或多类分类、时间序列、异常检测、评级、推荐者等类型的问题。
  5. 重新缩放数据。你能重新调整数值输入变量的比例吗?输入数据的规范化和标准化可以提高使用加权输入或距离度量的算法的性能。
  6. 转换数据。你能改变你的数据分布吗?使输入数据更为高斯或通过指数函数可能更好地将数据中的特征暴露给学习算法。投影数据:能否将数据投影到低维空间?可以使用无监督的聚类或投影方法来创建数据集的全新压缩表示。
  7. 特征选择。所有的输入变量都同等重要吗?使用特征选择和特征重要性方法创建数据的新视图,以便使用建模算法进行探索.
  8. 特征工程。能否创建和添加新的数据功能?也许有一些属性可以分解为多个新值(如类别、日期或字符串)或者可以聚合以表示事件的属性(如计数、二进制标志或统计总结)。

2. 基于算法优化提高性能

机器学习就是算法。

策略:确定性能高于基线且优于平均值的算法和数据表示。

方法:

  1. 重采样方法。什么样的重采样方法被用来评估新数据的技能?使用能够充分利用可用数据的方法和配置。带有保持验证数据集的k-fold交叉验证方法可能是一种最佳实践。评估指标。什么样的标准用来评估预测的技巧?使用最能捕获问题和域需求的度量。这可能不是分类的准确性。
  2. 基线性能。比较算法的基线性能如何?使用随机算法或零规则算法(预测平均值或模式)建立基线,根据该基线对所有评估算法进行排序。
  3. 抽查线性算法。什么样的线性算法工作得好?线性方法往往比较偏颇,容易理解,训练速度快。如果你能取得好的成绩,他们是首选。评估一系列不同的线性方法。
  4. 抽查非线性算法。哪些非线性算法工作良好?非线性算法往往需要更多的数据,具有更大的复杂度,但可以获得更好的性能。评估各种非线性方法。
  5. 整合论文算法。文献中有哪些算法能很好地解决你的问题?也许你可以得到算法类型的想法,或者是经典方法的扩展,来探索你的问题。
  6. 标准配置流程。被评估算法的标准配置是什么?每种算法都需要一个机会来解决你的问题。这并不意味着调整参数(还没有),但它确实意味着研究如何配置好每一个算法。

结果:您现在应该有一个性能良好的算法和数据表示的候选列表。

3. 基于超参数优化提高性能(tunning)

算法优化可能是您花费大部分时间的地方。这可能非常耗时。你经常可以从抽查中快速发现一两个性能良好的算法。从这些算法中获得最大收益可能需要几天、几周或几个月。

策略:充分利用性能良好的机器学习算法。

方法:

诊断。关于你的算法诊断告诉你什么?也许你可以回顾一下学习曲线,以了解该方法是否过度或不充分地拟合了问题,然后再纠正。不同的算法可以提供不同的可视化和诊断。回顾一下算法预测的是非。

试试直觉。你的直觉告诉你什么?如果你处理参数的时间足够长,而且反馈周期很短,你可以发展出一种直觉,告诉你如何在一个问题上配置一个算法。试试这个,看看你能不能想出新的参数配置来试试你的大型测试线束。

整合文献算法。文献中使用了哪些参数或参数范围?评估标准参数的性能是开始任何优化活动的好地方。随机搜索。哪些参数可以使用随机搜索?也许您可以使用算法超参数的随机搜索来公开您从未想过要尝试的配置。

网格搜索。哪些参数可以使用网格搜索?也许有一些标准超参数值的网格可以枚举以找到好的配置,然后用越来越细的网格重复这个过程。

优化。你能优化哪些参数?也许有一些参数,如结构或学习率,可以通过直接搜索过程(如模式搜索)或随机优化(如遗传算法)来调整。

替代实施。还有哪些算法的其他实现可用?也许该方法的另一个实现可以在相同的数据上获得更好的结果。每个算法都有无数的微观决策,必须由算法实现者做出。有些决定可能会影响你解决问题的技巧。

算法扩展。算法的常见扩展是什么?也许您可以通过评估方法的公共或标准扩展来提高性能。这可能需要执行工作。

算法定制。对于您的特定情况,可以对算法进行哪些自定义?也许您可以对数据的算法进行一些修改,从损失函数、内部优化方法到特定于算法的决策。

联系专家。算法专家在你的案例中推荐什么?写一封简短的电子邮件,总结你的预测问题以及你在算法方面向一个或多个专家学者所做的尝试。这可能会揭示前沿工作或学术工作以前未知的新的或新鲜的想法。

结果:你现在应该有一个关于机器学习问题的高度优化算法的候选列表,甚至可能只有一个。

4.基于优化集成模型提高性能

您可以组合来自多个模型的预测。在算法调整之后,这是下一个需要改进的大领域。事实上,您通常可以通过组合来自多个足够好的模型的预测而不是来自多个高度优化(和脆弱)的模型的预测来获得良好的性能。

策略:结合多个表现良好的模型的预测。

方法:

  1. 混合模型预测。你能把多个模型的预测直接结合起来吗?也许您可以使用相同或不同的算法来创建多个模型。从多个表现良好的模型的预测中取平均值或模式。
  2. 混合数据表示。你能把来自不同数据表示的模型的预测结合起来吗?你可能对你的问题有很多不同的预测,这些预测可以用来训练性能良好的算法,然后可以组合它们的预测。
  3. 混合数据样本。你能把训练过的不同数据视图的模型结合起来吗?也许你可以创建多个训练数据子样本,训练一个性能良好的算法,然后合并预测。这被称为bootstrap聚合或bagging,当来自每个模型的预测很熟练但以不同的方式(不相关)时效果最好。
  4. 正确的预测。你能修正性能良好的模型的预测吗?也许您可以显式地更正预测,或者使用boosting之类的方法来学习如何更正预测错误。
  5. 学会组合。你能用一个新的模型来学习如何最好地结合来自多个表现良好的模型的预测吗?这被称为叠加泛化或叠加,通常在子模型熟练但方式不同且聚合器模型是预测的简单线性加权时工作良好。这个过程可以重复多层。

结果:你应该有一个或多个表现良好的模型,超过任何单一的模型组合。

下一步:一个或多个组合可以在这一点上定稿,并用于预测或投入生产。

机器学习性能优化全解相关推荐

  1. Unity性能优化全攻略

    #Unity性能优化全攻略 总结自Siki的性能优化. ##优化相关前提 ###Unity游戏安装包大/运行卡的原因 Mono虚拟机 解决这个问题 ###DrawCall https://zhuanl ...

  2. 了解一下:机器学习性能优化的6个指标

    2019-11-21 17:27:42 机器学习性能优化的6个指标 根据要进行的机器学习的类型,有许多度量标准可以衡量机器学习模型的性能.在本文中,我们研究了分类和回归模型的性能指标,并讨论了优化效果 ...

  3. 【推荐】 RAC 性能优化全攻略与经典案例剖析

    ORACLE RAC凭借其卓越的容错能力和可扩展性以及对应用透明的切换能力引领了数据库高可用架构的潮流,但在实际的生产环境中,出现的性能问题非常多,对数据库的稳定性产生很大的影响,有一些甚至影响到了业 ...

  4. 转载:SqlServer数据库性能优化详解

    本文转载自:http://blog.csdn.net/andylaudotnet/article/details/1763573 性能调节的目的是通过将网络流通.磁盘 I/O 和 CPU 时间减到最小 ...

  5. T- SQL性能优化详解

    http://www.cnblogs.com/Shaina/archive/2012/04/22/2464576.html 故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较 ...

  6. 一零四、前端性能优化详解

    1 前端性能优化 介绍 页面性能优化 浏览器 浏览器的主要作用 浏览器的组成结构 浏览器是多进程的 浏览器的渲染机制 重排reflow与重绘repaint 页面加载缓慢的原因 浏览器部分 代码部分 优 ...

  7. logback性能优化详解

    前言 不正确的日志打印不但会降低程序运行性能,还会占用大量IO资源和硬盘存储空间. 本文主要总结一些能提高日志打印性能的手段. 一.通过AsyncAppender异步输出日志 我们通常使用的Conso ...

  8. Android UI性能优化详解

    此文来自于MrPeak杂货铺,由于没法转载,只能贴这了,妄作者见谅:http://mrpeak.cn/android/2016/01/11/android-performance-ui 设计师,开发人 ...

  9. MYSQL性能优化详解(二)

    接着上一篇学习:http://www.cnblogs.com/quanzhiguo/p/6401453.html 七.MySQL数据库Schema设计的性能优化 高效的模型设计 适度冗余-让Query ...

最新文章

  1. python 获取网络图片的大小
  2. [JS调用]automation服务器不能创建对象
  3. HTTPS加密原理(转)
  4. 九度OJ 1060:完数VS盈数 (数字特性)
  5. Istio 1.0 部署
  6. 使用R语言的BNLearn包实现贝叶斯网络
  7. unity, 删除animationEvent
  8. Linux学习-软件磁盘阵列
  9. 商鼎云PC端正式亮相—开启内测通告
  10. Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!
  11. iOS生成推送push证书,push.p12文件
  12. 技术人的七大必备特质
  13. 文件实时同步备份软件那个比较好用?
  14. 在sqli-liabs学习SQL注入之旅(第一关~第十关)
  15. 帧间预测--AMVP模式理论部分
  16. python怎么接单子平台有哪些_17个Python接私活的平台,总有适合你的,有技术就有收入...
  17. HTML之FrameSet,Frame和Iframe区别
  18. 禁止win7系统flash插件自动更新教程【系统天地】
  19. 模拟实现简单的自动售货系统
  20. 解析肖特基二极管的使用事项

热门文章

  1. 交叉熵比平方损失函数的优点
  2. np.eye解释较好的
  3. 相关子查询中exists后select 加数字的理解
  4. 9个基于Java的搜索引擎框架
  5. 清华吴翼:从捉迷藏游戏说起,谈谈强化学习的六个开放问题
  6. GPT-3距离下一代AI生态平台还有多远?
  7. 智源研究院发布世界首个“机器学习通用数学符号集”
  8. 新书上市 | 为什么你的英语总是学不好?
  9. 最佳SQL Server 2008入门教程
  10. 生成对抗网络(GAN)应用于图像分类