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

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


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


五、异常检测限制与注意事项

 

l 机器学习使用流式 SIMD 扩展(SSE)4.2指令,因此仅适用于 CPU 支持 SSE4.2 的机器。如果在旧硬件上运行 Elasticsearch,则必须通过设置 xpack.ml.enabled 为 false,禁用机器学习。


l 分类非结构化数据使用的词典仅支持默认英文单词词典。


l 如果使用 Kibana,则需要设置浏览器中启用弹出窗口,保证 Kibana 正常使用。


l 某些场景下 Kibana 对异常检测结果绘图会出现异常。由于分类、time_of_day 函数或time_of_week 函数获取的结果不能很好的展示为时序图表,对于使用脚本字段的检测器无法快速搜索原始源数据,因为被脚本进行了某种程度的转换,所以 Kibana 不会显示 Anomaly Explorer 图表。


l 设置 datafeed 时如果指定结束日期,则在 dataFeed 结束后关闭 job(避免大量打开一次性 job),否则 job 将处于 open 状态(避免对 job 的反复重新打开)。


l 如果在 Kibana 中创建 job 则必须使用 dataFeed,如果需要分析的数据不在 ES 中,则无法使用 dataFeed,可以通过机器学习 API 创建 job 并将批量数据直接发送到 job,如果使用 Post data API 将数据发送到 job,该数据必须是 JSON 格式。


l 使用 missing_field_count 计数时,可能会产生一定的误差。


l terms 聚合默认返回前十个 buckets(可以通过 size 参数修改),如果是将预聚合的数据发送到 job,则需要保证 size 配置正确。


l 索引中字段名若为 by、coun、over,则不能在 job 的 by_field_name 或 over_field_name 配置中使用。


l 在使用 Single metric job 或 Multi metric job 时,ES 会在某些场景中使用预聚合,此时会因为精度问题和不使用预聚合的分析同一数据的脚本产生不完全一样的结果。


l 使用 Single metric job 时会默认启用 model_plot_config 配置项(开启模型绘图),此配置会给 ES 增加大量开销,如果分析数据过大,需要手动禁用该配置。

l ES 开启安全功能后,datafeed 会受到权限影响。在 datafeed 创建、task 进行中修改角色,则 datafeed 会以角色关联的新权限运行。如果在 datafeed 创建、更新完成后调整用户角色,则 datafeed 将以与原始角色关联的权限运行。


l ES 集群升级时必须关闭机器学习 job。


l Rollup 控制的 index 以及 Frozen indices,无法被使用在机器学习 job 和 datafeed 中。


l 机器学习相关 object 不属于 Kibana 的 spaces。如果在 Kibana 中创建了 space,隔离了 index_patterns, dashboards, visualizations 等 object,当机器学习 job 使用了这些 object 时,在后续更改 space 时可能出现异常。


l 获取 Job、datafeed 的 API 具有一定的限制,均最多返回 10000 条。


l 不支持时间设置为纳秒级(date_nanos)的字段作为机器学习 job 的 time_field 属性。


l 机器学习的预测能力存在一定限制:


1.正常情况下预测和机器学习分析会同时进行,机器学习分析不会在生成预测时停止。如果内存不充足则预测会对异常检测 job 产生影响,所以在内存不充足情况下不会进行预测。

2.创建预测时,异常检测 job 必须处于 open 状态。

3.没有足够的数据,生成的预测通常准确度不高。


六、优化

 

l 集群节点需要足够的内存,异常检测 job 会在单个节点上运行,需要足够的资源将其模型保存在内存中。当一个 job 打开时,会被放置在当时可用内存最多的节点上。如果是大量小内存

l job 的场景,可以考虑拓展节点数。

l 单个大型 job,考虑使用单独的结果索引。默认情况下 job 生成的结果会存入同一个 index 中。

l 在 Kibana 中会默认启用模型图,单个大型 job 场景下考虑禁用模型图。

POST _ml/anomaly_detectors/population_v2_detector/_update
{
  "model_plot_config": {
    "enabled": true
  }
}

 l Bucket Span 调优


l 时间窗口设置的越大,bucket span 越大,单次输送 ML job 的数据越多,精度越小(曲线越平滑),可能会忽略某些异常点。丢失很多细节信息,可能导致给 ML 输送的数据量不足。


l 时间窗口设置的越小,bucket span 越小,单次输送 ML job 的数据越少,精度越大,噪声越多,可能会放大某些小的异常点。桶大小过小,会导致小时间段内数据频繁变化,影响模型的学习。


l 所以,桶的大小要根据业务场景,不断地调整大小,找到合适的值。


l ES ML 提供了一键预估(Estimate bucket span) Bucket 大小,这个功能并不是很智能,仍需要自己不断调试。


l 给每个 job 设置模型内存限制,通过 model_memory_limit 参数设定,通过 Kibana 创建时会默认自动生成一个预估值,如果需要修改,则需要关闭 job 修改该限制。


 l 优化归一化窗口设置,当新异常的得分远高于过去的任何异常时,异常得分会根据新数据在 0 到 100 的范围内进行调整。这意味着在结果索引中重写大量文档。默认情况下,对过去 30 天或 100 个存储桶跨度的结果进行重新归一化。


l 当大规模 job 启用时,设置 renormalization_window_days 一个较低的值,可以减少性能压力。

 

创作人简介:

张妙成,ES PAAS 平台开发,云计算技术爱好者。

博客:https://blog.csdn.net/qq_33999844?spm=1001.2014.3001.5343

 

相关实践学习
使用阿里云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(1)
带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(1)
142 0
|
机器学习/深度学习 运维 安全
带你读《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)
|
机器学习/深度学习 运维 数据可视化
带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(4)
带你读《Elastic Stack 实战手册》之59:——3.5.16.3.Anomaly detection(4)
113 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
|
存储 缓存 安全
带你读《Elastic Stack 实战手册》之31:——3.4.2.16.Painless scripting(上)
带你读《Elastic Stack 实战手册》之31:——3.4.2.16.Painless scripting(上)
110 0
带你读《Elastic Stack 实战手册》之31:——3.4.2.16.Painless scripting(中)
带你读《Elastic Stack 实战手册》之31:——3.4.2.16.Painless scripting(中)
|
存储 API 项目管理
带你读《Elastic Stack 实战手册》之31:——3.4.2.16.Painless scripting(下)
带你读《Elastic Stack 实战手册》之31:——3.4.2.16.Painless scripting(下)
|
存储 监控 数据挖掘
带你读《Elastic Stack 实战手册》之54:——3.5.13.Transform (1)
带你读《Elastic Stack 实战手册》之54:——3.5.13.Transform (1)
141 0

热门文章

最新文章