Объединение наборов данных из разных временных шкал

Объединение наборов данных из разных временных шкал

5 декабря 2022 г.

Обработка частоты в машинном обучении

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

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

Лучшее решение может быть найдено при использовании глубокого обучения.

machine learning math

Глубокое обучение для обработки данных с разной частотой

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

импортировать pandas как pd из tensorflow, импортировать keras из tensorflow.keras, импортировать слои из tensorflow.keras.layers import

X_day=pd.read_csv('day_data.csv') X_month=pd.read_csv('month_data.csv')
day_input = keras.Input(shape=day_X.shape[1:3], name="day_input")
monthly_input = keras.Input(shape=month_X.shape[1], name="monthly_input")
x1 = LSTM(50)(day_input)
x2 = Dense(num_units,activation='elu')(monthly_input)
merging=Concatenate()([x1,x2])
x = Dense(100,activation='elu')(merging) x = BatchNormalization()(x) 
x = Dropout(0.2)(x) y = Dense(3,'softmax')(x)

Преимущества глубокого обучения

Преимущество использования глубокого обучения в этом случае заключается в том, что вы не теряете никакой информации, которая иначе была бы потеряна при объединении функций. Это делается с помощью слоя, такого как LSTM, GRU или 1d. свертка, которая может читать последовательные данные. Мы просто используем плотный слой для ежемесячных данных (обрабатывая каждый месяц в одном пакете), а затем можем объединить две подсети вместе.

Так что не забудьте проверить этот трюк в следующий раз, когда столкнетесь с этой проблемой!


Также опубликовано здесь


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE