Elastic:机器学习的实践 - single metric job

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 在 Elasticsearch 中,可以将机器学习视为搜索和分析的自然扩展。它是对时间序列数据的分析。 Elasticsearch 支持的机器学习功能可以通过运行 metric 任务来自动分析时间序列数据,该 metric 任务包含一个或多个定义了将要分析的字段的检测器。 它可以帮助我们识别单变量时间序列数据中的异常,并向我们显示正常情况。在 Elasticsearch 中,我们可以通过机器学习来检测时间系列中的异常情况。

简介:

先前,使用 Elasticsearch 时与机器学习有关的主要问题之一是解决异常检测的问题。基本上,异常检测是一个统计问题,可以通过从输入数据分布的常见统计属性中标记不规则性,以简单的方式解决。 但是,我们可以使用基于机器学习的方法来解决该问题,例如基于聚类的异常检测和基于支持向量机的异常检测。 Elastic Stack 提供的机器学习功能可以涉及 Kibana 的数据可视化工具,作业管理,计划程序以及来自Elasticsearch的统计任务的指标(metrics)聚合。 我们甚至可以使用Beats收集数据。 例如,使用Metricbeat 收集系统级资源使用情况统计信息。

文本作者:刘晓国,Elastic 公司社区布道师。新加坡国立大学硕士,西北工业大学硕士,曾就职于新加坡科技,康柏电脑,通用汽车,爱立信,诺基亚,Linaro,Ubuntu,Vantiq 等企业。

如果你想一站式快速体验 Elasticsearch 所有功能(免费提供机器学习、 X-pack 能力),开通 阿里云 Elasticsearch 1核2G,即可首月免费试用。

什么叫做异常

我们首先观察一下如下的一个时间系列的图:
image.png

我们首先看到绿色的那个统计图,明显地在2016年2月9号4点左右一个叫做 AAL 的航空公司的订票数据明显高于其它天的情况。那么这显然是一个异常的情况。但是如果这个规律是每周或每个月在某个固定的时间段都是这么反复出现,那么这种情况也应该算是正常的情况。另外一个例子就是,我们生活在一个大城市里,比如北京,每到周五晚上高峰期,出城的车辆非常多,明显高于每周的其它工作日,这显然是一个异常的情况,如果我们只拿一周的统计数据来说。然而如果是每周五都是这样的,那么这样的高峰期也就显得非常正常了。这个是需要机器来根据以往的数据来分析而的出来结论的。

另外一种情况是:

image.png

标如果某事物与总体中的其他事物截然不同,则该实体是异常的。
总体来说,如果我们说某个事情不正常,它是一下的一种或两种:

• 当实体的行为突然发生重大变化时
• 当实体与总体中的其他实体完全不同时

在机器学习中,他会根据实际数据自动帮我们选择适当的数据模型:

image.png

机器学习会自动分析数据选择适当的模型,并在地概率事件发生时检测出异常。大多数情况是第一种数据模型。

机器学习

机器学习是使用 Elasticsearch 集群中存在的数据,通过无监督的方法来构建数据模型。通过将(新的或替代的)数据与模型进行比较并识别数据中的异常模式或行为,它可以自动分析时间序列数据。在 Elasticsearch 的机器学习中,机器学习实习如下的功能:

• 异常检测
• 异常打分 (分数介于0到100之间,分数越高,代表越不正常)

在我们觉得是否使用机器学习之前,需要验证将使用的数据的适用性。在使用 Elasticsearch 机器学习之前,你必须考虑如下的三件事:

• 你的数据是否是一个时间系列的数据
• 数据需要包含对用例至关重要的关键性能指标(KPI)
• 数据的位置

事实上,你也可以通过机器学习的 API 接口来分析你的数据。这个工作并不一定小在 Kibana 中来完成。为了发现数据的异常,定义自己的数据的 KPI 是非常重要的一个环节。这些 KPI 指标,可以是:

• 在规定的一段时间里,日志的数量
• 在规定的一段时间里,所收到的 404 响应值
• 在规定的一段时间里,磁盘的使用量

IT组织选择用于跟踪和标记的 KPI 可以跨越各种指标,包括以下各项:

• 客户:影响指标,例如应用程序响应时间或错误计数
• 可用性:面向指标,例如正常运行时间或平均维修时间(MTTR)
• 业务:面向指标,例如每分钟订单数,收入或活跃用户数

定义了 KPI 后,将对此 KPI 进行分析(平均值,最大值,计数等)。 分析功能和KPI的组合将称为检测器。我们可以为数据定义 single metric 或 multi metric 的侦测器以检查数据中的异常情况。

机器学习另外一个很重要的功能就是预测所分析时序数据的未来发展趋势。一但我们建立了机器学习的作业之后,我们就可以进行预测。除了使用 Kibana 的界面进行预测之外,Elasticsearch 也提供 API 接口来实现。在使用这个功能时,你需要提供相应的时间段来进行预测。

