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

简介: 带你读《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 的可视化页面查看结果和预测。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
Java Spring 容器
在Feign接口中返回泛型类型——自定义Decoder
前几天对接了一套第三方接口,所有接口的请求地址一样,请求参数和响应结果中有很多共同的字段,所以就想把这些字段都抽出来,Feign定义的接口直接返回泛型类型。
在Feign接口中返回泛型类型——自定义Decoder
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
13405 1
|
存储 人工智能 自然语言处理
Lindorm作为AI搜索基础设施,助力Kimi智能助手升级搜索体验
月之暗面旗下的Kimi智能助手在PC网页、手机APP、小程序等全平台的月度活跃用户已超过3600万。Kimi发布一年多以来不断进化,在搜索场景推出的探索版引入了搜索意图增强、信源分析和链式思考等三大推理能力,可以帮助用户解决更复杂的搜索、调研问题。 Lindorm作为一站式数据平台,覆盖数据处理全链路,集成了离线批处理、在线分析、AI推理、融合检索(正排、倒排、全文、向量......)等多项服务,支持Kimi快速构建AI搜索基础设施,显著提升检索效果,并有效应对业务快速发展带来的数据规模膨胀和成本增长。
|
机器学习/深度学习 物联网 大数据
|
存储 监控 安全
奇安信基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志安全分析系统,查询平均提速 700%
Apache Doris 助力奇安信建设全新日志存储分析平台,提升系统安全性与快速响应能力!
676 0
奇安信基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志安全分析系统,查询平均提速 700%
|
存储 人工智能 Kubernetes
深势科技基于 Serverless 容器为科研人员打造高效的开发平台
深势科技基于 Serverless 容器为科研人员打造高效的开发平台
|
存储 数据可视化 物联网
基于阿里云HiTSDB搭建工业物联网平台实践
基于阿里云全面的物联网、云计算与大数据技术搭建云端的企业能源管理物联网平台实现能耗数据采集、统计分析、平衡调度、节能优化等全面的能源管控协同平台。是企业生产运行保障的利器,也是大量企业实现云上管理的实践案例。
7257 71
|
存储 监控 安全
阿里云新推出 HiTSDB + IoT套件 物联网设备上云步入快车道
阿里云针对物联网企业遇到的5大痛点,提供了HiTSDB +IoT 套件的一体化解决方案,能够支持物联设备快速上云,高效设备管理,数据安全,低成本海量数据存储,实时掌握设备状态,快速发现数据价值等,可以让更多物联网企业快速拥抱云计算。
17528 108
|
Java 开发工具
SpringBoot2.x基础篇:配置文件的加载顺序以及优先级覆盖
`SpringBoot`约定了配置文件,默认为`application.properties`,通过该文件可以修改很多默认的配置,当然我们还可以在该配置文件内添加自定义的配置,该文件通过`key=value`的形式进行配置。
|
存储 JavaScript 前端开发
Node.js 与 TypeScript
Node.js 与 TypeScript

热门文章

最新文章