基于网格搜索与分段回归的时间序列变化点检测方法
传统统计方法在时间序列分析中既简洁又有力但面对大规模时间序列集合时扩展性往往不尽如人意。现实中的趋势变化往往微弱、带有噪声、数量也不止一个靠肉眼判断既不可靠也不现实。一旦需要处理数十乃至数百条时间序列人工识别就更不可行了。Figure 1: Identify the optimal number of knots and their positions using grid search解决思路是用程序来定位变化点。估计趋势变化点的手段有很多本文聚焦于网格搜索策略与分段回归的结合自动确定变化点的数量和位置。完整代码有 R 和 Python 两个版本Streamlit 应用也可在线体验。使用网格搜索寻找变化点网格搜索是一种系统化的优化技术原理并不复杂在预定义的离散候选参数集上逐一评估模型按照指定准则挑出表现最好的那组配置。在分段回归中待搜索的参数就是节点knot的数量和位置每个节点对应一个候选变化点。整体流程如下定义参数定义代价函数对每组网格组合拟合分段回归对结果评分选择达到最优结果的网格组合为减少过拟合、增强稳定性还需要设置节点之间的最小距离约束避免变化点在时间轴上挤得太近。定义代价函数比较不同变化点数量的模型之前需要有一套统一的评价标准。代价函数也叫损失函数或目标函数就是干这个的它接收一组模型参数输出一个标量反映模型误差或拟合质量。机器学习和统计建模中的训练与模型选择本质上都是在寻找令代价函数取极值的参数组合。回归问题中代价函数度量的是预测值与观测值之间的偏差。常见选择包括均方误差MSE度量平方残差的均值平均绝对误差MAE度量绝对残差的均值负对数似然NLL度量观测数据在给定模型下出现的概率。这些指标只关注拟合优度不考虑模型复杂度。变化点越多的分段回归模型几乎总能把误差压得更低哪怕它只是在拟合噪声。应对方法是引入惩罚代价函数在拟合质量和模型复杂度之间取得平衡。AIC赤池信息准则和 BIC贝叶斯信息准则是两个典型代表均以负对数似然为基础再加上一个与估计参数数量相关的惩罚项。AICAIC-2log(L) 2kBICBIC-2log(L)klog(n)*其中L 最大化似然值k 估计参数的数量n 观测值的数量Figure 2: Example for finding the optimal number of knots using the BIC score惩罚项的存在抑制了不必要的复杂度有助于在网格搜索中筛选出真正有意义的变化点数目。BIC 的惩罚力度比 AIC 更重选出的变化点数量往往更少——也就更保守。网格搜索工作流程基础概念铺设完毕下面定义网格搜索的具体流程。一个典型的变化点检测网格搜索包含四个环节准备数据并定义搜索空间为给定的节点配置拟合分段回归模型使用惩罚代价函数评估每个配置选择最优的节点数量及其位置函数输入是时间序列与搜索空间参数输出是最优节点集合。Figure 3: A general grid search function workflow网格搜索胜在直白、易于实现但计算开销会随候选变化点数量的增长而快速膨胀。引入搜索空间约束可以缓解这个问题减少待评估的配置数同时也起到防止过拟合的作用。具体的约束手段有三条一是排除序列头尾一定比例的观测值保证每个分段都有足够数据支撑趋势估计二是强制每个分段包含不少于某个阈值的观测值稳定斜率估计避免模型在短而嘈杂的片段上过拟合三是限定节点数量的上限控制搜索范围。设置这些参数时需要综合考虑观测值数量、序列频率以及业务逻辑。注意这里用不含节点的简单趋势模型作为网格搜索结果的基准。网格搜索实现回到前一篇教程的示例——加利福尼亚州天然气消费者数量看一下网格搜索函数在 R 中的实现。Python 版本可在对应 notebook 中获取。加载所需的库library(dplyr) library(tsibble) library(plotly)引入一组辅助函数其中包括网格搜索函数 piecewise_regressionfun_path - https://raw.githubusercontent.com/RamiKrispin/the-forecaster/refs/heads/main/functions.R source(fun_path)加载序列并整理格式path - https://raw.githubusercontent.com/RamiKrispin/the-forecaster/refs/heads/main/data/ca_natural_gas_consumers.csv ts - read.csv(path) | arrange(index) | filter(index 1986) | as_tsibble(index index) ts | head()序列为年度数据index 列是时间戳y 列是数值# A tsibble: 6 x 2 [1Y] index y int int 1 1987 7904858 2 1988 8113034 3 1989 8313776 4 1990 8497848 5 1991 8634774 6 1992 8680613绘制序列p - plot_ly(data ts) | add_lines(x ~ index, y ~ y, name Actual) | layout( title Number of Natural Gas Consumers in California, yaxis list(title Number of Consumers), xaxis list(title Source: US energy information administration), legend list(x legend_x, y legend_y) ) pFigure 4: Yearly number of natural gas consumers in California. The series is trending up without seasonality patterns用 piecewise_regression 函数识别最优节点数量及位置grid - piecewise_regression( data ts, time_col index, value_col y, max_knots 4, min_segment_length 8, edge_buffer 0.05, grid_resolution 20 )搜索空间由以下参数定义max_knots- 最大节点数量min_segment_length- 两个节点之间的最小观测值数量edge_buffer- 从序列头尾排除的观测值比例grid_resolution- 每个节点数量对应的最大搜索组合数这里把 max_knots 设为 4搜索空间中节点数量的范围就是 0–4。函数会根据约束条件生成候选配置并裁剪掉不满足条件的组合。运行结果如下Testing 0 knot(s)... Best BIC: 919.28 | RSS: 1.006639e12 | Tested 1 configurations Testing 1 knot(s)... Best BIC: 858.05 | RSS: 182625404855 | Tested 18 configurations Testing 2 knot(s)... Best BIC: 844.26 | RSS: 115452860424 | Tested 25 configurations Testing 3 knot(s)... Best BIC: 852.94 | RSS: 131838198802 | Tested 5 configurations Testing 4 knot(s)... Optimal model: 2 knot(s) with BIC 844.26 Warning message: In generate_candidates(k, min_idx, max_idx, min_segment_length) : Cannot fit 4 knots with min segment length 8输出按节点数量分组列出了测试过的模型数最终确定最优节点数为 2。函数还抛出了一条警告受搜索空间约束限制观测值不足以容纳 4 个节点因此跳过了对应的拟合。这一行为符合预期——说明约束条件正在起作用。下面的动画展示了搜索空间中所有配置的拟合过程Figure 5: Animation of the grid search process函数输出中包含搜索过程和最优结果的详细信息。最优节点数grid$optimal_knots [1] 2节点位置grid$knot_dates [1] 1999 2007最后用plot_knots函数加上注释把最优节点叠加到原始序列上进行可视化Figure 6: The optimal number of knots and their positions based on the grid search results局限性网格搜索配合分段回归对于识别趋势变化点的数量和位置是一种切实可行的方案。它最适合的场景是相对干净的时间序列主导信号就是底层趋势——本文的示例正是如此。现实中的时间序列往往不这么纯粹。季节性、突发水平偏移、异常值都可能干扰甚至扭曲趋势成分。在这些效应存在的情况下网格搜索可能定位到虚假的变化点也可能遗漏真正有意义的趋势断裂。一种可行的预处理策略是先做分解如 STL将趋势成分分离出来再在提取到的趋势上执行网格搜索而非直接在原始序列上操作。对于结构复杂或噪声较大的序列能够联合建模趋势与季节性的变化点检测方法可能更为适用。总结本文展示了如何将变化点检测转化为一个优化问题通过网格搜索遍历候选节点配置用惩罚似然准则BIC选出最优模型配合分段回归完成趋势变化点的自动检测。分段回归是建模趋势变化的可解释框架网格搜索虽然朴素但在估计变化点位置上行之有效BIC 等惩罚准则在拟合优度与模型复杂度之间做出了取舍抑制了过拟合倾向搜索空间约束——边缘缓冲区、最小分段长度、最大节点数——进一步稳定了模型并降低了计算开销。网格搜索在计算效率上确实算不上最优解但它的透明度是一大优势作为基线方法和实际工程中的可用方案都没有问题。面对更复杂的场景可以在此框架基础上引入高级优化策略或贝叶斯变化点检测方法。下一篇教程将讨论如何把这套方法应用到更复杂的实际场景中。本文代码https://avoid.overfit.cn/post/17546aec522448f3a843c394d804fe48by Rami Krispin

相关新闻

YOLOv1论文研读

YOLOv1论文研读

YOLOv1最大的创新点在于它提出并实现了将目标检测定义回归问题,它不再像之前的模型一样基于分类器方法,而是通过与检测性能直接对应的损失函数进行训练,从而实现了一个端到端的统一网络,做到只需“看一眼”就能直接从完整图像中输…

2026/7/3 21:53:45 阅读更多 →
mhgngfmhx

mhgngfmhx

udtgf

2026/5/17 12:55:25 阅读更多 →
卡梅德生物技术洞察:ADCYAP1R1(腺苷酸环化酶激活肽受体1)的机制解析与药物研发策略

卡梅德生物技术洞察:ADCYAP1R1(腺苷酸环化酶激活肽受体1)的机制解析与药物研发策略

在神经药理学与代谢调控的交叉前沿,ADCYAP1R1(又称PAC1受体)作为垂体腺苷酸环化酶激活肽(PACAP)的高亲和力受体,正成为神经系统疾病及代谢紊乱治疗的关键靶点。该受体属于B类G蛋白偶联受体(GPCR…

2026/7/3 16:14:36 阅读更多 →

最新新闻

Windows任务栏透明化神器:5种模式彻底改变你的桌面体验

Windows任务栏透明化神器:5种模式彻底改变你的桌面体验

Windows任务栏透明化神器:5种模式彻底改变你的桌面体验 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否厌倦了Windows任…

2026/7/4 12:00:48 阅读更多 →
量子傅里叶变换在多光子干涉测量中的高效应用

量子傅里叶变换在多光子干涉测量中的高效应用

1. 量子傅里叶变换在多光子干涉基准测试中的突破性进展在量子光学实验中,多光子干涉现象是量子计算和量子通信的核心基础。想象一下,当多个完全相同的光子同时进入一个光学系统时,它们会像训练有素的芭蕾舞者一样完美同步地舞动,产…

2026/7/4 12:00:48 阅读更多 →
MiniMax-M2.7 + DMXAPI:轻量级大模型调用新范式

MiniMax-M2.7 + DMXAPI:轻量级大模型调用新范式

1. 项目概述:这不是“又一个API接口”,而是大模型调用链路的轻量化重构 最近在多个技术群和开发者论坛里, MiniMax-M2.7 这个名字出现频率陡增——不是作为论文里的新架构,也不是某家大厂发布会上的PPT配图,而是真实…

2026/7/4 12:00:48 阅读更多 →
MLOps实战:从Notebook到生产环境的模型服务化与可观测性

MLOps实战:从Notebook到生产环境的模型服务化与可观测性

1. 项目概述:当模型走出Jupyter,真正开始养家糊口 “From Notebook to Production: Running ML in the Real World (Part 4)”——这个标题里藏着一个被无数数据科学家反复咀嚼、又悄悄咽下的现实:我们花了80%的时间调参、画图、写 print(mo…

2026/7/4 11:58:47 阅读更多 →
AI提示词四要素法:参考信息、动作、目标、要求

AI提示词四要素法:参考信息、动作、目标、要求

1. 为什么“1分钟学会”是个误导,但“1分钟上手专业指令”真能做到?你点开这篇内容,大概率是被标题里的“1分钟”勾住了——这很真实。我也试过,在刚接触文心一言那会儿,翻遍官方文档、看十几条短视频、收藏五六个“万…

2026/7/4 11:56:46 阅读更多 →
基于YOLOv5的养殖场猪只行为AI监测系统开发

基于YOLOv5的养殖场猪只行为AI监测系统开发

1. 项目背景与核心价值去年帮农学院做毕设指导时,发现养殖场每天要安排4个工人轮班盯着监控屏幕,用肉眼判断母猪是否出现异常行为。这种传统监测方式不仅效率低下,夜间漏检率更是高达30%。这正是我们开发这套系统的初衷——用AI视觉技术实现猪…

2026/7/4 11:56:46 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