如何在最短的时间内降低风险并构建可行的机器学习解决方案
机器学习项目遵循不同的规则:
在正常的软件开发中,您只需回答以下问题:
你想要实现什么?
然后你 - 实施。
但是对于机器学习项目,您首先需要探索您拥有的数据的可能性。因此,第一个问题是:
你能实施什么?
机器学习工作流帮助我们的人工智能项目保持在正确的轨道上。如果您刚刚开始机器学习,这可能会避免很多挫折,并帮助您按时交付解决方案。
1.定义任务
假设您正在考虑使用机器学习来提高重要流程的效率(准确性或速度)。这些是明确定义任务的最重要问题:
了解当前的流程
您目前的流程是什么?您的机器学习解决方案很可能会取代现有的流程。目前在这个过程中是如何做决定的?当前的过程将教会您许多领域知识,并帮助您定义机器学习系统的外观。
定义您想要预测的内容
你想要预测哪个确切的变量?定义机器学习系统的输出 - 尽可能详细。
列出有用的数据源
你有什么有用的数据来正确预测这个输出?首先列出当前进程所依赖的数据源。然后通过问自己来寻找更多的信息来源:
如果我 - 作为一个人 - 需要做出这个预测,我首先想知道什么?
2.找到一种有效的方法
在定义任务之后,您现在如何确定是否可以构建一个足够好的系统?
研究
研究其他团队解决类似任务的所有方式 - 无论他们是否使用机器学习。然后使用您学到的知识以及从要替换的现有流程中学到的内容制定计划。
构建数据集
任何机器学习项目的核心部分是训练(和测试)数据集。此数据集包含您希望机器学习系统进行预测的那些案例的实际示例。可以把它想象成Excel表格
- 每个示例一行
- 许多有用的输入数据列
- 有一列包含输出(也称为目标)。
然后,机器学习模型必须学会预测输入的输出。例如,根据客户的付款历史(输入)预测客户的信用评级(输出)。
此数据集类似于通常软件项目中的需求文档 - 您可以根据该参考点检查您是否正常运行。
实验
从最有前途的方法开始,对其进行评估,然后从那里进行改进。重复此过程,直到找到足够好的方法。
3.构建全面的解决方案
您如何从PoC到全面的解决方案?
提高准确性
概念证明是20/80的实施。现在是时候进行第一次迭代中遗漏的重要改进了:
- 添加更多数据
- 构建新特征
- 尝试其他算法
- 微调模型参数。
规模
从概念证明脚本到生产就绪解决方案,这是一大步。
- 可扩展性和稳定性:将数据处理步骤重写为数据管道中的独立可伸缩任务。
- 测试:编写额外的单元和集成测试 - 这也包括数据中可能存在的错误。
- 部署:构建灵活,可重复且易于部署,可以处理所需的吞吐量和处理速度(包括自动构建基础架构)。
A / B测试
与其他软件更新类似,新自动化流程的最终测试与当前流程进行比较。通过A / B测试,您可以衡量您所取得的进步,以及项目的投资回报率。
API
您的机器学习服务需要一种与基础架构的其他部分通信的方式。这可以通过不断将结果保存到数据库中或通过API使算法可用来完成。
文档
除了代码的文档之外,您还应该考虑编写一个小型用户指南来解释解决方案的工作原理。阐明实现背后的思想非常重要:在数据科学中,仅从代码就很难理解您的推理。
- 版本控制。也许您需要针对旧模型进行A / B测试,或者您需要在短时间内切换到以前版本的管道 - 正确的版本控制使这很容易。
- 自动再培训。模型过时 - 最终你必须重新训练新数据。在某些情况下,自动执行此操作是有意义的 - 并经常更新模型。