专栏首页SAMshare一文介绍机器学习模型调优的“解题思路“

一文介绍机器学习模型调优的“解题思路“

之前讲了一些机器学习的算法和特征工程的东西,相信大家如果有一些数据也是可以建立出自己的模型了,但是,模型的效果却没有想象中那么好,那么,应该怎么做呢?

这里有一份关于模型调优的备忘录,每当出现上述问题的时候或者是建模前,都可以按照这个清单来进行检查,话不多说,大家一起来看看呗~

为了文章阅读的清晰,先在前面简单说明一下文章的目录框架。

本文存在的意义在于辅助大家提升机器学习模型的效果,方法有很多,如果你在其中的一个办法中找到了突破,仍可以回头再找其他,直到满足你的模型效果要求,本备忘录主要从4个角度来进行方法的阐述,分别是:

  • Improve Performance With Data.(数据)
  • Improve Performance With Algorithms.(算法选择)
  • Improve Performance With Algorithm Tuning.(算法调优)
  • Improve Performance With Ensembles.(效果集成)

好的,下面就分别从这4个角度来说一下。

1. Improve Performance With Data

事实上,你直接改变训练数据或者改变目标的定义,好效果会来得更加“不费吹灰之力”,有的时候还可能是最好的操作,所以有一句话说得很有道理:选择比努力重要哈哈哈

鸡汤不多说,说下Strategy: 创建不同的目标样本并且尽量使用最底层的特征来训练模型算法。

具体策略:

  • 获得更多的数据:一个好的深度学习模型需要更多的数据来训练,其他非线性的机器学习模型也是如此。
  • 开发更多变量:如果你实在不能获得更多的数据亦或是更好质量的数据,也许可以通过概率模型、统计模型来生成新的变量。
  • 清洗数据:通过数据清洗,你可以对缺失值、异常值进行合理的填补与修复,从而提升数据整体的质量。
  • 重新采样数据:其实可以通过对数据的重新采样来改变数据的分布和大小。对某一特定类型的样本进行采样,说不定可以更好滴表现出效果。又或者是使用更小的数据,从而加快速度。
  • 问题解决思路的重新思考:有的时候,你可以把你目前正在“焦头烂耳”想要解决的“预测性”问题,换成回归、分类、时间序列、异常检测、排序、推荐等等的问题。
  • 调整变量再入模:这里指的是对数据进行离散化、标准化等的操作。
  • 改变现有的变量:这里相信大家也很常见,就是对变量进行对数转换或指数转换,让其特性能更好地表现。
  • 对变量进行降维:有的时候降维后的变量有更好的表现哦。
  • 特征选择:这个就是特征工程了,简单来说,就是你对特征(变量)进行重要性的排序,选择相对预测力强的特征进入模型。

2. Improve Performance With Algorithms

机器学习其实都是关于算法的学习。

Strategy: 识别出优于平均值的算法,但要对其实验过程以及结果抱着怀疑态度,并反复思考。

具体策略:

  • 重采样方法:使用什么方法来估计效果?有个原则就是要充分利用可用的数据来验证,这里,k-fold交叉验证方法可以是最好的哦。
  • 评价指标:不同的目标需要使用不同的评价指标,这个相信大家在学习混淆矩阵的时候应该有所了解,什么pv+,命中率等等,都是对于特定类型的目标有着非常有效的识别。如果是一个排序性的问题,而你却用了准确度的指标来衡量模型的好坏似乎也说不过去把?
  • 关注线性算法:线性算法通常会不那么好用,但是却更好地被人类理解且可以快速测试,如果你发现某个线性算法表现地还行,请继续优化它。
  • 关注非线性算法:非线性算法往往会需要更多的数据,通过更加复杂的计算来获得一个不错的效果。
  • 从文献中找ideas:这个方法还经常做,从文献中可以了解到更多的经典算法在特定需要下的应用,通过对文献的阅读来扩充你的“解题”思路把。

3. Improve Performance With Algorithm Tuning

模型调参也是一个非常费时间的环节,有的时候“好运”可以马上抽查出表现还不错的结果,并持续调参,就可以得到一个不错的结果。但如果要对其他所有的算法进行优化,那么需要的时间就可能是几天、几个星期或者几个月了。

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

