Earyant的技术博客

欢迎来到Earyant的技术博客,在这里我将与你分享新技术。

基础理论-机器学习项目流程

1. 抽象成数学问题

明确问题是进行机器学习的第一步。机器学习的训练过程通常都是一件非常耗时的事情,胡乱尝试时间成本是非常高的。

这里的抽象成数学问题,指的我们明确我们可以获得什么样的数据,目标是一个分类还是回归或者是聚类的问题

2. 获取数据

数据决定了机器学习结果的上限,而算法只是尽可能逼近这个上限。

  • 数据要有代表性,否则必然会过拟合。
  • 分类问题要考虑到样本均衡问题,不同类别的数据数量不要有数个数量级的差距。
  • 对数据的量级有一个评估,多少个样本,多少个特征,可以估算出其对内存的消耗程度,判断训练过程中内存是否能够放得下。如果放不下就得考虑改进算法或者使用一些降维的技巧了。如果数据量实在太大,那就要考虑分布式了。

3. 特征预处理与特征选择

  • 特征预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。

    归一化、离散化、因子化、缺失值处理、去除共线性等,数据挖掘过程中很多时间就花在它们上面。

  • 特征选择:

    筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如 相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。

4. 训练模型与调优

模型选择与超参数调优。这需要我们对算法的原理有深入的理解。理解越深入,就越能发现问题的症结,提出良好的调优方案。

5. 模型诊断

通过模型诊断来确定模型调优的方向与思路。

  • 过拟合、欠拟合 判断是模型诊断中至关重要的一步。常见的方法如交叉验证,绘制学习曲线等。
  • 误差分析 也是机器学习至关重要的步骤。通过观察误差样本,全面分析误差产生误差的原因:是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题 ?

这个过程需要反复迭代,调优-诊断-调优

6. 模型融合

一般来说,模型融合后都能使得效果有一定提升。而且效果很好。
工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证。

7. 上线运行

模型在线上运行的效果直接决定模型的成败。 不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受。


QA

1. 如果给你一些数据集,你会如何分类?

根据数据类型选择不同的模型,如LR或者SVM,决策树。

  • 假如特征维数较多,可以选择SVM模型,如果样本数量较大可以选择LR模型,但是LR模型需要进行数据预处理
  • 假如缺失值较多可以选择决策树

  • 还可以在考虑正负样例比比,通过上下采样平衡正负样例比。

2. 分类算法列一些有多少种?

  • 单一分类方法: LR, SVM, 决策树, 朴素贝叶斯,神经网络, KNN
  • 集成学习算法:基于 Bagging 和 Boosting 算法思想,随机森林,GBDT,Adaboost,XGboost。

欢迎关注我的其它发布渠道