超详细!上线一个机器学习项目你需要哪些准备?
https://www.jianshu.com/p/2e8f2b89a386
摘要: Canvas是用于设计和记录机器学习系统的模板。它比简单的文本文档具有优势,因为Canvas用简单的部件通过部件之间的相关性来寻找机器学习系统的关键组件。这个工具已经很流行,因为它对复杂项目进行了可视化操作。 在本文中,我们通过列举数据科学家遇到的实际问题和实用的技巧来描述Canvas的每个部分。
![](https://images2018.cnblogs.com/blog/1457888/201808/1457888-20180824090122020-696869096.png)
价值主张
机器学习应该以满足用户需求为目的进行设计
谁是预测系统的最终用户?
我们需要他们做些什么?
服务的目标是什么?目标的意义又是什么?
只有在回答这3W问题之后,你才能开始思考一些关于数据收集、特征工程、建模、评估和监测系统的问题。
从数据中学习
让我们继续看看专门用于从数据中学习的Canvas的流程,它是由数据源、收集数据、特征工程、建模等几部分组成的。
数据源
这一部分提出了一个关于我们可以使用哪些原始数据源的问题。这一步不需要具体计划收集哪些数据,但会迫使你开始思考要使用的数据源。你需要考虑的一些数据源示例包括内部数据库、开放数据、域中的研究论文、API、网页抓取以及其他机器学习系统的输出等。
收集数据
这一部分主要解决收集和准备数据的问题。如果没有训练数据集,机器学习项目就不可能存在。并且,训练集最好包含大量已标记数据。这意味着你的学习系统将需要示例输入和他们期望的输出。只有从标有正确答案的数据中学习之后,机器学习模型才能用于对新数据进行预测。
通常,数据最初并不是以标注形式提供的,制定数据集的计划非常重要,该数据集将特征过程用作预测的实际数据。只有输入的数据正确,所开发的学习算法才具有良好的性能。
例如,如果你想建立一个算法来预测一个Instagram帐户是假的还是真的,首先你需要人类将帐户标记为真或假。对于一个人来说这不是一项复杂的任务,但是根据你需要的数据量,这可能会变得很昂贵。
但是,你可以通过更具成本效益的方式获取数据。例如,Instagram允许其用户将其消息中的图像和配置文件报告为垃圾邮件。用户免费为Instagram算法标记数据,给喜欢的帖子点赞并将不当内容报告为垃圾邮件。然后,Instagram使用这些用户反馈来打击欺诈和垃圾邮件帐户,并为每位客户提供个性化的消息。
需要指出的是,迄今为止最准确的机器学习系统都采用了“人为介入”方法。这种方法利用了机器和人的智能。当机器不确定它做出的预测是否正确时,它会依赖于人,然后将人的答案添加到其模型中。“人为介入”这一方法有助于获得高质量的新数据,并随着时间的推移提高模型的准确性。
还有一些项目可以在没有标注数据集的情况下启动,。这些是关于无监督机器学习任务的项目,例如异常检测或观众分类。
特征工程
一旦拥有已标注的数据,你需要将其转换为算法可接受的格式。在机器学习中,这个过程被称为特征工程。最初的一组原始特征可能是冗余、海量而无法管理。因此,数据科学家需要选择最重要的信息特征来促进学习。特征工程需要大量的实验,并将自动化技术与直觉和领域专业知识相结合。
InDataLabs的数据科学家Eugeny表示:
我们使用简单的机器学习技术,如梯度提升或线性回归来选择和解释特征。回归模型的系数自动提供对特征重要性的评估估计。我们使用不同的超参数配置多次训练模型,以确保特征的排序是可靠的,并且从实验到实验并没有显着变化。
如果你是领域专家(不是数据科学家),你应该从自己的角度指定哪些特征是最重要的,这对未来的数据工程师非常有用。如果发现自己列出了太多功能,请尝试将它们组合到特征系列中。
许多机器学习专家认为,正确选择的特征是有效构建模型的关键。
建立和更新模型
该部分解决了何时使用新数据创建/更新模型的问题。主要有两个原因不断使得你的模型不断更新。首先,新数据可以改善模型。其次,它允许捕捉模型运行中的任何变化。模型需要用更新的频率取决于预测内容。
如果模型预测了短语的情感,就不需要每天或每周更新它。文本的结构变化非常缓慢甚至没有改变。如果你获得了更多的训练数据,这是你需要大规模的更新模型。
另一方面,有一些模型在快速变化的情况中工作。例如,如果对客户行为做出预测,则应经常检查这一模型是否适用于新用户。受众规模和受众结构的重大变化可能使得我们需要使用新数据更新模型。
有时更新需要更多的时间和更多的处理能力。在这种情况下,我们需要在成本、时间和模型质量之间取舍。
这个部分的关键之处在于,你的模型不是一次性构建的,它应该随着时间而改变,就像世界上的所有事物一样。
进行预测
Canvas主要致力于进行预测,并由机器学习任务、决策、预测、离线评估等部件组成。
机器学习任务
该部分旨在根据输入、输出和问题类型定义机器学习任务。最常见的机器学习任务是分类、排名和回归。
如果你预测某些物体是什么,要预测的输出的是类标签。在二进制分类中,有两种可能的输出类别。在多类分类中,有两个以上的可能类。我们前面讨论过的伪造Instagram账户的预测问题是二元分类的一个例子。输入数据可能包括个人资料名称、个人资料描述、帖子数量、关注者数量、输出标签可能是“真的”或“假的“。
如果你试图预测数值,那么你正在处理回归任务。例如,当我们试图根据价格历史和有关建筑和市场的其他信息来预测未来几天的房地产价格时,我们可以将其视为回归任务。
决策
如何使用预测来向最终用户的决策提供建议?
在收集培训数据并建立模型之前,你和团队不得不阐述如何使用这些预测来做出为最终用户提供价值的决策。对于每个项目来说,这是一个非常重要的问题,因为它与项目的盈利能力密切相关。如前文所述,一个成功的机器学习系统应该为其用户创造额外的价值。
机器学习系统必须以真正有意义的方式影响决策过程,预测必须按时交付。许多公司犯的一个常见错误是建立一个机器学习模型,该模型应该可以在线进行预测,然后发现他们无法获得实时数据。所以,在计划您的机器学习项目时要注意时间,并确保在正确的时间提供正确的数据以提供您可以采取行动的预测。
机器学习系统的输出并不总是用户正在寻找的结果。例如,流失预测模型有助于预测一个月内谁可能流失,但最终用户需要的是流失预防(以具有成本效益的方式阻止客户流失)。从流失预测到流失预防需要做很多步骤,机器学习项目的拥有者必须能够事先描述这些步骤。如果你不能解释如何使用预测来做出为最终用户提供价值的决策,那么在这里停下来,不要向前走,除非你找到答案。
进行预测
该部分解决了以下问题:“我们什么时候对新投入做出预测?”以及“我们需要多长时间来设计新的投入并进行预测?”
有些模型允许分别更新每个用户的预测。在这种情况下,你可以考虑几种模型更新方法:
每次用户打开您的应用程序时都会进行新的预测
新的预测是根据请求做出的,用户可以通过点击应用程序中的特殊按钮来请求更新
预测更新由某个事件触发,例如用户提交新的重要信息
对所有用户按计划进行新的预测,例如每周一次
还有一些系统,其中对不同用户的预测是相互关联的,并且在不更新整个系统的情况下无法为一个用户进行更新。这种通用更新需要更多时间和更多处理能力,因此需要更多计划。预测更新所需的时间必须符合所需的更新频率。
例如,如果您要构建影片推荐系统,请首先考虑建议应该多久更新一次新输入,以便与用户相关且有价值。那么你应该检查这是否可能,因为你的机器学习系统的速度有限。如果您想每天更新并且更新需要两个小时,这对您来说是个好消息。如果您认为您的建议只有每小时更新一次才有价值,而更新需要两个小时,则您需要再次在成本,时间和模型质量之间妥协。
离线评估
该模块在投入生产之前解决模型性能评估的问题。规划方法和指标以在部署之前评估系统非常重要。如果没有验证指标,您将无法选择能够做出最佳预测并回答的模型,模型是否足够好以及何时可以投入生产。因此,请确保您具有代表您正在努力实现的指标。
要评估一个有监督的机器学习算法,我们通常使用k-fold交叉验证。该方法意味着对可用训练数据的(k-1)个子集上的几个机器学习模型进行训练,并对保留用于评估的补充子集进行评估。这个过程重复k次,每次都有不同的验证数据。这种技术有助于避免过度拟合,同时使用所有可用的数据进行训练
InDataLabs的数据科学家Eugeny如是说。
离线评估的另一种方法是对实时数据进行离线评估。例如,如果您正在建立预测房地产价格的模型,则只需等待实际销售数据可用,并将您的预测与实时数据进行比较。
实时评估和监测
Canvas 的最后部分涵盖了模型的在线评估和监测。在这里,您将指定度量标准来监控部署后的系统性能(跟踪度量标准),并衡量价值创建(业务度量标准)。调整这两种指标将使公司中的每个人都更快乐。理想情况下,模型的质量与业务结果之间应有直接关系。
在线阶段有其自己的测试程序。A/B测试是最常用的在线测试形式。这种方法相当简单,但它有一些棘手的规则和原则,您需要遵循才能正确设置并解释结果。
A/B测试的一个有希望的替代方法是称为多臂博弈的算法。如果您有多个竞争型号,并且您的目标是最大限度地提高用户的整体满意度,那么您可以尝试运行多臂博弈算法。
当模型投入生产时,它与真实用户进行交互,他们也可以提供关于模型准确性信息。您可以收集这种现场反馈,进行客户访谈或分析评论和支持请求。
您还应该继续跟踪模型在实时数据验证度量上的性能,并在模型质量对最终用户不满意之前进行模型更新。
本文由阿里云云栖社区组织翻译。
文章原标题《How to Design Better Machine Learning Systems with Machine Learning Canvas》,译者:Anchor C.,审校:虎说八道。