带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(4)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(4)


《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.16. Machine learning ——3.5.16.3.Anomaly detection(3) https://developer.aliyun.com/article/1227221


6. job 类型简介

 

single metric job、Multi metric job、population job 是 Kibana抽象出来的几种常用类型,并非机器学习 job 分出来的类型,从 API 就可以清晰的看到,并没有 type 字段区分 job 类型,是通过配置参数的方式调整成用户预期的分析 job。

 

主要用途:

 

l Single metric:对一个索引字段进行数据分析。

l Multi metric:对多个索引字段分别进行数据分析,可根据字段分组切片。

l Population:群体分析,用于检测行为不同于指定群体中的其他实体的对象。

l Advanced:高级用法,对一个或多个索引字段执行数据分析,可包含多个检测器,且能通过JSON 编辑没有在 Kibana 中可视化的配置。


7. 使用 API 创建 Multi metric job

 

通过 API 创建 Multi metric job,指定 jobId、bucket_span、detectors、time_field、

by_field_name、influencers。


PUT _ml/anomaly_detectors/second_detector
{
  "description": "multi metric detector",
  "analysis_config": {
    "bucket_span": "15m",
    "detectors": [
      {
        "detector_description": "Sum of volume",
        "function": "sum",
        "field_name": "volume",
        "by_field_name":"label.keyword"
      },
      {
        "detector_description": "max of volume",
        "function": "max",
        "field_name": "volume",
        "by_field_name":"label.keyword"
      },
      {
        "detector_description": "max of high",
        "function": "max",
        "field_name": "high",
        "by_field_name":"label.keyword"
      }
    ],
    "influencers":["label.keyword","symbol"]
  },
  "data_description": {
    "time_field": "date",
    "time_format": "epoch_ms"
  }
  }

可以发现和 single metric job 十分类似,只是 Multi metric job 使用了多个 detectors,对多个字段进行检测,并且按照 label.keyword 字段进行拆分,在该 job 中添加了 label.keyword 、symbol 这两个影响者。

 

同样的,需要为该 job 创建一个 datafeed,保证 job 出于 open 状态,并开启 datafeed 的 task。


# 创建datafeed,通过job_id绑定机器学习job
PUT _ml/datafeeds/second-datafeed
{
  "job_id": "second_detector",
  "indexes": [
    "zmc-test1"
  ],
  "scroll_size": 1000
}
# 开启datafeed,将数据传输给job(需要保证job是open状态)
POST _ml/datafeeds/second-datafeed/_start?start=1970-01-02T10:00:00Z&end=2021-09-10T00:00:00Z

8. 使用 API 创建 population job

 

通过 API 创建 population job,可以看到与上述2种 job 的创建所使用的参数基本非常类似。over_field_name 表示以 label 字段的数据为总体的基准,对 field_name 指定的 change 字段进行分析。

 

这里还补充了一些可选参数,model_memory_limit 指定了该 job 的内存限制, model_snapshot_retention_days 指定了 snapshot 的保存时间,allow_lazy_open 指定了内存不足的情况下 job 是否可以 open(默认 false,不允许 open,如果为 true 则表示允许 open,等待内存充足的时候再执行),results_index_name 指定了 job 结果存入的索引的后缀名。


PUT _ml/anomaly_detectors/population_v2_detector
{
  "description": "population detector",
  "analysis_config": {
    "bucket_span": "15m",
    "detectors": [
      {
        "detector_description": "mean(change) over \"label.keyword\",这是一个群体分析j
        ob",
        "function": "mean",
        "field_name": "change",
        "over_field_name": "label.keyword",
        "detector_index": 0
      }
    ],
    "influencers": [
      "label.keyword"
    ]
  },
  "analysis_limits": {
    "model_memory_limit": "1024mb",
    "categorization_examples_limit": 4
  },
  "data_description": {
    "time_field": "date",
    "time_format": "epoch_ms"
  },
  "model_snapshot_retention_days": 1,
  "results_index_name": "shared",
  "allow_lazy_open": false
}

 为 population_v2_detector 这个 job 绑定一个 datafeed,该 datafeed 可以获取 zmc-test1 索引中的所有数据,可以通过 query 语句进行调整。

# 创建datafeed
PUT _ml/datafeeds/population-v2-datafeed
{
  "job_id": "population_v2_detector",
  "indexes": [
    "zmc-test1"
  ],
  "scroll_size": 1000,
  "query": {
    "bool": {
      "must": [
        {
          "match_all": {}
        }
      ]
    }
    },
  "chunking_config": {
    "mode": "auto"
  },
  "delayed_data_check_config": {
    "enabled": true
  }
}
# 开启datafeed任务,将数据传输到job
POST _ml/datafeeds/population-v2-datafeed/_start?start=1970-01-02T10:00:00Z&end=2021-09-10T00:00:00Z

9. 使用 Kibana 创建 Multi metric job、population job

 

1大多步骤与 single metric job 创建方式一致,不再赘述。

2Multi metric job,指标属性选取演示。


image.png


还可以在后续步骤中选择 label 字段进行切片,分组后逐一分析。

 

3population job,指标属性选取演示。

image.png

10. 查看机器学习分析结果

 

该过程即查询 .ml-anomalies-shared 索引中的数据,ES 提供了语义更加清晰的 API。

 

1按照 bucket 返回异常检测 job 的结果。


GET _ml/anomaly_detectors/first_detectors/results/buckets
{
  "anomaly_score": 80,
  "start": "1547078400000"
}

2可以通过 Kibana 的可视化页面查看结果和预测。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
机器学习/深度学习 运维 安全
带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(2)
带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(2)
|
机器学习/深度学习 运维 API
带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(3)
带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(3)
|
机器学习/深度学习 存储 JSON
带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(5)
带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(5)
100 0
|
机器学习/深度学习 存储 运维
带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(1)
带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(1)
141 0
|
存储 资源调度 NoSQL
带你读《Elastic Stack 实战手册》之45:——3.5.4.Graph (上)
带你读《Elastic Stack 实战手册》之45:——3.5.4.Graph (上)
124 0
|
数据可视化 NoSQL API
带你读《Elastic Stack 实战手册》之45:——3.5.4.Graph (下)
带你读《Elastic Stack 实战手册》之45:——3.5.4.Graph (下)
138 0
|
存储 SQL NoSQL
带你读《Elastic Stack 实战手册》之37:——3.4.2.18.Denormalizing / flattening data
带你读《Elastic Stack 实战手册》之37:——3.4.2.18.Denormalizing / flattening data
103 0
|
资源调度
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(7)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(7)
|
存储
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(3)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(3)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(11)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(11)

热门文章

最新文章