Леса LTRC, также известные как леса долгосрочных рекурсивных каскадов, — это популярный метод машинного обучения, используемый для прогнозного моделирования. Они доказали свою эффективность в широком спектре приложений, от финансов до здравоохранения. Одним из ключевых аспектов, который может повысить производительность лесов LTRC, является включение изменяющихся во времени ковариат. В этой статье мы рассмотрим различные методы включения изменяющихся во времени ковариат в леса LTRC и предоставим примеры кода для иллюстрации каждого подхода.
Метод 1: ковариаты с лагом
Один простой метод учета изменяющихся во времени ковариат — это введение версий переменных с лагом. Включая запаздывающие ковариаты в качестве признаков, мы фиксируем временные зависимости и позволяем модели учиться на прошлых наблюдениях. Например, если у нас есть ковариата «температура» в каждый момент времени, мы можем создавать функции с запаздыванием, такие как «temperature_t-1», «temperature_t-2» и т. д.
# Example code for creating lagged covariates
import pandas as pd
def create_lagged_covariates(data, variable, lag_order):
for i in range(1, lag_order + 1):
data[f'{variable}_lag{i}'] = data[variable].shift(i)
return data
# Usage example
data = pd.read_csv('data.csv')
data = create_lagged_covariates(data, 'temperature', 3)
Метод 2: Статистика скользящего окна
Другой подход заключается в вычислении статистики скользящего окна для изменяющихся во времени ковариат. Это включает в себя расчет сводной статистики, такой как среднее значение, медиана или стандартное отклонение, по фиксированному окну предыдущих наблюдений. Включив эту статистику в качестве признаков, мы фиксируем тенденцию и изменчивость ковариат с течением времени.
# Example code for computing rolling window statistics
import pandas as pd
def compute_rolling_statistics(data, variable, window_size):
data[f'{variable}_mean'] = data[variable].rolling(window_size).mean()
data[f'{variable}_std'] = data[variable].rolling(window_size).std()
# Add more statistics as needed (e.g., median, min, max)
# Usage example
data = pd.read_csv('data.csv')
compute_rolling_statistics(data, 'temperature', 5)
Метод 3: характеристики временных рядов
В дополнение к ковариатам с задержкой и статистике скользящего окна мы можем извлечь конкретные функции временных рядов, которые фиксируют соответствующие закономерности в ковариатах. Эти функции могут включать сезонность, тренд, автокорреляцию или преобразования Фурье. Включив эти функции, мы предоставляем модели дополнительную информацию о динамике основного временного ряда.
# Example code for extracting time series features
import pandas as pd
from statsmodels.tsa.seasonal import seasonal_decompose
from scipy.fft import fft
def extract_time_series_features(data, variable):
# Seasonality
decomposition = seasonal_decompose(data[variable], model='additive')
data[f'{variable}_seasonality'] = decomposition.seasonal
# Trend
data[f'{variable}_trend'] = decomposition.trend
# Autocorrelation
data[f'{variable}_autocorr'] = data[variable].autocorr()
# Fourier transformation
fft_coeffs = fft(data[variable])
data[f'{variable}_fft'] = abs(fft_coeffs)
# Usage example
data = pd.read_csv('data.csv')
extract_time_series_features(data, 'temperature')
В этой статье мы рассмотрели несколько методов включения изменяющихся во времени ковариат в леса LTRC. Используя ковариаты с запаздыванием, статистику скользящего окна и функции временных рядов, мы можем повысить прогностическую способность лесов LTRC и уловить временную динамику в данных. Используя эти методы и реализуя их с помощью предоставленных примеров кода, вы сможете раскрыть весь потенциал лесов LTRC в своих задачах прогнозного моделирования.