ML

Подготовка данных. Шаг 3: работа с признаком времени

Часто в данных одним из признаков является время события. Это очень богатый источник новых признаков и фич.

Работа с признаком времени

Время с начала наблюдений

Прежде всего, рекомендуется создать новый признак – время, прошедшее с начала наблюдений (то есть с минимального доступного момента времени в данных) или с начала какого-либо значимого момента во времени. Если время известно с точностью до секунд, стоит перевести этот признак в количество секунд с момента наблюдений.

Пример преобразования данных о времени в количество дней от начала нашей эры:

df['ts_ordinal'] = df['ts'].map(pd.Timestamp.toordinal)  # вернет числа вида 738521

Тренд

Тренд – это общая долговременная тенденция временного ряда. Ниже представлено несколько вариантов извлечения тренда.

Для создания признака тренда можно применить линейную регрессию. Тренд можно построить для изменения конкретного признака или нескольких разных признаков. В итоге получим дополнительный признак, учитывающий тенденцию изменения данного признака во времени.

X = df['ts']
y = df['value']

lr = LinearRegression()
lr.fit(X, y)

df['trend'] = lr.predict(X)

Скользящее среднее

Еще один способ создания дополнительного признака тренда.

 # вычисление средних значений с окном в 7 дней

df['rolling'] = df['value'].rolling(window=7).mean()

При создании скользящего среднего теряется несколько первых и последних значений!

Экспоненциальное сглаживание

Может оказаться более подходящим для выявления тренда в данных, подверженных сезонным изменениям.

df['exp'] = df['value'].ewm(span=7, adjust=False).mean()

Декомпозиция временного ряда

Позволяет выявить не только тренд, но и данные об остатках и сезонности.

from statsmodel.tsa.seasonal import seasonal_decompose

# Декомпозиция временного ряда
result = seasonal_decompose(df['value'], model='additive', period=7)

# Извлечение тренда
df['dec_trend'] = result.trend

Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить