想象你是一个河边巡警,每天负责观测一条河流的水位。大多数时候,河水平稳地流动;但偶尔,水位会突然暴涨,或者河床骤变导致水流改道。你的任务,是在第一时间发现这些“不对劲”——这就是时序异常点检测。 如果把“时间序列”看作一条河流,每个时间点的观测值就是某刻的水位或流速。正常时,河水平稳流动;异常时,水位暴涨、骤降或趋势断裂。IQR(四分位距)像用一把“全局警戒尺”丈量水位是否越界;STL 分解像把河水拆成“季节涨落 + 长期趋势 + 剩余杂质”,从杂质中嗅到局部异常;Prophet 突变点检测则像盯着河床本身,发现趋势突然改道的瞬间。这三者各有侧重,共同构成了一套完整的异常预警体系。

岗位关联

对 AI 从业者而言,异常检测是数据质量的守门员。掌握这三种方法的适用边界,能让你在构建监控系统、清洗训练数据、识别业务突变时,少走弯路,直击本质。

目录
  1. 可视化演示
  2. 异常检测概览
  3. IQR 原理
  4. STL分解步骤
  5. Prophet突变检测
  6. 方法对比与选型
  7. 工程实践优化
  8. 总结与回顾
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示IQR统计边界检测全局离群点、STL季节分解残差检测局部异常及Prophet趋势变点检测,揭示三种时序异常检测核心方法。

本节配有交互动效(进入视口后自动加载,约 3KB)。

IQR统计异常检测 时间序列:含趋势、季节性和噪声的数据序列 IQR边界:Q1-1.5×IQR与Q3+1.5×IQR构成检测区间 异常点:超出IQR边界的点被标记为离群值 IQR = Q3 - Q1; bounds = [Q1-1.5·IQR, Q3+1.5·IQR] IQR方法适用于全局离群值检测

异常检测概览

在河边站久了,你会发现“水位正常”并不是一个固定的值,而是一个“该平稳时平稳、该涨潮时涨潮”的节奏。异常点检测做的,就是捕捉那些打破节奏的瞬间:凌晨三点的水位不应暴跌、双十一前后的销量却可能暴涨。时序异常检测,本质上是给数据流装一个“异常预警雷达”。

从视角上看,异常分为两类。一类是全局异常——与整个序列相比都显得离谱的观测值,比如平稳序列中突然出现一个尖峰;另一类是局部异常——与周围邻居相比突然偏离,但在全局看可能仍在历史范围内,比如每天上午十点都有小高峰,唯独今天上午十点消失了。针对这两类异常,IQR 擅长前者,STL 残差分析擅长后者,而 Prophet 专注第三类:趋势突变。

回到河流场景:三种方法不是互相竞争的三个巡警,而是从不同角度盯防的哨兵。IQR 盯全局水面异常,STL 盯季节节奏紊乱后的“残渣”,Prophet 盯河床走向的突变。理解这一点,后面的细节就顺理成章了。

异常点定义:xt∉正常区间,其中正常区间由检测方法动态估计\displaystyle\text{异常点定义:}\quad x_t \notin \text{正常区间}\quad \text{,其中正常区间由检测方法动态估计}
正常区间不是一个固定值,而是随时间和数据形态变化的“警戒带”。IQR 用上下界框出全局警戒带,STL 用残差动态波动框出局部警戒带,Prophet 用趋势变化率标记突变点。
  1. 异常点x_t 是时间点 t 的观测值,检测的核心就是判断它是否落在“正常区间”之外。
    xt\displaystyle x_t
  2. 正常区间由方法估计出的一个范围,落入区间判为正常,跳出区间判为异常。
    正常区间=中心±阈值×离散度\displaystyle \text{正常区间} = \text{中心} \pm \text{阈值}\times \text{离散度}

IQR 原理

某天,你决定给这条河画两条警戒线:一条在上游,一条在下游,水位越线就算异常。但怎么画才科学?最朴素的思路是看“大多数日子水位在哪”。把历史上所有水位观测值从小到大排成一队,位置在 25% 处的叫下四分位数 Q1,位置在 75% 处的叫上四分位数 Q3,中间夹着的那 50% 数据就是“大多数日子”的水位区间。

