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

Создание обучающих наборов, не допускающих утечки данных, на самом деле настолько сложно, что технологическим лидерам, таким как Airbnb, Netflix и Uber, пришлось создать Feature Store, чтобы последовательно создавать точные обучающие наборы. Но не все Feature Stores на самом деле решают проблему корректности на определенный момент времени для специалистов по обработке и анализу данных.

Проблема корректности на момент времени

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

Представьте,у вас есть веб-сайт электронной коммерции, который дает рекомендации по продуктам. Особенности этой модели могут включать в себя:

  • Показатели RFM, такие как сумма продуктов, приобретенных пользователем за последнюю неделю, месяц или год, рассчитываются каждую неделю.
  • Сводка товаров, находящихся в настоящее время в корзине пользователя, которая обновляется в режиме реального времени.

Ярлык для этой модели может быть таким: был ли продукт, который был рекомендован, действительно куплен в том же веб-сеансе.

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

Для этой задачи машинного обучения у нас есть 4 метки времени, которые нужно отслеживать:

  • Когда происходит еженедельная групповая агрегация функций RFM
  • Когда товары добавлены в корзину
  • Когда генерируется рекомендация продукта
  • Когда покупка действительно совершена

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

Пример

Чтобы сделать этот пример более конкретным, представьте, что данные обучения, которые у нас есть, выглядят примерно так:

После внедрения ваш алгоритм рекомендаций по продуктам мог сделать прогноз на 01.01.2021 9:43:25. Если это так, то самыми актуальными функциями будут те функции, которые наблюдались до 2021–01–01 9:43:25, строка 2 в первом наборе функций и строка 1 во втором наборе функций.

Однако, если бы прогноз был сделан в 01.01.2021 9:37:25, наиболее актуальной функцией была бы первая строка в первом наборе функций, а не вторая строка. Исследователь данных должен убедиться, что он не включил в свой обучающий набор данные, которые произошли после времени прогнозирования.

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

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

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

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

КАК Функциональность SQL — простой случай

Самое простое решение для создания правильных обучающих наборов на определенный момент времени — это использование функции путешествия во времени. Многие базы данных и озера данных позволяют выполнять запросы в какой-то момент в прошлом, и вы можете просто выполнять запросы в момент, когда были сделаны прогнозы. Это решение работает, если прогнозы всегда делаются в определенное время, например, каждое утро, но оно не работает, если прогнозы делаются в колеблющееся время. Нецелесообразно иметь отдельный запрос AS OF для каждой строки обучающих данных.

Магазин функций временных рядов

Магазины функций были созданы в значительной степени для решения проблемы корректности на определенный момент времени. Учитывая отметку времени для каждого прогноза, хранилище признаков автоматически создаст обучающий набор только из тех признаков, которые были доступны на тот момент. Используя Feature Store, вы можете создавать обучающие наборы, не дожидаясь регистрации новых данных и не требуя прогнозов с предсказуемыми интервалами. По сравнению с ручной регистрацией длинных списков значений функций, хранилища функций требуют всего несколько строк кода.

Как все это работает? Существует несколько архитектур Feature Store, но один из методов заключается в создании Feature Store с использованием гибридной (HTAP) базы данных SQL, которая может выполнять как быстрый поиск, так и сложную аналитику. База данных HTAP имеет два внутренних механизма выполнения: один для операционных рабочих нагрузок для поиска и обновления с малой задержкой и один для аналитических рабочих нагрузок. Оптимизатор базы данных на основе стоимости автоматически выбирает механизм выполнения, динамически оценивая план запроса, и поддерживает согласованность между этими механизмами.

При таком подходе каждый набор признаков или группа признаков хранится в базе данных в виде двух таблиц: одна таблица с самыми последними значениями любого заданного признака, а другая — со значениями признаков истории временных рядов в базе данных. мимо. Используя эту историческую таблицу значений функций, Feature Store может легко автоматически создать обучающий набор с помощью простого API.

Важно отметить, что не все хранилища функций решают проблему корректности на определенный момент времени для специалистов по данным. Некоторые хранилища функций не имеют механизма для представления метки времени обучающей метки и обучающих наборов в своих функциях create_training_set. В этих подходах к Feature Store сложность объединения разрозненных и асинхронных временных меток согласованным и правильным способом возлагается на пользователя.

Показанная выше функция автоматически генерирует этот сложный SQL-запрос с несколькими соединениями и подзапросами. В этом случае объединяются три набора признаков, но обучающий набор может быть создан из произвольного количества наборов признаков. Без хранилища функций временных рядов специалисту по данным пришлось бы вручную писать функции для управления этими отдельными моментами времени.

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

Чтобы узнать больше о том, как Feature Stores могут помочь предотвратить утечку данных, и увидеть уникальные преимущества Feature Store, построенного на основе базы данных HTAP, ознакомьтесь с этой практической демонстрацией, где я покажу вам, как использовать Feature Store Splice Machine.