机器学习异常检测故障排除和常见问题解答
编辑机器学习异常检测故障排除和常见问题解答
编辑使用本节中的信息来排除常见问题,并找到常见问题的答案。
如何重启失败的异常检测任务
编辑如果异常检测任务失败,请尝试按照以下步骤重启任务。如果重启后的任务按预期运行,则导致任务失败的问题是暂时的,无需进一步调查。如果任务在重启后很快失败,则问题是持续存在的,需要进一步调查。在这种情况下,请通过查看 Kibana 中任务管理面板上的任务统计信息,找出失败任务在哪个节点上运行。然后获取该节点的日志,并查找异常和错误,其中异常检测任务的 ID 位于消息中,以便更好地了解问题。
如果异常检测任务失败,请执行以下操作以从 failed
状态恢复
-
使用停止数据馈送 API,并将
force
参数设置为true
,强制停止相应的数据馈送。例如,以下请求强制停止my_datafeed
数据馈送。POST _ml/datafeeds/my_datafeed/_stop { "force": "true" }
-
使用关闭异常检测任务 API,并将
force
参数设置为true
,强制关闭异常检测任务。例如,以下请求强制关闭my_job
异常检测任务POST _ml/anomaly_detectors/my_job/_close?force=true
- 在 Kibana 中的任务管理面板上重启异常检测任务。
异常检测使用了哪些机器学习方法?
编辑有关详细信息,请参阅 Thomas Veasey 和 Stephen Dodson 的论文应用性能监控数据中的异常检测,以及我们在Elastic 机器学习背后的数学原理和机器学习和时间序列分析的统计方法上的网络研讨会。
C++ 代码中引用的其他论文
模型使用的输入特征是什么?
编辑所有输入特征均由用户指定,例如,使用各种统计函数(例如,对感兴趣数据的计数或平均值)。
模型使用的数据是否仅包含客户的数据?
编辑是。仅使用异常检测任务配置中指定的数据进行检测。
模型输出分数代表什么?它是如何生成和校准的?
编辑集成模型生成一个概率值,然后将其映射到 0 到 100 之间的异常严重性分数。观察到的数据概率越低,严重性分数越高。有关详细信息,请参阅此高级概念文档。校准(也称为归一化)在两个级别上进行
- 在同一指标/分区内,分数会在由
renormalization_window_days
参数指定的时间窗口内“及时地”重新归一化。这就是为什么例如同时存在record_score
和initial_record_score
的原因。 - 在多个分区上,分数将按照此博客文章中所述重新归一化。
模型是静态的还是定期更新的?
编辑它是一个在线模型,并不断更新。模型的旧部分会根据参数 model_prune_window
(通常为 30 天)进行修剪。
是否监控模型的性能?
编辑有一组基准来监控异常检测算法的性能,并确保在持续开发和改进方法时不会发生任何回归。它们被称为“数据场景”,由 3 部分组成
- 一个数据集(存储为 Elasticsearch 快照),
- 一个机器学习配置(异常检测、{dfanalysis}、转换或推理),
- 一组任意静态断言(存储桶计数、异常分数、准确度值等)。
性能指标是从每个场景运行中收集的,它们会持久化到 Elastic Cloud 集群中。然后,此信息用于跟踪不同构建版本随时间的性能,主要用于检测性能(包括结果质量和计算时间)的任何回归。
在客户方面,情况有所不同。没有传统方法来监控模型性能,因为它不受监督。通常,模型输出的运营化包括以下一个或多个步骤
- 根据一定的异常分数,为影响因素、存储桶或记录创建警报。
- 使用预测功能来预测未来感兴趣的指标的发展。
- 使用一个或多个异常检测任务的组合来识别重要的异常影响因素。
如何衡量无监督机器学习模型的准确性?
编辑对于给定时间序列中的每个记录,异常检测模型提供一个异常严重性分数、95% 置信区间和一个实际值。此数据存储在一个索引中,可以使用 Get Records API 检索。有了这些信息,您可以使用标准度量来评估预测准确性、区间校准等。Elasticsearch 聚合可用于计算这些统计信息。
异常检测的目的是实现发生异常时段的最佳排名。评估此操作的实用方法是跟踪实际事件,并查看它们与异常检测的预测的相关性如何。
异常检测模型会遇到模型漂移吗?
编辑Elasticsearch 的异常检测模型会不断学习并适应时间序列的变化。这些变化可以采取缓慢漂移和突然跳跃的形式。因此,我们非常注意管理对不断变化的数据特征的适应。在拟合异常时段(过度拟合)和不学习新的正常行为之间总是存在微妙的权衡。以下是 Elastic 用于管理这种权衡的主要方法
- 根据预测中的偏差以及误差分布和误差分布矩的时刻来学习最佳衰减率。
- 允许周期性模式中存在连续的小漂移。这是通过在最后一次迭代中相对于小的有界时间偏移量,不断最小化平均预测误差来实现的。
- 如果预测在很长一段时间内明显错误,则该算法会测试时间序列是否发生了突然变化。假设检验用于测试不同类型的变化,例如值的缩放、值的偏移以及周期性模式(例如夏令时)中的较大时间偏移。
- 在各种长度的时间窗口上运行连续的假设检验,以测试是否存在新的或已更改的周期性模式的显著证据,如果拒绝未更改特征的原假设,则更新模型。
- 累积日历天的误差统计信息,并不断测试是否需要从模型中添加或删除预测日历特征。
异常检测任务的最小数据量是多少?
编辑Elastic 机器学习需要最少的数据量才能为异常检测构建有效的模型。
- 对于采样指标(例如
mean
、min
、max
和median
),最小数据量为八个非空存储桶跨度或两个小时,以较大者为准。 - 对于所有其他非零/空指标和基于计数的数量,它是四个非空存储桶跨度或两个小时,以较大者为准。
- 对于
count
和sum
函数,空存储桶很重要,因此它与采样指标相同 - 八个存储桶或两个小时。 - 对于
rare
函数,通常约为 20 个存储桶跨度。对于人群模型,它可以更快,但这取决于每个存储桶中交互的人数。
经验法则
- 周期性数据超过三周或非周期性数据几百个存储桶
- 至少与您要预测的数据量一样多的数据
是否有任何检查或流程来确保数据完整性?
编辑Elastic 机器学习算法被编程为处理缺失和嘈杂的数据,并使用基于学习到的统计属性的去噪和数据信誉技术。