IQR(Interquartile Range,四分位距)定义为 Q3 与 Q1 的差,描述中间一半数据的离散程度。检测规则很简单:若某个观测值小于 Q1 − 1.5×IQR,或大于 Q3 + 1.5×IQR,则判为异常。这个 1.5 是经验常数,它把警戒带设定在“中间 50% 数据跨度”之外,对正态分布数据而言,约 99.3% 的正常点会落在带内。

为什么不用“均值 ± 3 倍标准差”?因为均值和标准差会被极端值拉偏——就像河道里漂来一棵大树,你拿它当参照物去画警戒线,线就画歪了。IQR 用排队的“位置”而非“数值大小”来定界,天然稳健。但它也有盲区:它只对全局离群敏感,若数据有季节波动,IQR 可能把旺季的正常高水位误判成异常。这条警戒线,适合快速全局筛查,却不适合有节奏的河流。

IQR=Q3−Q1⇒正常区间=[Q1−1.5×IQR,  Q3+1.5×IQR]\displaystyle\text{IQR} = Q_3 - Q_1\quad\Rightarrow\quad\text{正常区间} = [Q_1 - 1.5\times \text{IQR},\; Q_3 + 1.5\times \text{IQR}]
IQR 用分位数而非均值来构建阈值,因此不怕个别极端值的干扰——即便数据里混入几个大尖峰,Q1 和 Q3 依然稳如泰山。
  1. 四分位距Q3 与 Q1 的差,反映数据中间 50% 的离散程度,这是 IQR 检测的基础尺度。
    IQR=Q3−Q1\displaystyle \text{IQR} = Q_3 - Q_1
  2. 下界正常区间的下限,低于它的观测值被判为异常。
    Q1−1.5×IQR\displaystyle Q_1 - 1.5\times \text{IQR}
  3. 上界正常区间的上限,高于它的观测值被判为异常。
    Q3+1.5×IQR\displaystyle Q_3 + 1.5\times \text{IQR}

STL分解步骤

河流的脾气是有周期的:春天涨水,秋天落水。若你不顾这个节奏,把每年春季的正常高水位当成异常,就会闹笑话。正确做法是先把河水拆成三部分:趋势(长期演变的走向)、季节(固定周期的涨落)、残差(扣除前两者后剩下的小波动)。真正值得怀疑的,是残差里突然出现的尖峰——那是“节奏之外的杂质”。

STL(Seasonal-Trend decomposition using LOESS,局部加权回归的季节趋势分解)正是这样一台“拆解机”。它用局部加权回归(LOESS)将序列逐段平滑,分别提取趋势项和季节项,再用原始值减去两者得到残差项。过程如下:

检测局部异常时,通常对残差序列再套一层阈值:用滑动窗口估计残差的局部均值与标准差,残差偏离局部中心超过设定倍数即报警。STL 的优点是能适应强周期性;缺点是窗口长度和季节周期需要人工设定,选错了,就像把弹簧秤的刻度看反了,测出的全是假异常。

\displaystylex_t = T_t + S_t + R_t\quad\Rightarrow\quadR_t = x_t - T_t - S_t
STL 的核心思想是“先剔除可解释的规律,剩下的残差就是异常信号”。残差越大,说明该点越违背周期性规律。
  1. 原始观测t 时刻的观测值由三部分叠加而成。
    xt\displaystyle x_t
  2. 趋势项反映长期涨跌的平滑曲线。
    Tt\displaystyle T_t
  3. 季节项反映固定周期(日、周、年)的波动模式。
    St\displaystyle S_t
  4. 残差项剔除趋势和季节后剩下的随机波动,是异常检测的探针。
    Rt=xt−Tt−St\displaystyle R_t = x_t - T_t - S_t

Prophet突变检测

有一类异常与水位无关,而是河床本身改变了走向——比如上游建坝,从此水量规律彻底变化。这种趋势突变是 IQR 和 STL 都难以捕捉的,因为它们假设“规律不变,只是个别点出错”。而 Prophet 这个“河床测绘员”专门盯着河流的走向,用分段线性模型把时间轴切成一段段,每段的斜率就是当时的趋势,斜率发生显著变化的位置就是突变点。

Prophet 通常用来自动识别趋势变点,公式中分段线性趋势项可以写成:

用 Prophet 做异常检测时,常见做法是:拟合训练数据得到趋势预测,若新观测值显著偏离预测区间(例如超过 99% 置信区间),则标记为异常。Prophet 对局部的孤立尖峰并不敏感,这反而让它和 IQR、STL 形成互补,适合监控增长性指标(如用户量、成交量)中的结构性变化。

