统计技术
Analysis Workspace 中的异常检测使用一系列高级统计技术来确定是否应将观测到的情况视为异常。
根据报表中使用的日期粒度,特别针对每小时、每天、每周/每月异常检测,使用了 3 个不同的统计技术。下文概述了每种统计技术。
针对每天粒度的异常检测
对于每天粒度报表,算法考虑了多种重要因素以尽可能提供最精确的结果。首先,算法根据算法从两类模型(基于时间序列的模型或异常值检测模型(称为功能分段))中选择的可用数据确定要应用的模型类型。
时间序列模型选择基于。 具体而言,算法会尝试以下组合:
- 础狈础(加性误差、无趋势、加性季节性)
- 础础础(加性误差、加性趋势、加性季节性)
- 乘性误差,无趋势,乘性季节性
- 乘性误差、无趋势、加性季节性
- 础础狈(加性误差、加性趋势、无季节性)
该算法通过选择具有最佳平均绝对百分比误差(MAPE)的组合来检验每种组合的适用性。 但是,如果最佳时间序列模型的MAPE大于15%,则应用函数分段。 通常,具有高重复度的数据(例如,一周中的周或一个月中的月)最适合时间序列模型。
在选择模型后,算法将根据节假日和年同比季节性调整结果。 对于假日,算法会检查在报表日期范围内是否存在以下任何假日:
- 阵亡将士
- 7 月 4 日
- 感恩节
- 黑色星期五
- 网购星期一
- 12月24-26日
- 1 月 1 日
- 12 月 31 日
这些假日的选择基于对许多客户数据点的广泛统计分析,旨在确定对客户最高值趋势影响最大的假日。虽然此列表当然不是对所有客户或业务周期都详尽无遗,但应用假日可以显着提升几乎所有客户数据集的整体算法性能。
选择了模型并确定了报告日期范围内的假日后,算法即会按照以下方式继续进行下一步:
-
构建异常参考期。 此异常参考期最多包含在报告日期范围之前的35天,以及1年前的匹配日期范围。 必要时考虑闰日,并包含上一年不同日历日期可能出现的任何适用假日。
-
根据最新数据测试当前时间段(不包括上一年)的假日是否存在异常。
-
如果当前日期范围内的假日存在异常,则基于上一年的假日(考虑前后 2 天),调整当前假日的预期值和置信区间。当前假日的更正基于以下各项的最低平均绝对百分比误差:
- 附加效应
- 乘法效果
- 驰辞驰差异
请注意,下面的示例明显提高了圣诞节和元旦的性能:
针对每小时粒度的异常分析
每小时数据依赖的时间序列算法与每日粒度算法相同。 但是,它严重依赖于两种趋势模式:24小时周期以及周末/工作日周期。 为了捕捉这两个季节性影响,每小时算法使用上述相同方法,构建两个单独的模型,分别用于周末和工作日。
每小时趋势的培训时段依赖于336小时的回溯时段。
针对每周和每月粒度的异常检测
每周和每月趋势的表现方式与以每日或每小时粒度计算的每周或每日趋势不同,因此需要使用单独的算法。 对于每周和每月,两步异常检测方法称为广义极端学生化偏差(GESD)测试。 该测试考虑最大期望异常数并结合调整的盒形图方法(发现异常的非参数方法)来确定最大异常数。 这两个步骤为:
- 调整盒形图函数:此函数确定给定输入数据的最大异常数。
- 骋贰厂顿函数:使用步骤1的输出应用于输入数据。
然后,假日和按年季节性异常检测步骤会从今年的数据中减去去年的数据。 然后使用上述两步流程再次遍历数据,以验证异常的发生是否存在季节性。 上述每种日期粒度均使用 15 个回顾周期作为参照,其中包含选择的报告日期范围(15 个月或 15 周)及 1 年前的相应日期范围。