数据样本
一开始会偏好去套用论文中的各种华丽算法,希冀提高百分之几的指标,最后“啪啪啪”打脸,发现还是那句老话说得好,“对于一个机器学习问题,数据和特征往往决定了结果的上限,而模型、算法的选择及优化则是在逐步接近这个上限”。所以追本溯源,提高结果的关键手段之一是提高数据和特征的质量和数量,这能达到快速提高指标结果的目的。
- 增加训练样本数量,收集更多的数据
- 优化数据清洗
- 改善样本分布
特征工程
特征工程主要是在应用机器学习算法时需要重点关注的地方,深度学习本身并不需要进行人工提取特征。
- 模型过拟合,可适当减少特征数量
- 尝试获得更多的特征
- 尝试增加多项式特征
模型选择
建模初期阶段,试图复现论文中各式各样的模型,但是实际工程应用中,这些往往不如基于一个模型逐步调参更有效。
- 初期可以先用一个baseline模型(通常是逻辑回归lr模型),看看指标的基线大致在多少,然后再尝试调参或者其他模型(CNN、RNN等)
- 尝试减少或增加正则化程度
- 深度学习神经网络中的隐藏层数选择,可以先从一层开始逐渐增加层数
- 深度学习中,embedding很重要
- 模型精度固然重要,但在部署上线时,计算效率也很重要
深度学习
- 样本规模:小规模训练样本在输入时可以直接load进内存处理,但深度学习往往样本百万级,直接load限制数据规模,规模超过内存则内存爆炸。数据预处理通常在python中直接调用,后续使用算法训练时使用gpu处理,这样gpu和cpu来回切换,gpu占用率抖动。所以并行计算是个好办法,用spark将样本数据构造成tfrecord的格式,效率高,数据规模也有进一步的提升空间。
模型评估
模型调参或更换是否性能得到改进,需要应用一些评价指标来判断。
- 选择合适的评价指标,一般有准确率、召回率、F1值、AUC等
参考:
- 吴恩达机器学习课程
- 论算法工程师首先是个工程师之深度学习在排序应用踩坑总结