\displaystyleg(t) = k\cdot t + m\quad \text{,其中斜率 } k \text{ 在突变点处跳变}
趋势变点是“河床突然抬升或塌陷”的位置。Prophet 用稀疏先验自动选择哪些位置适合放变点,避免把噪声当趋势。
  1. 线性趋势段在无突变的时间段内,趋势近似为一条直线。
    g(t)=k⋅t+m\displaystyle g(t) = k\cdot t + m
  2. 斜率跳变在突变点前后,斜率发生变化,反映河流流向的改变。
    Δk=k后−k前\displaystyle \Delta k = k_{\text{后}} - k_{\text{前}}

方法对比与选型

同一个异常场景,选错方法就像用温度计去量水位,工具虽好却不对路。下表是三位哨兵的“分工地图”。IQR 适用全局离群、平稳序列,计算成本最低,但无法应对季节规律;STL 适应带周期、带趋势的序列,能定位局部异常,但需要人工设定周期;Prophet 擅长长趋势序列的突变点检测,自动识别趋势变点,稳健但需要足够的数据量。三者各有适用场景,不是互斥而是互补的。

工程上推荐组合检测策略:先用 IQR 或 STL 做实时快速筛查,过滤粗异常;再用 Prophet 定期(如每日)做趋势突变复核。这就像配齐了“警棍 + 望远镜 + 地图”——快速响应、周期扫描、宏观判断各司其职。

回到巡河比喻:如果只关心水位突然冲破警戒线,IQR 足够;如果河水有潮汐规律,STL 更合适;如果河床改道才是危险信号,Prophet 必不可少。成熟的监测系统不会只用一把尺子,而是让三种方法各守一摊,再汇总报警。

