# How to extract features from time-series data?

I have a question on feature-extraction from time-series data. I have worked on time-series data before but my knowledge is limited to ARMA.

I read a few papers as well as thread here in the forum where the authors have extracted statistical features such as the count, mean, deviation, skewness and kurtosis, And used it for time series classification. I am trying to do the same but I don't understand the part about extracting statistical features of the entire time series.

What does it mean? Wouldn't the entire series have just 1 mean or std. deviation. How to incorporate the features data with the time-series?

Would appreciate the help if someone can simplify this whole concept. Thanks.

Update:

I have multiple time series, each series with 365 time period, a years worth of daily records for 100 different series. I performed feature extraction using tsfresh package in python, the output was 100 rows, 1 for each of the series. Do i use these 100 rows as data for classification or should I merge it with the original time-series data?

Regarding your concern about an "entire series having just 1 mean," that's true only for a single univariate series. I think you need to clarify the kind of information you have available and are analysing. If it is a single, univariate time series, that suggests one set of approaches for which the classic time series models are appropriate, e.g., ARIMA, Box-Jenkins or Holt-Winters. If you have multiple time series, that would suggest other avenues.

If you have a single time series, there are limitless numbers of ways to partition that, e.g., spectral decomposition or fourier analysis which would identify the patterns in, e.g., the sine waves. ARIMA or Box-Jenkins models would break out many additional metrics such as SPACs and autocorrelation functions. Augmented Dickey-Fuller tests would help identify trend, drift and unit roots. Mandelbrot's D or a Hurst exponent would help in understanding the heteroscedasticity in the series. Estimating a tail index would aid in understanding or suggesting possible underlying distributional assumptions. And so on.

Rob Hyndman has an excellent paper on classifying multiple time series titled Dimension Reduction for Clustering Time Series Using Global Characteristics (http://www.robjhyndman.com/papers/wang2.pdf). Basically, it involves estimating the moments for a set of univariate time series -- e.g., mean, std dev, skewness, kurtosis, he calls them global metrics -- and then running a cluster analysis on the results.

• I have updated the question to make it clear. I have multiple time series, each series with 365 time period. So 1 years worth of daily data for 100 series. Upon feature extraction using tsfresh package in python, i am left with 100 rows for each of the series. Do i use these 100 rows as data for classification or should i merge it with the original time-series data?
– Raj
Feb 27, 2017 at 22:39
• Sorry. I don't know what the "original" time series refers to. If I understand you correctly it sounds like you have 100 distinct units (like 100 products or something) and 365 days of information for each unit. Is your data matrix then 100 rows by 365 columns (corresponding to days)? Feb 27, 2017 at 23:13
• No, it is 36500 rows. There is a id Column which distinguishes the products. Each product has data from 3 sensors/measuring devices. My confusion lies with reconciling the features extracted from the time-series using sliding window with the training classification. If i have 365 records per product and split them into say 2 windows of 150+ records each. And extract 10 features. Then i will have 2 rows with 10 features for 1 product.
– Raj
Feb 27, 2017 at 23:23
• That's a weird matrix. Regardless, you would want to do the analysis by product id separately for each measuring device. Feb 27, 2017 at 23:27