电子说
正如Azure最新的机器学习服务所显示的那样,机器学习已不再仅仅是关乎视觉和语音。
微软在机器学习上押下重注的一个关键部分是,这些技术需要被民主化,并且能够转变为相对容易理解的构建块,以便微软的开发人员能够快速学习并在自己的应用程序中进行使用。
这就是Azure认知服务的用武之地。这些服务不需要用户了解ResNet50深度学习神经网络的训练层次,也不需要了解如何使用TensorFlow或Microsoft Cognitive Toolkit (CNTK)来构建学习平台,而仅仅只需要使用API即可。微软已经为这些服务训练了神经网络,并将继续对它们进行优化,还将真实世界的操作用来作为未来改进的基础。与构建和运行您自己的机器学习算法的计算和存储成本相比,它们的使用成本则相对低廉。
Azure上的机器学习工具已迅速成为了任何想要向应用程序添加基本人工智能的人的重要资源。需要注意的是它们的使用范围依然是有限的,其重点放在了以下三个关键领域:计算机视觉、文本分析和语音识别。它们都是重要的领域,但它们也只是现代机器学习的一个有限子集而已。
Azure认知服务
进入了一个新的AI领域
幸运的是,第一个探索机器学习在其他方面应用的新认知服务也在最近进入了测试阶段:将异常检测添加到了功能集中。异常检测是一种重要的人工智能工具,用于分析在数据源正常运行特征之外的时间序列数据。这使得它成为了一个非常灵活的工具,因为现代企业拥有大量的流数据,从金融交易到软件日志再到设备遥测。显然,你不应低估使用一个API就可以在所有这些不同的数据源中工作的能力,因为它使构建适当的软件变得更加容易了。
正常情况下,异常检测需要足够的时间来设置。您需要使用大量数据来对您的模型进行训练,以确定什么是正常操作,什么是异常操作。这就是信用卡欺诈检测系统是如何建立一个你的消费(以及他们所有客户的习惯)模型,以检测何时使用了被泄密了的卡片,并阻止任何未来的交易,将损失降到最低的。
如果要使这种类型的操作成为通用服务,就需要能够为发送到服务的数据类型切换合适的检测模型。这正是Azure认知服务异常检测器所采用的方法,它能够使用一个自适应推理引擎来选择一个适合当前时间序列数据的检测模型。
通过在运行时选择算法,微软绕过了异常检测训练成本中最糟糕的部分。可能它使用的算法并不完美,但是它将比使用一个通用规则引擎来处理异常检测要好得多。还有一个额外的好处:您不必花费大量的时间来标记千兆字节的训练数据了。
构建异常检测应用程序
与所有Azure认知服务一样,异常检测器也需要一个订阅密钥,该密钥可以在Azure门户中生成,连同你的订阅端点URL。微软还提供了一个运行在Jupyternotebook上的演示服务,您可以使用它在使用您自己的代码和数据之前快速试用该服务。
实际上,您将通过异步函数来向服务端发送JSON格式的数据。如果您正在处理流数据,您可以在每次更新时发送一个时间序列数据的移动窗口,并检测序列中最后一段数据的异常情况。如果您使用它来分析批处理数据,那么您将得到数据集中已标识的异常位置的列表,其中保存着每个数据点的布尔值数组。如果为true,则表示异常,您可以使用任何true值所对应的索引来作为您所提供的源数据数组中异常的索引。
使用时间序列数据
异常检测器的工作原理与大多数Azure平台服务类似,它提供了一个REST API来接收JSON格式的数据。使用C# SDK可以更容易地构建代码来使用该服务;您也可以使用其他语言,但这样你就需要手工来构建REST调用。
微软对数据格式也有一些限制:数据之间的时间间隔必须是固定的,虽然系统可以接受丢失最多10%预期点的数据,但最好确保您的数据是完整的。如果要交付具有清晰模式的数据,则批处理中的数据点的数量可能会有所不同。数据集中至少需要有12个点,最多8,640个点,时间戳使用UTC格式。
您不仅限于在流数据上使用异常检测器;如果使用时间序列数据库来记录数据,那么你也可以在所有数据上以批处理的方式运行它,但这可能意味着要发送大量的数据。这种方法可以帮助识别过去可能被忽略的问题,例如发现不正常的金融交易,这些交易是出现欺诈的指标,或是可能影响整体生产力的机器的持续问题。在历史数据上运行它可以帮助您获得所需的信息,以便对您所使用的算法进行微调,从而使其更有可能发现您特定业务中的问题。
调整异常检测器
关于异常检测API需要注意的一点是:它与其他的认知服务有所不同,因为您可以调整它处理数据的方式。作为JSON请求的一部分,您可以指定数据周期的详细信息、它的粒度以及两个微调算法敏感性的选项。其中一个是maxAnomalyRatio,它被用来帮助识别数据点是否出现了异常。另一个则是sensitivity,帮助调整算法的边际值;数值越低,边缘越大,异常检测的灵敏度则越低。
您的应用程序中可能有大量的时间序列数据,而且通常很难从中提取价值。通过添加一点机器学习,您就可以开始查看那些不符合正常模式的内容了,然后使用这些信息构建适当的响应。
这就是为什么使用像Jupyter Notebook这样的工具来探索结果,并在将其构建为代码之前对检测器进行调优是一个好主意的原因了。您首先需要查看发生了什么异常,并且能够将它们与需要管理的事件联系起来。通过使用交互式笔记本和历史数据,您可以从中找到适当的相关性,从而帮助您设计应用程序,以使用接近实时的异常检测来交付您可以理解的结果。这时您就可以开始使用异常检测API来获得真正的业务价值了。
全部0条评论
快来发表一下你的评论吧 !