决策规则:{全局平稳⇒IQR周期未知⇒STL趋势多变⇒Prophet\displaystyle\text{决策规则:}\quad\begin{cases}\text{全局平稳} \Rightarrow \text{IQR} \\\text{周期未知} \Rightarrow \text{STL} \\\text{趋势多变} \Rightarrow \text{Prophet}\end{cases}
选型决策的本质是匹配“数据形态”与“方法假设”。先观察序列是平稳、周期还是趋势驱动,再决定用哪把尺子。
  1. 全局平稳数据围绕固定水平波动,用 IQR 快速筛查。
    IQR\displaystyle \text{IQR}
  2. 周期未知有季节性但周期可设定,用 STL 分解残差。
    STL\displaystyle \text{STL}
  3. 趋势多变存在持续增长或突变,用 Prophet 捕捉结构变化。
    Prophet\displaystyle \text{Prophet}

工程实践优化

理论再漂亮,落地才是真功夫。实战中,工程师面临三个主要挑战:滑窗计算细节、阈值调参方法、冷启动应对。先看不滑动窗口,若用全量数据计算 IQR 或 STL,每次新数据到来都要重算一遍历史窗口,耗时且响应慢。工程上通常维护一个长度固定的滑动窗口(如最近 7 天),窗口内计算阈值,滑出窗口的数据逐步遗忘——就像巡警只关心最近一段河面,不会追溯十年前的水位。

阈值调参则要讲究策略。k=1.5 是经验起点,不代表最优。调参用“报警率反推法”:在历史数据上测试不同 k 值,使报警率符合业务预期(如每周 3~5 次),而不是追求绝对零误报。异常检测中,误报和漏报是跷跷板的两端,参数就是支点。

最后是冷启动问题:新业务上线,历史数据不足,IQR 和 STL 都算不出可靠的基线。此时先用业务专家给出的先验阈值兜底,等积累足够数据后再切换为统计方法。

工程细节决定了检测系统的实用价值。滑窗让计算跟上数据流速,调参让报警贴合业务节奏,冷启动让新系统先“上岗再学习”。这就像给巡警配了块智能手表——既能实时刷新水位线,也能在没地图时先用经验撑一阵。

\displaystyle\text{滑窗阈值:}\quad\hat{\mu}_t = \frac{1}{L}\sum_{i=t-L+1}^{t} x_i\quad\Rightarrow\quadx_t \text{ 异常,当 } |x_t - \hat{\mu}_t| > \alpha \cdot \text{std}_t
滑窗策略的核心是“用最近的 L 个点估计当前正常水位”,让阈值随数据演化而自适应。参数 L 和 α 是工程调参的主战场。
  1. 窗口均值用最近 L 个观测值估计当前中心。
    μ^t=1L∑i=t−L+1txi\displaystyle \hat{\mu}_t = \frac{1}{L}\sum_{i=t-L+1}^{t} x_i
  2. 判定条件当前值偏离中心超过 α 倍标准差则报警。
    ∣xt−μ^t∣>α⋅stdt\displaystyle |x_t - \hat{\mu}_t| > \alpha \cdot \text{std}_t

总结与回顾

三位哨兵终于聚齐。IQR 用分位数画出全局警戒带,像站在高处的观察哨,一眼看出谁越界;STL 把河水拆成趋势、季节与残差,像潜水员在残渣里找异常颗粒;Prophet 盯住河床走向,像地质学家预判山体滑坡。它们互补彼此的盲区:IQR 看不懂周期,STL 接不住突变,Prophet 不擅长快速全局筛查——合在一起,才是一张完整的异常感知网。

选型时记住一条决策链:先看数据形态(平稳、周期、趋势),再选主方法;再根据报警率反推阈值;上线初期用先验规则兜底。异常检测永远是一个“业务验证 > 统计完美”的工程。

最后,把“发现异常”当成起点而非终点。异常点背后往往是系统故障、营销活动或数据采集错误——方法帮你找到可疑对象,业务判断告诉你真相。愿每位读者都能建起自己的“哨塔”,在数据的河流中一眼发现真正的波澜。

方法论:数据形态识别→方法组合选型→阈值迭代调优→业务闭环验证\displaystyle\text{方法论:}\quad\text{数据形态识别} \rightarrow\text{方法组合选型} \rightarrow\text{阈值迭代调优} \rightarrow\text{业务闭环验证}
方法论的价值在于提供可复用的路径,而不是万能钥匙。每一种方法都是工具,理解工具的边界,才能真正用好工具。
  1. 形态识别先判断序列是平稳、周期还是趋势驱动。
    平稳∣周期∣趋势\displaystyle \text{平稳} \mid \text{周期} \mid \text{趋势}
  2. 方法组合按形态匹配 IQR、STL、Prophet。
    IQR∪STL∪Prophet\displaystyle \text{IQR} \cup \text{STL} \cup \text{Prophet}
  3. 迭代调优根据误报率反馈调整参数。
    α←业务反馈\displaystyle \alpha \leftarrow \text{业务反馈}

AI 应用场景

工业设备振动监测

阶段:数据预处理与质量监控

解决的问题:传统方式依赖人工定期巡检传感器数据,发现异常时设备往往已损坏。IQR 与 STL 组合可以每秒钟处理一批振动数据,在全局上卡住离群高振幅,在局部上捕捉残差尖峰,提前预警轴承磨损。

具体案例:某风电场的齿轮箱振动传感器,运行平稳时振幅在 0.1~0.3 之间,某天凌晨振幅突增到 0.8,IQR 全局检测立即报警,维护团队发现是齿轮裂纹,避免了整机报废。

电商销量异常监控

阶段:业务指标监控与归因

解决的问题:运营团队最怕“流量异常”发现太晚。Prophet 拟合近 90 天销量趋势与周季节效应,每日将实际销量与预测区间对比,把“促销带来的真实上涨”与“数据埋点故障导致的骤降”区分开。

具体案例:某电商平台大促后第三天,订单量突然下跌 40%,Prophet 检测到趋势变点并标红,排查后确认是支付回调接口故障,修复后订单量恢复。

金融交易风控

阶段:实时风控与反欺诈

解决的问题:贷款申请量、转账金额序列中的异常往往是欺诈的前兆。IQR 负责对单日交易金额做全局离群筛查,STL 剥离工作日/周末周期后检测残差异常,二者组合可在秒级识别盗刷模式。

具体案例:某支付平台在凌晨 2 点检测到单笔转账金额超出近 30 天 IQR 上界的 5 倍,系统自动拦截并触发二次验证,确认是黑产盗号。

Python 演示

python47 行
import numpy as npimport pandas as pdfrom scipy.stats import iqrfrom statsmodels.tsa.seasonal import STLfrom prophet import Prophet def detect_iqr_outliers(series, k=1.5):    Q1 = series.quantile(0.25)    Q3 = series.quantile(0.75)    lower = Q1 - k * iqr(series)    upper = Q3 + k * iqr(series)    return series[(series < lower) | (series > upper)].index.tolist() def detect_stl_outliers(series, period=24, lof=3.0):    res = STL(series, period=period, robust=True).fit()    resid = res.resid    mu, std = resid.mean(), resid.std()    return resid[abs(resid - mu) > lof * std].index.tolist() def detect_prophet_change(series, n_changepoints=25, stdev=2.0):    df = series.rename('y').reset_index()    df.columns = ['ds', 'y']    model = Prophet(n_changepoints=n_changepoints,                    changepoint_prior_scale=stdev,                    yearly_seasonality=False, weekly_seasonality=False)    model.fit(df)    fc = model.predict(df)    ci = fc[['yhat_lower', 'yhat_upper']]    idx = series[(series < ci['yhat_lower'].values) |                 (series > ci['yhat_upper'].values)].index.tolist()    return idx def main():    t = np.arange(0, 24 * 30)    trend = 0.02 * t    season = 3 * np.sin(2 * np.pi * t / 24)    noise = np.random.default_rng(1).normal(0, 0.4, t.size)    s = pd.Series(trend + season + noise, index=pd.date_range('2024-01-01', periods=t.size, freq='h'))    s.iloc[100] += 6    s.iloc[500] -= 7    s.iloc[650] += 5    print('IQR outliers :', detect_iqr_outliers(s))    print('STL outliers :', detect_stl_outliers(s, period=24))    print('Prophet chpts:', detect_prophet_change(s)) if __name__ == '__main__':    main()
目的:用同一份合成的“带趋势+周期+尖峰”时间序列,分别跑 IQR、STL 残差和 Prophet 变点检测,直观对比三种方法的输出差异。
  1. from scipy.stats import iqr直接调用 IQR 函数,避免手写分位数计算。
  2. STL(series, period=period, robust=True).fit()稳健 STL 分解,robust=True 减小个别尖峰对趋势拟合的影响。
  3. model.predict(df)Prophet 输出每时间点的预测区间,用真实值与区间对比来定位异常。
  4. s.iloc[100] += 6人为植入 3 个尖峰,用来验证检测器能否抓到全局离群。

常见误区

误区“数据里只要出现离群点,用 IQR 就能检测出来。” 我把所有数据点排个队,找出 Q1 和 Q3,加上 1.5 倍四分位距一框,异常肯定跑不掉。

正解IQR 只擅长检测全局离群值。如果数据本身有强季节性,比如每天中午温度本来就高,IQR 会把所有中午的高温全部误判为异常。需要先用 STL 剔除趋势和季节成分,再对残差做检测。

为何常见:因为 IQR 实现简单、无需调参,初学者容易把它当万能工具,忽略了它“假设数据平稳”的前提。

误区“STL 能自动分解出趋势、季节、残差,所以我不需要告诉它周期是多少。” 我把数据喂进去,它自己会找出规律。

正解STL 的 period 参数是必须显式指定的,比如小时级数据传 24、周级数据传 7。周期给错,分解出的“季节项”就会把真正的异常吸收掉,导致残差里什么也检测不出来。

为何常见:很多库的 API 看起来“一键完成”,使用者容易忽略周期设置这一关键前置条件。

误区“Prophet 是 Facebook 出品,功能强大,我把数据丢进去就能得到所有异常点。” 它的突变点检测肯定比我手写的阈值强。

正解Prophet 的强项是趋势突变点和广义预测区间外异常,对孤立尖峰并不敏感,甚至会把尖峰当作噪声平滑掉。检测局部尖峰仍需 IQR/STL 这类方案。

为何常见:Prophet 自带漂亮的预测图,直观的变点展示让用户误以为它是一种通用异常检测器。

误区“1.5 是教科书标准,所有数据都用它。” 我从来不改 k 值,反正有据可查。

正解1.5 是经验默认值,业务数据分布千差万别。需要根据历史误报率调整,比如正常数据波动大时调到 2.5,需要严格监控时调到 1.0。调参没有银弹,要“让数据说话”。

为何常见:教材只讲原理,不讲调参,学习者就把默认值当成了标准答案。

误区“我只需要选择表现最好的方法,其他方法用不上。” 每种方法都试一遍,哪个效果好就用哪个。

正解三类方法覆盖的信息尺度不同,全局、局部、趋势各有所长。工程中通常组合使用——IQR 实时筛选、STL 周期残差、Prophet 趋势复核,才能形成闭环。

为何常见:初学阶段习惯“单模型思维”,但真实的异常检测往往是“多哨兵协作”的系统工程。

面试题

Q1. 关于 IQR,以下说法正确的是?

单选题 · easy

  • A.IQR 对极端异常值非常敏感
  • B.IQR 是上四分位数与下四分位数之差← 正确答案
  • C.IQR 越大,正常区间越窄
  • D.IQR 只能用于正态分布数据

答案:B。IQR 定义为 Q3 − Q1,因为它只依赖分位数,所以对极端值稳健,选项 A、D 错误。IQR 越大说明数据越离散,正常区间应越宽,C 错误。

Q2. 一组数据排序后 Q1=12、Q3=30,k=1.5,则正常区间为?

单选题 · mid

  • A.[-15, 57]← 正确答案
  • B.[-3, 45]
  • C.[6, 36]
  • D.[0, 42]

答案:A。IQR = 30 − 12 = 18,下界 = 12 − 1.5×18 = −15,上界 = 30 + 1.5×18 = 57,故正常区间为 [−15, 57]。

Q3. STL 分解中,残差项的作用是?

单选题 · easy

  • A.消除季节影响
  • B.描述长期趋势
  • C.捕捉去除规律后的异常信号← 正确答案
  • D.平滑短期噪声

答案:C。STL 将序列分解为趋势、季节和残差三项。残差 = 原值 − 趋势 − 季节,是去除可解释规律后的剩余部分,用于定位局部异常,故选 C。

Q4. 某日销量序列存在明显的周周期,最适合的异常检测方法是?

单选题 · mid

  • A.IQR 全局检测
  • B.STL 残差分析← 正确答案
  • C.简单 3σ 法
  • D.均值偏移法

答案:B。STL 专门处理周期序列,先剔除周季节成分再检测残差。IQR 和 3σ 法均假设数据平稳,会将周期波动误判为异常。

Q5. Prophet 相比 IQR/STL 的特点包括?

多选题 · mid

  • A.自动识别趋势突变点← 正确答案
  • B.对孤立尖峰特别敏感
  • C.适合长趋势序列← 正确答案
  • D.无需历史数据即可启动

答案:AC。Prophet 的核心功能是自动检测趋势变点,适合长趋势序列。它对孤立尖峰不敏感,且冷启动困难,B、D 错误。

Q6. 检测系统报警频率过高,最合理的调参方向是?

单选题 · hard

  • A.减小 IQR 的 k 值
  • B.增大 IQR 的 k 值← 正确答案
  • C.减小 STL 的残差阈值倍数
  • D.缩短滑窗长度

答案:B。k 值增大,正常区间变宽,报警数减少;STL 阈值倍数增大也会减少报警。缩短滑窗反而会让阈值更敏感,导致更多误报。

Q7. 冷启动场景下,新序列无历史数据,最合适的手段是?

单选题 · hard

  • A.直接用 Prophet 自动变点
  • B.用业务先验阈值兜底← 正确答案
  • C.用全部历史数据的 IQR
  • D.循环使用 STL 分解

答案:B。冷启动无历史数据,统计方法无法估计基线。应先用业务专家给定的先验阈值做兜底,积累足够数据后再切换统计方法。

Q8. 时间序列的 STL 分解结果包含哪些成分?

多选题 · easy

  • A.趋势项← 正确答案
  • B.季节项← 正确答案
  • C.残差项← 正确答案
  • D.冲击项

答案:ABC。STL 分解输出趋势 T、季节 S、残差 R 三项,满足 x = T + S + R。没有“冲击项”这一成分,D 错误。

Q9. IQR 检测法的主要优势是?

单选题 · easy

  • A.能适应任意周期性
  • B.对极端值稳健← 正确答案
  • C.适合趋势突变检测
  • D.无需排序数据

答案:B。IQR 仅依赖分位数位置,不受极端值大小影响,因此稳健。它不适配周期和趋势突变,且必须先排序才能求分位数。

Q10. 当 Prophet 拟合出多个趋势变点时,最可能的解释是?

单选题 · hard

  • A.数据中存在多个真实的趋势拐点
  • B.模型把噪声误判为趋势变化← 正确答案
  • C.IQR 阈值设置过宽
  • D.STL 周期参数设置错误

答案:B。Prophet 变点过多通常意味着 changepoint_prior_scale 设置过大,使模型对局部噪声过度敏感,把噪声误判为趋势变化。可通过减小该参数来抑制。