当前位置: 首页 > news >正文

重温:时间窗口与滑动步长的概念


核心概念

  1. 窗口大小(Window Size)

    • 定义窗口包含的时间步数(如过去7天、24小时等)。
    • 例如,窗口大小为5时,每个窗口包含连续的5个时间点数据。
  2. 滑动步长(Step/Stride)

    • 窗口每次向前移动的时间步数。步长为1表示窗口每次移动一个时间单位;步长大于1时,窗口跳跃式移动。
  3. 窗口方向

    • 前向窗口:从历史到当前时间(用于预测未来)。
    • 后向窗口:从当前时间到历史(用于分析过去模式)。

典型应用场景

  1. 特征工程

    • 在窗口内计算统计量(均值、标准差、最大值、最小值等),作为模型的输入特征。
    • 示例:用过去30天的平均销售额预测未来一周的销售额。
  2. 时间序列预测

    • 将窗口内的历史数据作为输入(X),窗口后的未来数据作为输出(Y),构建监督学习数据集。
    • 例如:用过去10天的温度预测第11天的温度。
  3. 异常检测

    • 通过窗口内的数据分布(如移动平均、标准差)识别突变点或异常值。
  4. 平滑处理

    • 使用移动平均(Moving Average)或指数平滑(Exponential Smoothing)消除噪声。

实现示例(Python)

假设有一个时间序列数据 [1, 2, 3, 4, 5, 6, 7, 8],窗口大小为3,步长为1:

def sliding_window(sequence, window_size, step=1):
    windows = []
    for i in range(0, len(sequence) - window_size + 1, step):
        windows.append(sequence[i:i+window_size])
    return windows

data = [1, 2, 3, 4, 5, 6, 7, 8]
windows = sliding_window(data, window_size=3, step=1)

# 输出结果:
# [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8]]

工具库支持

  • PandasDataFrame.rolling() 实现滚动计算。

    import pandas as pd
    df = pd.DataFrame({'value': [1, 2, 3, 4, 5]})
    df['rolling_mean'] = df['value'].rolling(window=3).mean()
    
  • NumPy:通过 np.lib.stride_tricks.sliding_window_view 快速生成滑动窗口视图(需NumPy 1.20+)。


注意事项

  1. 窗口大小选择

    • 太小:可能捕捉不到长期趋势,对噪声敏感。
    • 太大:可能导致滞后,丢失细节信息。
  2. 数据泄漏

    • 在预测任务中,需确保窗口内不包含未来信息(验证时需严格划分训练集和测试集)。
  3. 边界处理

    • 初始窗口可能不足长度时,可选择填充(padding)或忽略。

http://www.dtcms.com/a/97440.html

相关文章:

  • 【算法】动态规划:子序列问题、回文子串问题、两个数组的dp
  • C++ 变量类型
  • Qt 信号和槽
  • 原型模式为什么可以解决构建复杂对象的资源消耗问题
  • 天洑参展2025全球产业科技创新与投资促进大会
  • dify + deepseek /qwen + win +xinference 等完成知识库建设
  • STM32 IIC通信
  • 从春招“AI热潮”看科技变革中的就业新趋势
  • 学习不同电脑cpu分类及选购指南
  • 【Linux-驱动开发-pinctrl子系统】
  • AI大模型从0到1记录学习 day08
  • Django:构建高性能Web应用
  • 国内GitHub镜像源全解析:加速访问与替代方案指南
  • Spring @EnableAutoConfiguration 注解执行过程详解
  • 卷积神经网络在图像分割中的应用:原理、方法与进展介绍
  • 如何使用 GPT-4o API 实现视觉、文本、图像等功能 附赠gpt升级和4o额度购买
  • Matlab设置表table的表头
  • 为什么使用Flask + uWSGI + Nginx 部署服务?
  • 硬件基础--14_电功率
  • Transformers中的BertConfig、BertModel详解
  • 蓝桥杯备考:贪心问题之均分纸牌
  • 【2.项目管理】2.4 Gannt图【甘特图】
  • 【Python】类定义过程中 列表推导式获取类变量的问题
  • Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange)
  • Webpack 配置详解:从入门到实战
  • 复习MySQL20250327
  • OmniPlan Pro for Mac 项目管理流程
  • 人工智能模型的自我学习能力
  • 相对位置2d矩阵和kron运算的思考
  • 各种响应的理解