时间序列的特征工程详解
详细的时间序列特征工程。
时间序列中的机器学习任务如磁盘故障预测、时间序列预测、时间序列异常检测、时间序列分类等等都建立在特征工程上。本项目实现时序场景下常用的特征。
时间序列的特征工程:
- 基本的统计特征 (均值方差等等)
- 分位数特征
- 自相关与周期特征
- 度量时序变化情况的特征
- 度量时序分散情况的特征
- 与信息论和信号处理相关的特征(熵 谱 小波分析)
- 峰值特征
- 位置特征(某个特征在时间窗口中的位置)
- 光滑特征(使用平滑方法 MA EMA 或滤波器对原始时序进行处理的结果)
- 专用特征(某些 paper 上提到的特征, 用于解决某个或某类特定问题)
以上的特征分类方法在理论上并不表明特征是互相独立的,只是一种习惯分类方法。
项目地址见:time series features
概率分布是随机变量的完整刻画,一旦知道随机变量的概率分布表达式就可以完整地导出该随机变量的数学性质,然而现实情况是我们很难从采样数据中推断随机变量的分布,为此,我们可以通过构造一个采样样本的函数来刻画该分布的一些特征。
实现模板
不带参数的特征:
1 | def time_series_xx(series): |
带参数的特征:
1 | class time_series_xx: |
使用
本项目依赖:numpy
、scipy
。
克隆项目到{your_path}
,
1 | git clone https://github.com/allenwind/time-series-features.git |
打开.bashrc
添加项目路径到PYTHONPATH
环境变量中,
1 | export PYTHONPATH={your_path}/time-series-features:$PYTHONPATH |
然后,
1 | source ~/.bashrc |
例子,
1 | import tsfeatures |
基本统计特征
Mean
Median
Mode
Geometric mean
Harmonic mean
Variance
standard deviation
Skewness
kurtosis
Coefficient of variation
度量分散的特征
standard deviation
Range
Mean absolute deviation around a central point
m 包括 mean median mode 这三个统计量。
Median absolute deviation around a central point
absolute sum of changes
mean abs change
mean change
mean second derivative central
度量变化的特征
mean second derivative central
可以作为change特征。
最大绝对变化,
偏离均值的最大绝对变化,
平均绝对变化,
度量自相关和周期的特征
自相关和卷积在数学定义上很相似,需要区分。 自相关(f1等于f2)如下:
而卷积定义如下:
autocorrelation
l is lag
在编程实现上, 我们通常使用如下高效的计算方式:
自相关系数估计方法:
计算所有 lag 的自相关系数,即自相关函数:
partial autocorrelation
信息度量
abs energy
Approximate entropy
Sample entropy
binned entropy
cumulative sum
信息论角度看时间序列 representation
熵的计算方法
但是时间序列没有具体给出序列的分布,无法直接计算。但可以估计,具体的估计方法有三种:
- binned entropy
- approximate entropy
- sample entropy
分类特征
Discrimination power of measures for nonlinearity, c3
an estimate for a time series complexity, cid_ce
time reversal asymmetry statistic
Highly comparative feature-based time-series classification
时间序列的光滑处理
simple moving average
迭代处理
Cumulative moving average
Weighted moving average
Exponential moving average
Double exponential smoothing
for forecasting $F_{t+m}=s_{t}+m b_{t}$
类似的还有,Triple exponential smoothing。
实现
项目地址见:time series features
转载请包括本文地址:https://allenwind.github.io/blog/10951
更多文章请参考:https://allenwind.github.io/blog/archives/