Раскрытие секретов извлечения временных признаков: подробное руководство с примерами кода

В сфере анализа данных и машинного обучения данные временных рядов играют решающую роль. Будь то цены на акции, погодные условия или показания датчиков, понимание временных аспектов данных может дать ценную информацию. Извлечение временных признаков относится к процессу извлечения значимых признаков из данных временных рядов, которые можно использовать для повышения производительности модели и более глубокого понимания основных закономерностей. В этой статье мы погрузимся в мир извлечения признаков времени, изучая различные методы с примерами кода, которые можно легко применить в ваших собственных проектах.

Метод 1: Статистические характеристики

Статистические функции предоставляют сводную информацию о распределении и свойствах временного ряда. Они могут отражать важные характеристики, такие как центральная тенденция, дисперсия и форма. Вот несколько примеров:

import numpy as np
# Mean
mean = np.mean(time_series)
# Standard deviation
std_dev = np.std(time_series)
# Skewness
skewness = np.skew(time_series)
# Kurtosis
kurtosis = np.kurtosis(time_series)

Метод 2: автокорреляция

Автокорреляция измеряет сходство между временным рядом и его лаговой версией. Это помогает выявить повторяющиеся закономерности и зависимости в данных. Для этой цели обычно используются автокорреляционная функция (ACF) и частичная автокорреляционная функция (PACF).

import pandas as pd
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
# ACF plot
plot_acf(time_series, lags=20)
# PACF plot
plot_pacf(time_series, lags=20)

Метод 3: функции во временной области

Функции временной области включают анализ временного ряда в исходной области. Эти функции отражают такие характеристики, как тенденция, сезонность и периодичность. Некоторые часто используемые функции временной области включают:

import pandas as pd
# Trend
trend = pd.Series(time_series).rolling(window=10).mean()
# Seasonality
seasonality = pd.Series(time_series).diff(periods=7)
# Periodicity
periodicity = pd.Series(time_series).diff(periods=1)

Метод 4: вейвлет-преобразование

Вейвлет-преобразование разлагает временной ряд на различные частотные компоненты, позволяя извлекать признаки в различных масштабах. Этот метод особенно полезен для анализа нестационарных временных рядов. Вот пример:

import pywt
# Wavelet decomposition
coefficients = pywt.wavedec(time_series, 'db4', level=3)
# Extract features from coefficients
feature_1 = np.mean(coefficients[0])
feature_2 = np.std(coefficients[1])
feature_3 = np.max(coefficients[2])

Метод 5: графики повторяемости

Графики повторяемости визуализируют повторяемость закономерностей внутри временного ряда. Они дают представление о динамическом поведении и сложности данных. Вот пример использования библиотеки pyts:

from pyts.image import RecurrencePlot
# Recurrence plot
rp = RecurrencePlot()
X_rp = rp.fit_transform(time_series.reshape(1, -1))
# Display the recurrence plot
plt.imshow(X_rp[0], cmap='binary', origin='lower')
plt.show()

Извлечение временных признаков — важный шаг в анализе данных временных рядов. Используя эти методы, вы можете получить ценную информацию, улучшить производительность модели и принять обоснованные решения. От статистических функций до вейвлет-преобразований и рекуррентных графиков — возможности безграничны. Поэкспериментируйте с этими методами в своих проектах, чтобы раскрыть секреты, скрытые в данных временных рядов.