时序滑窗特征

所属分类:特征工程

这个方法是做什么的

沿着一列时序数值滑动一个固定宽度的窗口,逐位置算出滚动均值、滚动标准差、滚动最小值、滚动最大值与滚动中位数五个特征。窗宽 w 在控件里设(默认 5),前 w−1 个位置窗口未满,特征记为 N/A 而不是 0。可以再拖入一个时间标签列,但它只用作明细表的标签,不参与排序也不参与计算——模块把行的先后顺序直接当成时间先后,它不会替你排序。

报告除了滚动特征的汇总统计与前 20 行明细,还回答"这些特征值不值得造"。第一张卡:ADF 单位根检验(H₀ 为存在单位根,即非平稳)与 Ljung-Box 自相关检验(H₀ 为前若干阶自相关全为 0),以及缺失剔除有没有破坏时间轴的等间隔。第二张卡:滚动均值与原序列的 Pearson r 及 Fisher z 区间、方差缩减比。第四张卡是窗宽敏感性对照——候选窗宽按当前 w 算出来(w/2、w−1、w、w+1、2w、3w,去重后截在 2 到 n−1 之间),默认 w=5 时恰好是 2/4/5/6/10/15,把 w 改成 7 就变成 3/6/7/8/14/21,各跑一遍,并排给出方差缩减比与相关系数,还有原序列逐阶自相关及其置信区间。它是报告式分析,不会往数据集里写入新的特征列。

需要准备什么数据

  • 放入[定量]时序数值列:1 个,定量变量(数值)
  • 放入[时间标签]列(可选)(可选):不限

数据要求

  • 数据表至少 20 行。
  • 单列缺失率不超过 30%。
  • 不接受取值全都一样的列(零方差列没有可分析的变异)。

以上条目由系统从该方法的校验规则直接生成,与上传数据时的实际拦截规则一致。

什么时候用它

  • 为预测模型造局部趋势与局部波动特征
  • 想看清一条噪声很大的序列的走势,同时保留波动幅度的信息
  • 需要一个有依据的窗宽,而不是随手取 7 或 30(看第四张卡的敏感性对照)
  • 先确认这条序列到底有没有可被滑窗捕捉的局部结构(看 Ljung-Box)

前提是数据表至少 20 行、数值列为定量列、窗宽满足 2 ≤ w < n,且行顺序已经按时间排好。行数不足 20 会被直接拦下,哪怕窗口条件本身是满足的。缺失较多时应先做时序插补再来,因为按行剔除会让剩下的观测在时间轴上不再等间隔。

什么时候不要用它

  • 你要的是对未来的预测值:滑窗只造特征、不外推,用「时间序列分析(ARIMA)」,带季节性用「季节性ARIMA模型」,只要一条平滑的外推曲线用「指数平滑模型」。
  • 你要把趋势项和季节项拆开单独看:滚动均值把两者混在一起,用「季节分解模型」。
  • 你要检验"到底有没有趋势":这是推断问题,滚动均值只是画出来给你看,用「Mann-Kendall趋势检验」;怀疑有突变点用「突变点检测(Pettitt)」。
  • 你关心的就是平稳性或自相关本身:本模块只把它们当前提顺带检了一下,正式做要用「单位根检验(ADF)」,看各阶自相关与偏自相关的完整图用「(偏)自相关分析」。
  • 数据没有时间顺序(横截面数据、每行是一个独立个体):滚动统计毫无意义,用「描述性统计」看分布。

容易误读的地方

  • 行顺序就是时间顺序,数据没排好,整份报告都是错的,而且不会报错。 这是本模块最容易出事的一处:拖入的时间标签列只是明细表上的一列文字,模块既不读它也不按它排序。如果导出的数据是按客户 ID、按门店、或按随机顺序排列的,滚动均值就是在一堆无关的相邻行之间取平均——ADF、Ljung-Box、相关系数照样算得出来,图也照样画得出来,只是全部没有意义。上传前先确认排序,这一步没有任何自动检查能替你做。
  • 序列非平稳时,滚动均值追的是趋势,不是"局部中心水平"。 示例的 ADF p = 0.539,未能拒绝单位根。这种序列上,红色的滚动均值线主要在跟着趋势走,于是"原序列越出 ±1 个滚动标准差带"就会在趋势转折处成片出现——把这些点当异常点会大量误报。要用滑窗特征做异常检测,应当先差分或去趋势,再在残差上滑窗。
  • 窗宽是唯一的超参数,而且是你主观定的,第四张卡就是逼你正视这件事。 示例实测:w=2 时方差缩减仅 7.39% 而 r=0.9612(几乎没起平滑作用),w=15 时方差缩减 31.60% 而 r=0.8127。判读口诀是相关很高加缩减很小等于 w 太小、相关明显下滑加缩减很大等于平滑过度。选窗要么由业务周期决定(周数据取 7、月数据取 30),要么就在这张对照表上取平衡,并把选择理由写进方法部分。
  • 滚动特征本身不含未来信息,但你的预处理可能含。 滚动统计只用当前及之前的观测,这一点是干净的,可以直接进预测模型。真正的泄漏往往发生在别处:在划分训练/测试集之前对整条序列做标准化、插补、或者用全序列的均值方差去归一化,未来的信息就通过这些统计量渗进了训练集。时间序列的划分也必须按时间切,不能随机打散。
  • 前 w−1 个位置是 N/A,不是 0,也不是缺失需要填。 那几个位置窗口没满,值不存在。模块的相关系数与方差缩减比都只在完整窗口区间上计算,避免把这些位置混进分母。下游用这些特征时要么丢掉开头这几行,要么明确交代怎么处理——用 0 填充相当于人为造了一段"活跃度为零"的历史。
  • 剔除缺失会悄悄破坏等间隔。 模块按行剔除数值列的缺失,剩下的观测在时间轴上不再等距:如果中间连着缺了十天,w=5 的窗口可能横跨半个月的真实时间,而报告里它和别的窗口看起来一模一样。第一张卡给出剔除条数与占比,占比明显不为零时应当先做时序插补而不是直接剔除。

报告里有什么

  1. 输出结果一:数据概览与前提检验
  2. 输出结果二:滚动特征汇总与特征有效性
  3. 输出结果三:原序列与滚动均值±标准差带
  4. 输出结果四:平滑强度与窗宽敏感性分析
  5. 输出结果五:结论与学术表述
时序滑窗特征:原序列与滚动均值±标准差带
图1 时序滑窗特征:原序列与滚动均值±标准差带
蓝线为原序列,红线为滚动均值(w = 5),浅红色带为 ±1 个滚动标准差范围;横轴为样本序号(1 ~ 200),滚动曲线从第 5 个位置开始(前 4 个窗口未满)。可用右上角切换器切到「表格」逐点读数。

在线统计分析平台 · 233 种分析方法 · AI 智能解读

在线使用
使用教程