在一个机器学习项目中,你需要做哪些工作?

2020-02-24 18:03:30 浏览数 (1)

机器学习是通过对已有数据进行模型训练,再将训练好的模型应用于未知数据的过程。从这句话中我们可以看到几个关键要素:数据,模型,训练,应用。对于一个通常的机器学习项目,这些确实是其中最核心的环节。那么,对于其中每一个项目,我们具体要做哪些工作?这些工作之间有什么联系?在这些核心工作之外,还有哪些我们可能忽略的项目。本文我们来探讨这些问题。内容主要参考了

《Hands-On Machine Learning with Scikit-Learn and TensorFlow》一书。

总体框架

实际中,问题最初是从一个商业问题开始的,比如“如何预测某地区未来的房价是多少?”熟悉机器学习的同学可能会知道,这是一个典型的回归问题。但此时我们更应该思考问题本身与现有业务的联系,比如该项目的如何影响上下游的业务,而不是项目本身的细节。可以参考下面的框架:

将问题框架化并且关注重点

问题定义好了之后,就需要着手准备数据了。这个过程也不是盲目进行的,也需要考虑与之相关的很多细节。如数据源,存储空间,数据敏感性,获取成本等。下面的框架可以给我们一些提示。

获取数据

从获取数据开始,就进入我们上文提到的核心环节。探究数据和可用性,分布,可视化等非常必要,也能帮助我们进一步思考数据与最终目标的联系。这一环节通常被称为探索性分析,具体可以参考下面的步骤。

探索数据

上一步骤中认识了数据,结合前面对于问题的定义,接下来就需要对数据进行预处理。通常包含两部分工作:数据预处理和特征工程。预处理的部分包括异常值,缺失值,重复值等;特征工程则包括特征提取,特征构建,特征缩放,特征融合等环节。这一环节通常会特别耗时,甚至可能会占用绝大多数的时间,下面的步骤虽然不是面面俱到,但也能给我们一些参考。

准备数据

处理完数据,我们来看模型。机器学习有很多经典的模型,可以用于分类,回归,聚类,关联分析等方面,要根据我们的目标问题选择合适的模型,还要选择合理的评估指标对模型做合理的评价。模型与上一步的特征紧密相关。需要经过多次迭代之后才能找到更合适的模型。这一环节的训练测试耗费的精力可能不亚于上一步骤的特征工程。模型中超参数的选择可能有很多技巧,也是需要经验知识来支撑,并且可能会用到很多优化技巧,如贝叶斯优化方法。

列出有用模型和微调系统

上面步骤完成后,整个项目最核心的部分可能就结束了,但接下来的工作也是非常重要的。首先需要回到最开始的商业问题,向老板展示你的成果,包括你的方案和思路,最终可能的效果,中间有趣的发现等等。之后要将之前的成果部署和上线,在这一步将你的成果交给实际去检验,在这个过程中可能会产生很多意料之外的问题,需要不断地对模型进行修正和监控。至此,一个完整的项目流程就走完了。

展示解决方案和启动

需要说明的是,上面的框架只是一个参考,实际中并不是每一个步骤都会用到,可以根据需要检查和选择。每一环节的重要性也都各不相同,但都非常重要。有些步骤可能并不十分具体,还需要实际中进一步查看相关资料。不过这个框架从全局角度给我们带来一个机器学习的项目全貌,便于从宏观角度把握每一环节所处的位置,这是一种很重要的做事思路。

0 人点赞