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