实际工程问题中应用机器学习和深度学习的踩坑心得总结

数据样本

一开始会偏好去套用论文中的各种华丽算法,希冀提高百分之几的指标,最后“啪啪啪”打脸,发现还是那句老话说得好,“对于一个机器学习问题,数据和特征往往决定了结果的上限,而模型、算法的选择及优化则是在逐步接近这个上限”。所以追本溯源,提高结果的关键手段之一是提高数据和特征的质量和数量,这能达到快速提高指标结果的目的。

  • 增加训练样本数量,收集更多的数据
  • 优化数据清洗
  • 改善样本分布

特征工程

特征工程主要是在应用机器学习算法时需要重点关注的地方,深度学习本身并不需要进行人工提取特征。

  • 模型过拟合,可适当减少特征数量
  • 尝试获得更多的特征
  • 尝试增加多项式特征

模型选择

建模初期阶段,试图复现论文中各式各样的模型,但是实际工程应用中,这些往往不如基于一个模型逐步调参更有效。

  • 初期可以先用一个baseline模型(通常是逻辑回归lr模型),看看指标的基线大致在多少,然后再尝试调参或者其他模型(CNN、RNN等)
  • 尝试减少或增加正则化程度
  • 深度学习神经网络中的隐藏层数选择,可以先从一层开始逐渐增加层数
  • 深度学习中,embedding很重要
  • 模型精度固然重要,但在部署上线时,计算效率也很重要

深度学习

  • 样本规模:小规模训练样本在输入时可以直接load进内存处理,但深度学习往往样本百万级,直接load限制数据规模,规模超过内存则内存爆炸。数据预处理通常在python中直接调用,后续使用算法训练时使用gpu处理,这样gpu和cpu来回切换,gpu占用率抖动。所以并行计算是个好办法,用spark将样本数据构造成tfrecord的格式,效率高,数据规模也有进一步的提升空间。

模型评估

模型调参或更换是否性能得到改进,需要应用一些评价指标来判断。

  • 选择合适的评价指标,一般有准确率、召回率、F1值、AUC等

参考:

  1. 吴恩达机器学习课程
  2. 论算法工程师首先是个工程师之深度学习在排序应用踩坑总结

猜你喜欢

转载自blog.csdn.net/m511655654/article/details/87879518
今日推荐