机器学习分类:

image.png

机器学习是如何工作的

当将ML作业配置为运行时,ML会将所有这些片段排序在一起。 下图显示了此过程的简化版本:

image.png

image.png

image.png

通常,每个 bucket span 都执行一次上述过程,但是要进行其他优化以最小化 I/O。 这些细节超出了本文章的范围。 但是,关键要点在于,这种编排使 ML 可以联机(即不脱机/批处理),并不断学习新摄取的数据。 ML 也会自动处理此过程,因此用户不必担心实现这一切所需的复杂过程。

image.png

启用白金功能

在继续使用 Elasticsearch 中 的机器学习功能之前,请确保已安装Platinum许可证。 如果下载了 Elasticsearch 软件或使用了开源版本,它将是基本版本。我们必须激活30天试用许可证才能使用 Platinum 功能。

我们可以按照如下的步骤来启动白金功能:

image.png

我们按照上面的三个步骤,选择试用版,进而获得白金版功能。

image.png

机器学习的作业

Kibana 7.0 支持四种类型的机器学习作业,如下所述:

  1. Single-metric jobs:数据分析仅在一个索引字段上执行
  2. Multi-metric jobs:可以对多个索引字段执行数据分析; 但是,每个字段都分别进行分析
  3. Advanced jobs:可以对多个索引字段执行数据分析。提供检测器和影响者的完整配置设置
  4. Population jobs:对不常见数据(例如检测总体中的异常值)的分布行为的数据分析

在今天的练习中,我们来展示一个使用single-metric job的例子。

Sample 数据

在今天的机器学中,我们使用如下的方法下载我们的时序数据:

git clone https://github.com/liu-xiao-guo/machine_learning_data

等我们下载完数据后,我们运行一下的命令:

$./cf_rfem_hist_price_bulk_index.sh

它将会把我们所需要的数据读入到Elasticsearch中。我们可以在Kibana中查找这个数据。

GET cf_rfem_hist_price/_count

显示:

{
  "count" : 90,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  }
}

它显示有90个数据。其中包括61个交易日和29个非交易日的数据。每一条数据的结构是:

"_source" : {
          "date" : "2018-12-26",
          "open" : 55.0803,
          "high" : 56.0999,
          "low" : 54.59,
          "close" : 55.89,
          "volume" : 27038,
          "change" : 0.971,
          "changePercent" : 1.768,
          "label" : "Dec 26, 18",
          "changeOverTime" : 0,
          "symbol" : "RFEM"
        }

这是一个股票代码为RFEM的交易信息。这里它含有每天的开盘价,最高价,最低价,闭市价,交易量等信息。

运行一个 single-metric 作业

基本上,single-metric 作业仅使用索引文档中的一个字段作为分析检测器。 下面介绍了针对 volume 字段运行 single-metric 作业的分步说明。

创建Index pattern

为了创建一个Index pattern,我们按照如下的步骤:
image.png

按照上面的1,2,3步骤:

image.png

输入 cf_rfem_hist_price *,然后选择 Next Step。

image.png

然后在 Time Filter field name 选择 date,然后再选择 Create index pattern。

image.png

这样 cf_rfem_hist_price* index pattern 已创建,可以在机器学习作业中使用。

创建一个新的机器学习工作
要创建单指标机器学习作业,我们需要执行以下操作:

1、单击左侧工具栏上的机器学习按钮,在以下屏幕截图中显示,右侧窗格将显示机器学习面板

image.png

2、从顶部菜单中,选择 “Anomaly Detection”。 点击 Create job 按钮,如以下屏幕截图所示:

image.png

3、该面板将让我们选择源数据,这些源数据来自于新的搜索,选定的索引或保存的搜索。 单击cf_rfem_hist_price索引,如以下屏幕截图所示:

image.png

4、有几种作业类型可用于定义机器学习作业。 让我们选择一个 single metric 作业,如以下屏幕截图所示:

image.png

5、选择 Use full cf_rfem_hist_price* data
image.png

6、然后选择 Next 按钮

image.png

7、 single-metric 作业必须使用聚合。 由于我们的数据是每日记录,而存储段跨度(间隔)是一天,因此无论我们选择 “Sum”,“Mean” 还是 “Median” 聚合,聚合都是相同的。我们选择 volume 字段的 Sum 聚合用来检查个异常。请注意这个也是我们之前谈到的 KPI 指标。我们的目的是通过检查 voume 的总和是否有异常的情况出现。

image.png

image.png

在上面,我们注意的一点是我们的 Bucket span 设置为15m,尽管我们的时序数据是每天一个数据。在实际的使用中可以根据自己的用例来进行调整。

