Вопрос или проблема
Я экспериментирую с конформным прогнозированием по данным с высокой частотой, используя следующие модели регрессии на основе леса для задачи прогнозирования на обучающей выборке. Размер унивариантных (1D) временных рядов составляет (8640, 1)
, что означает одно значение столбца во времени для 8460 временных шагов.
Краткая заметка:
8460 означает $30×288$ (каждый день имеет 288 наблюдений) — данные собирались с интервалами в 5 минут, что дает $12×24$ = 288 наблюдений/данных в день.
Следующие данные являются временными:
import pandas as pd
import numpy as np
np.random.seed(42)
import matplotlib.pyplot as plt
# создать данные
df = pd.DataFrame({
"TS" : np.arange(0, 288*30),
"value": np.abs(np.sin(2 * np.pi * np.arange(0, 288*30) / 7) + np.random.normal(0, 20.1, size=288*30)) # генерировать сезонность
})
# Установить столбец 'TS' в качестве индекса
df = df.set_index('TS')
# Построить график столбца 'value' по новому индексу
plt.figure(figsize=(10, 6))
plt.plot(df.index, df['value'])
plt.xlabel('Временные шаги (эпохи=5мин)')
plt.ylabel('значение')
plt.title('1D данные во времени')
plt.grid(True)
plt.show()
df.shape # (8640, 1)
Предположим, я разбил данные на обучающую и тестовую выборки (Предположим, я хочу прогнозировать конец данных за последние 7 дней = $7×288$ наблюдений)
Я применяю следующие модели на основе леса с следующими настройками (n_estimators=1
) из-за высокой вычислительной нагрузки и высокой частоты данных.
from lineartree import LinearForestRegressor
model = LinearForestRegressor( base_estimator=Ridge(random_state=42),
n_estimators=1,
n_jobs=-1,
max_features="sqrt")
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(n_estimators=1,
random_state=123,
n_jobs=-1)
Мои вопросы:
- Действуют ли модели леса как решающee дерево (с единственным деревом), если они настроены на одно дерево?
- В общем, допустимо ли использовать модель леса для задачи прогнозирования унивариантных (1D) временных данных, используя одно дерево? Каковы последствия использования одного дерева внутри моделей леса? т.е. переобучение/недообучение
Примечание 1: Меня не интересует изменчивость данных, назначаемая уменьшением выборки с помощью resample()
и функций агрегирования, таких как mean()
, для уменьшения выборки с 5 минут до 1 часа, так как я теряю информацию при маленьком временном разрешении.
resampled_df = (df.set_index('datetime') # Привести данные в соответствие, установив столбец с датой и временем в качестве индекса датафрейма, необходимого для пересчетa
.resample('1H') # пересчитать с частотой 1 час
.mean() # использовать mean() для агрегирования
.interpolate() # заполнение NaN и пропущенных значений [на всякий случай]
)
resampled_df.shape # (24, 1)
Ответ или решение
Когда речь идет о прогнозировании временных рядов с использованием лесных моделей, важно учитывать особенности, связанные с использованием только одного дерева или оценщика. Ваше исследование по применению конформного предсказания и использование односторонних моделей регрессии, таких как LinearForestRegressor
и RandomForestRegressor
, вызывает интересные вопросы.
1. Поведение лесных моделей с одним деревом
Да, если вы установите n_estimators=1
в лесной модели, такая модель будет вести себя как одиночное дерево решений. Однако существует несколько ключевых различий:
-
Корректировка: Лесные модели, такие как случайный лес, нацелены на уменьшение дисперсии за счет агрегирования предсказаний нескольких деревьев. Использование лишь одного дерева приводит к отсутствию этой техники усреднения, что может увеличить вариативность ваших предсказаний.
-
Предобучение: Одно дерево не будет иметь той же гибкости и мощи, что и полноценная лесная модель, потому что оно не использует случайные подмножества данных и признаков, что помогает избежать переобучения.
2. Использование лесных моделей для прогнозирования однородных временных рядов
Использование модели леса с единственным деревом для прогнозирования однородных временных данных (как в вашем случае с 1D данными) возможно, но результаты могут быть неоднозначными. Вот основные последствия такого подхода:
- Переобучение и недообучение:
- Переобучение: Если данные обладали достаточной сложностью и количественными особенностями, одно дерево может не уметь обобщать на тестовые или новые данные, что приведет к переобучению и плохому качеству предсказаний.
- Недообучение: С другой стороны, в случае простых зависимостей, одно дерево может не достаточно "подходить" под данные, что также приведет к недообучению.
Заключение
Применение моделей на основе лесов с единственным деревом является допустимым, но важно осознавать, что вы упускаете преимущество ансамблевых методов, которые могут значительно улучшить общую производительность модели. В случае временных рядов данные часто становятся сложными, и важно уметь различать тренды, сезонность и случайные колебания. Применение одного дерева может проявиться как неэффективное решение.
Рекомендуется рассмотреть возможность применения или экспериментирования с доминирующими вариантами, такими как использование большего числа деревьев, чтобы извлечь преимущества ансамблевой техники, которая может повысить стабильность и точность прогноза.