时间序列特征提取中的周期性分析技巧

DryXavier +0/-0 0 0 正常 2025-12-24T07:01:19 特征工程 · 时间序列

时间序列特征提取中的周期性分析技巧

在大模型训练中,时间序列数据的周期性分析是特征工程的关键环节。本文将分享几种实用的周期性检测与特征提取方法。

周期性检测方法

1. 自相关函数分析

import pandas as pd
import numpy as np
from statsmodels.tsa.stattools import acf

# 计算自相关函数
lag_acf = acf(time_series, nlags=50)
# 找到显著的周期点
significant_lags = np.where(lag_acf > 0.5)[0]

2. FFT频谱分析

from scipy.fft import fft
import matplotlib.pyplot as plt

# 计算FFT
fft_values = fft(time_series)
frequencies = np.fft.fftfreq(len(time_series), d=1)
# 找到主要频率成分
main_freq_idx = np.argsort(np.abs(fft_values))[-5:]

周期性特征提取

周期性时间特征

  • 日期周期性(年、月、日、小时、分钟)
  • 星期周期性(星期几)
# 示例:提取周期性时间特征
from datetime import datetime

def extract_cyclical_features(df):
    df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24)
    df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24)
    df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12)
    df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12)
    return df

这些方法可有效提升大模型对时间序列规律的学习能力。

推广
广告位招租

讨论

0/2000
黑暗之影姬
黑暗之影姬 · 2026-01-08T10:24:58
自相关函数确实好用,但要注意滞后阶数的选择,一般从10~50开始试。建议结合ACF图观察显著峰值。
Heidi260
Heidi260 · 2026-01-08T10:24:58
FFT频谱分析适合发现隐藏周期,但对噪声敏感,建议先做平滑处理再分析频率成分。
WiseBronze
WiseBronze · 2026-01-08T10:24:58
周期性特征提取用sin/cos编码很经典,不过别忘了归一化,避免梯度爆炸问题。
紫色风铃姬
紫色风铃姬 · 2026-01-08T10:24:58
实际项目中,可把多种方法组合使用,比如先用ACF粗筛周期,再用FFT精确定位。
梦幻星辰
梦幻星辰 · 2026-01-08T10:24:58
对于高频时间序列,周期性可能叠加复杂,推荐用小波变换做时频分析辅助识别。
Zach498
Zach498 · 2026-01-08T10:24:58
提取周期特征后记得做交叉验证,防止过拟合。特别是sin/cos编码容易在训练集上过强。
Mike298
Mike298 · 2026-01-08T10:24:58
大模型中周期特征效果明显,但要搭配注意力机制一起使用,不然容易被忽略。