8、点击 Next 按钮,这样我们可以看到如下的画面:

image.png

9、接下来选择 Next:
image.png

10、填好 Job ID,然后选择 Next 按钮
image.png

11、上面显示 Validation 信息。在这一步,如果有错误的话,它将会用红色的字显示错误信息。上面显示一切都好。然后,我们选择 Next 按钮:

image.png

12、我们再选择 Create job 按钮:

image.png

13、我们选择 View results:
image.png

在上面,在起始的部分,我们可以看见机器学习在学习,我们看不出有什么特别的地方。经过一段时间的学习,它侦测出一个异常的情况。

14、恭喜你。你已经创建了一个 single-metric 的机器学习的作业!我们可以点击下面的 Anomalies:

image.png

异常在上面的图表中,以不同的颜色来表示的:

• Warning (blue): 分数低于25

• Minor (yellow): 分数介于25和50之间
• Major (orange): 分数介于50和75之间
• Critical (red): 分数介于75和100之间

我们可以在上面点击 Severity threshold 选择不同的级别来进行显示。如下图,它显示的是只有 Critical (分数高于75的)的异常:

image.png

显然显示有很多异常的情况。点击最上面的那个January 10th 2019,我们可以看到详细的信息:

image.png

上面显示的实际值是304198,但是根据机器学习所预测的值应该在22499。显然这是一个异常。对于销售人员来说,他们可以根据这个情况来了解一下,为什么会出现这么一个异常的情况,是什么原因造成交易量的突然增加。是有人背后操作吗?

在上面的图中,由于我们的时间长度并不长,所以在一个画面中都显示完成。我们时间上可以通过调整左右的按钮来进行时间的选择:

image.png

这样我们可以专注查看我们所关心时间段的数据。
我们也可以针对我们的数据进行标注:

image.png

image.png

点击上面的 Create 按钮,我们就可以为这个事件进行标注:

image.png

我们也可以点击右上角的那个 Forecast (预测)按钮:

image.png

我们填入7天的预测。点击 Run 按钮:

image.png

这是最终预测后的结果。

关于机器学习的时间选择

在上面的练习中,我们选择了默认的15分钟作为 bucket_span 来对我们的数据进行分析。将 bucket span 视为分析前的聚合间隔,即为了进行分析而聚合一部分数据的时间窗口。 bucket_span 的持续时间越短,分析就越精细,但是数据中产生噪声伪像的可能性也就越高。下图显示了在三个不同时间间隔内聚合的同一数据集:

image.png

请注意,如果由于尖峰持续时间短(小于2分钟)而在60分钟间隔内聚集数据几乎消失了,则在5分钟间隔内聚集的版本中看到的突出异常。 实际上,在这60分钟的间隔内,峰值似乎不再显得异常。

声明:

本文版权归作者所有,未经许可不得擅自转载或引用。


image.png

阿里云Elastic Stack】100%兼容开源ES,独有9大能力,提供免费 X-pack服务(单节点价值$6000)

相关活动


更多折扣活动,请访问阿里云 Elasticsearch 官网

阿里云 Elasticsearch 商业通用版,1核2G ,SSD 20G首月免费
阿里云 Logstash 2核4G首月免费
下载白皮书:Elasticsearch 八大经典场景应用


image.png

