Потенциальная утечка данных при разработке функций временных рядов для прогнозного моделированияPython

Программы на Python
Anonymous
Потенциальная утечка данных при разработке функций временных рядов для прогнозного моделирования

Сообщение Anonymous »

Я работаю над проектом машинного обучения, чтобы предсказать, когда активировать поставщиков в процессе промышленных закупок. У меня есть два основных набора данных:
  • : содержит ежедневную информацию о заказах на покупку.
  • Код: Выделить всё

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

Код: Выделить всё

import pandas as pd

def optimized_join_and_prepare_data(doc3, expedite2):
doc3['PROCESS_DATE'] = pd.to_datetime(doc3['PROCESS_DATE'])
expedite2['LOG_DATE'] = pd.to_datetime(expedite2['LOG_DATE'])

doc3['item_key'] = doc3['DOC_NUM'].astype(str) + '_' + doc3['DOC_ITEM'].astype(str) + '_' + doc3['SAP_CODE']
expedite2['item_key'] = expedite2['DOC_NUM'].astype(str) + '_' + expedite2['DOC_ITEM'].astype(str) + '_' + expedite2['SAP_WEB_CODE']

doc3 = doc3.sort_values('PROCESS_DATE')
expedite2 = expedite2.sort_values('LOG_DATE')

merged = pd.merge_asof(doc3, expedite2[['item_key', 'LOG_DATE', 'DATA01']],
left_on='PROCESS_DATE',
right_on='LOG_DATE',
by='item_key',
direction='nearest',
tolerance=pd.Timedelta('2d'))

merged['LOG_DATE'] = merged['LOG_DATE'].fillna(pd.NaT)
merged['DATA01'] = merged['DATA01'].fillna('NO_ACTIVATION')
merged = merged.dropna(subset=['PROCESS_DATE', 'item_key'])

return merged

final_data = optimized_join_and_prepare_data(doc3, expedite2)
Мои основные опасения и вопросы:
  • Существует ли при таком подходе риск утечки данных, особенно с использованием merge_asof и двухдневной терпимостью?
  • Если присутствует утечка данных, как я могу это изменить функция, гарантирующая, что я использую только прошлую информацию для каждого прогнозируемого дня, сохраняя при этом вычислительную эффективность?
  • Есть ли какие-либо другие соображения, специфичные для временных рядов Что следует учитывать при подготовке этих данных для прогнозной модели?
Я имею дело с большим набором данных, поэтому эффективность вызывает беспокойство, но я хочу обеспечить целостность моего анализа временных рядов. Будем очень признательны за любые идеи и предложения по улучшению!
Я попробовал несколько подходов к подготовке данных временных рядов:
  • Изначально я использовал простое объединение ключа и даты элемента, но это привело к множеству пропущенных значений и не отразило временную природу данных.
  • Затем я реализовал функцию merge_asof, как показано в моем коде. Я ожидал, что это позволит совместить данные активации (из expedite2) с ближайшей датой обработки (из doc3) в пределах двухдневного окна. Это работало хорошо с точки зрения эффективности и, похоже, фиксировало недавние активации.
  • Я также добавил исторические функции, такие как предыдущие активации и дни с момента последней активации, используя функцию сдвига внутри каждой группы элементов.
Чего я ожидал:
  • Набор данных, в котором каждая строка в документе 3 дополнена самыми последними данными об активации.
  • Исторические объекты, фиксирующие прошлые шаблоны активации для каждый элемент.
  • Эффективный процесс, способный обрабатывать большие наборы данных.
Что произошло на самом деле:
  • Эта функция эффективно работает с моим большим набором данных.
  • Я получаю объединенный набор данных с информацией об активации и некоторыми историческими функциями. >
  • Однако я не уверен, что мне удалось полностью устранить утечку данных, особенно с помощью двухдневного допуска в merge_asof.
  • Я' Меня беспокоит, что функция сдвига для создания исторических объектов может не эффективно фиксировать долгосрочные закономерности.
Мне нужна проверка правильности мой подход или предложения по улучшению, особенно в отношении предотвращения утечки данных и более сложной разработки функций временных рядов.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ve-modelin

Вернуться в «Python»