具体策略:

  • 诊断方法:不同的算法需要提供不同的可视化和诊断的方法。
  • 调参的直觉:这个就很“玄学”了,但其实都是一些经验,当你调的参足够多,也可以大致可以对这些不同算法的参数有了自己的理解,自然就有了这些所谓的“直觉”。
  • 随机搜索:在N维参数空间按某种分布(如正态分布)随机取值,因为参数空间的各个维度的重要性是不等的,随机搜索方法可以在不重要的维度上取巧。
  • 网格搜索:先固定一个超参,然后对其他各个超参依次进行穷举搜索。
  • 从文献中找ideas:从文献中了解这个算法用到了哪些算法,并且这些算法主要的取值值域,有益于自身工作的开展哦。
  • 从知名网站中找ideas:国内我个人觉得知乎还是蛮可以的,关于这节的参数调参,也是有好多好文章,其外还有csdn也不错。

4. Improve Performance With Ensembles

这个算法集成的方法也是非常常用的,你可以结合多个模型的结果,综合输出一个更加稳定且效果不错的结果。

Strategy: 结合各种模型的预测结果并输出。

具体策略:

  • 混合模型的预测值:你可以把多个模型的预测结果结合起来,你可以将多个训练效果还不错的模型的预测结合综合起来,输出一个“平均”结果。
  • 混合不同数据的预测值:你也可以把不同的数据集训练出来模型的结果进行结合,作为一个输出。(这个与上面的区别在于数据集的特征不同)
  • 混合数据样本:很拗口,其实意思就是将数据集拆分成不同的子数据集,用于训练同一个算法,最后输出综合的预测结果。这个也被称之为bootstrap aggregation 或 bagging。
  • 使用模型的方法集成:你也可以使用一个新的模型来学习如何结合多个性能不错的模型结果,输出一个最优的结合。这被称之为堆叠泛化或叠加,通常在子模型有技巧时很有效,但在不同的方式下,聚合器模型是预测的一个简单的线性加权。这个过程可以重复多层深度。

本文分享自微信公众号 - SAMshare(gh_8528ce7b7e80)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从6万用户评论中,他们选出了23门全世界最好的CS免费课

    全世界范围内,有大概1000所大学发布了超过13000门免费公开课了,而且数量每年都会增长。

    量子位
  • Transformer各层网络结构详解!面试必备!(附代码实现)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    mantch
  • 【论文笔记】命名实体识别论文

    其实实体识别这块看了挺久了的,今天就来好好聊一聊它。实体识别(Name Entity Recognition)是属于NLP任务中的序列标注问题:给定一个输入句子...

    zenRRan
  • 【论文笔记】基于LSTM的问答对排序

    【导读】本篇论文使用时间门同步学习文本对之间的语义特征,在 Quasi Recurrent Neural Network (QRNN) 模型的基础上进行创新,提...

    zenRRan
  • BERT预训练模型的演进过程!(附代码)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    mantch
  • 5G、人工智能、语音技术……2020值得关注的六大技术趋势

    5G作为更高、更快、更强的通信协议,人工智能与高级分析技术对海量数据进行分析,区块链为数字资产交换保驾护航,语音技术打破各种人机交互界面的界限,自动化完全改变我...

    华章科技
  • 10 大 CNN 核心模型完全解析(附源代码,已全部跑通)

    LeNet虽然不是CNN的起点,但却是后来CNN兴起的标志模型。LeNet-5是1998年YannLeCun设计用于手写数字识别的模型。

    Datawhale
  • NLP技术路线详解:这是从数学到算法的艺术

    自然语言处理很多时候都是一门综合性的学问,它远远不止机器学习算法。相比图像或语音,文本的变化更加复杂,例如从预处理来看,NLP 就要求我们根据对数据的理解定制一...

    Datawhale
  • 数据挖掘工程师必备的技能有哪些?

    R,Python,C ++,Java,Matlab,SQL,SAS,shell / awk / sed…

    加米谷大数据
  • 2D-Driven 3D Object Detection in RGB-D Images

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    于小勇

扫码关注云+社区

领取腾讯云代金券