超哥的杂货铺▲你需要做哪些工作?,在一个机器学习项目中

机器学习是通过对已有数据进行模型训练 , 再将训练好的模型应用于未知数据的过程 。 从这句话中我们可以看到几个关键要素:数据 , 模型 , 训练 , 应用 。 对于一个通常的机器学习项目 , 这些确实是其中最核心的环节 。 那么 , 对于其中每一个项目 , 我们具体要做哪些工作?这些工作之间有什么联系?在这些核心工作之外 , 还有哪些我们可能忽略的项目 。 本文我们来探讨这些问题 。 内容主要参考了
《Hands-OnMachineLearningwithScikit-LearnandTensorFlow》一书 。
超哥的杂货铺▲你需要做哪些工作?,在一个机器学习项目中
文章图片
总体框架
实际中 , 问题最初是从一个商业问题开始的 , 比如“如何预测某地区未来的房价是多少?”熟悉机器学习的同学可能会知道 , 这是一个典型的回归问题 。 但此时我们更应该思考问题本身与现有业务的联系 , 比如该项目的如何影响上下游的业务 , 而不是项目本身的细节 。 可以参考下面的框架:
超哥的杂货铺▲你需要做哪些工作?,在一个机器学习项目中
文章图片
将问题框架化并且关注重点
问题定义好了之后 , 就需要着手准备数据了 。 这个过程也不是盲目进行的 , 也需要考虑与之相关的很多细节 。 如数据源 , 存储空间 , 数据敏感性 , 获取成本等 。 下面的框架可以给我们一些提示 。
超哥的杂货铺▲你需要做哪些工作?,在一个机器学习项目中
文章图片
获取数据
从获取数据开始 , 就进入我们上文提到的核心环节 。 探究数据和可用性 , 分布 , 可视化等非常必要 , 也能帮助我们进一步思考数据与最终目标的联系 。 这一环节通常被称为探索性分析 , 具体可以参考下面的步骤 。
超哥的杂货铺▲你需要做哪些工作?,在一个机器学习项目中
文章图片
探索数据
上一步骤中认识了数据 , 结合前面对于问题的定义 , 接下来就需要对数据进行预处理 。 通常包含两部分工作:数据预处理和特征工程 。 预处理的部分包括异常值 , 缺失值 , 重复值等;特征工程则包括特征提取 , 特征构建 , 特征缩放 , 特征融合等环节 。 这一环节通常会特别耗时 , 甚至可能会占用绝大多数的时间 , 下面的步骤虽然不是面面俱到 , 但也能给我们一些参考 。
超哥的杂货铺▲你需要做哪些工作?,在一个机器学习项目中
文章图片
准备数据
处理完数据 , 我们来看模型 。 机器学习有很多经典的模型 , 可以用于分类 , 回归 , 聚类 , 关联分析等方面 , 要根据我们的目标问题选择合适的模型 , 还要选择合理的评估指标对模型做合理的评价 。 模型与上一步的特征紧密相关 。 需要经过多次迭代之后才能找到更合适的模型 。 这一环节的训练测试耗费的精力可能不亚于上一步骤的特征工程 。 模型中超参数的选择可能有很多技巧 , 也是需要经验知识来支撑 , 并且可能会用到很多优化技巧 , 如贝叶斯优化方法 。
超哥的杂货铺▲你需要做哪些工作?,在一个机器学习项目中
文章图片
超哥的杂货铺▲你需要做哪些工作?,在一个机器学习项目中
文章图片
列出有用模型和微调系统
上面步骤完成后 , 整个项目最核心的部分可能就结束了 , 但接下来的工作也是非常重要的 。 首先需要回到最开始的商业问题 , 向老板展示你的成果 , 包括你的方案和思路 , 最终可能的效果 , 中间有趣的发现等等 。 之后要将之前的成果部署和上线 , 在这一步将你的成果交给实际去检验 , 在这个过程中可能会产生很多意料之外的问题 , 需要不断地对模型进行修正和监控 。 至此 , 一个完整的项目流程就走完了 。


推荐阅读