image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
25天前
|
机器学习/深度学习 人工智能 算法
探索机器学习:从理论到实践的旅程
【8月更文挑战第26天】机器学习,这个听起来既神秘又充满无限可能的领域,实际上已经深入到我们生活的方方面面。本文将通过一次虚拟的“旅行”,带领读者了解机器学习的基本概念、主要技术和应用实例,同时提供一个简单的Python代码示例,帮助初学者迈出探索这一激动人心领域的第一步。无论你是科技爱好者,还是对未来充满好奇的学生,这篇文章都将成为你理解并应用机器学习技术的启航点。
|
2月前
|
机器学习/深度学习 人工智能 算法
探索机器学习:从理论到实践的旅程
本文旨在为读者提供一个关于机器学习领域的全面概述,涵盖了基本概念、关键技术、实际应用以及未来发展趋势。通过深入浅出的方式,引导读者理解机器学习的核心原理,并通过具体案例展示其在现实世界中的应用价值。文章不仅探讨了机器学习的理论基础,还着重介绍了几种主要的机器学习算法,并分析了它们在不同场景下的适用性。同时,本文也对机器学习面临的挑战和未来的发展方向进行了前瞻性的讨论。
34 0
|
2月前
|
机器学习/深度学习 运维 监控
智能化运维的崛起:机器学习在IT管理中的实践与挑战
本文深入探讨了智能化运维领域,特别是机器学习技术在IT管理中的应用。文章首先介绍了智能化运维的概念及其重要性,随后详细阐述了机器学习在故障预测、自动化响应和系统优化中的作用。同时,文章也指出了实施智能化运维时可能遇到的技术挑战和数据治理问题,并提出了相应的解决策略。最后,通过具体案例分析,展示了机器学习技术如何在实际运维中提高系统稳定性和效率。
|
1月前
|
机器学习/深度学习 人工智能 供应链
掌握机器学习:从理论到实践PHP:从入门到精通的旅程
【8月更文挑战第20天】在探索人工智能的无限可能时,机器学习作为核心驱动力,引领着技术革新和产业变革。本文深入浅出地介绍了机器学习的基本概念、核心算法及其在实际中的应用,旨在为初学者提供一个清晰的学习路径和对这一激动人心领域的全面理解。通过探讨机器学习如何影响我们的生活和工作,本文不仅阐述了理论知识,还分享了实践案例,帮助读者把握机器学习的精髓,激发对未来技术发展的想象与创造。
165 65
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习:从理论到实践
【9月更文挑战第15天】本文将深入浅出地介绍机器学习的基本概念,并逐步展开讲解如何通过Python实现一个简单的线性回归模型。我们的目标是为初学者提供一条清晰的学习路径,帮助他们理解机器学习的核心原理,并通过动手实践加深印象。文章分为三个部分:首先,我们将解释机器学习的基础知识;其次,我们将展示如何使用Python和scikit-learn库构建一个线性回归模型;最后,我们将探讨如何评估模型的性能。无论你是机器学习领域的新手还是有一定基础的学习者,这篇文章都将为你提供有价值的见解和实用的技能。
|
1月前
|
机器学习/深度学习 人工智能 数据处理
【人工智能】项目实践与案例分析:利用机器学习探测外太空中的系外行星
探测外太空中的系外行星是天文学和天体物理学的重要研究领域。随着望远镜观测技术的进步和大数据的积累,科学家们已经能够观测到大量恒星的光度变化,并尝试从中识别出由行星凌日(行星经过恒星前方时遮挡部分光线)引起的微小亮度变化。然而,由于数据量巨大且信号微弱,传统方法难以高效准确地识别所有行星信号。因此,本项目旨在利用机器学习技术,特别是深度学习,从海量的天文观测数据中自动识别和分类系外行星的信号。这要求设计一套高效的数据处理流程、构建适合的机器学习模型,并实现自动化的预测和验证系统。
33 1
【人工智能】项目实践与案例分析:利用机器学习探测外太空中的系外行星
|
1月前
|
机器学习/深度学习 人工智能 算法
AI基础科普:机器学习入门与实践
本文全面介绍了机器学习及其在信用评分预测中的应用。首先概览了机器学习作为人工智能核心领域的重要性及其实现数字化转型的作用。接着定义了机器学习,并区分了监督、无监督和强化学习等主要类型。随后,通过一个具体的场景——利用Python与scikit-learn库构建逻辑回归模型来预测客户的信用等级,详细阐述了从数据准备、模型训练到评估的全过程。此外,还介绍了如何借助阿里云机器学习平台PAI进行云上的模型训练和部署。最后,通过总结逻辑回归算法和其在金融领域的应用,鼓励读者深入学习并实践AI技术,以适应快速发展的科技趋势。
85 2
AI基础科普:机器学习入门与实践
|
23天前
|
机器学习/深度学习 数据处理 定位技术
构建您的首个机器学习项目:从理论到实践
【8月更文挑战第28天】本文旨在为初学者提供一个简明的指南,通过介绍一个基础的机器学习项目——预测房价——来揭示机器学习的神秘面纱。我们将从数据收集开始,逐步深入到数据处理、模型选择、训练和评估等环节。通过实际操作,你将学会如何利用Python及其强大的科学计算库来实现自己的机器学习模型。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你打开一扇通往机器学习世界的大门。
|
28天前
|
机器学习/深度学习 人工智能 算法
探索机器学习的奥秘:从理论到实践
【8月更文挑战第23天】在这篇文章中,我们将深入探讨机器学习的世界,从基础理论到实际应用。我们将了解机器学习的基本概念,探索不同类型的机器学习算法,并讨论如何将这些算法应用于实际问题。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和知识。让我们一起踏上这段激动人心的旅程吧!
|
13天前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的基本原理与Python代码实践
【9月更文挑战第6天】本文深入探讨了人工智能领域中的机器学习技术,旨在通过简明的语言和实际的编码示例,为初学者提供一条清晰的学习路径。文章不仅阐述了机器学习的基本概念、主要算法及其应用场景,还通过Python语言展示了如何实现一个简单的线性回归模型。此外,本文还讨论了机器学习面临的挑战和未来发展趋势,以期激发读者对这一前沿技术的兴趣和思考。

热门文章

最新文章