Магазин функцій Amazon SageMaker це спеціально створений сервіс для зберігання та отримання даних про функції для використання моделями машинного навчання (ML). Feature Store надає онлайн-сховище з низькою затримкою та високою пропускною здатністю читання та запису, а також офлайн-сховище, яке надає масовий доступ до всіх даних історичних записів. Feature Store забезпечує синхронізацію даних між онлайн- і офлайн-магазинами.
Оскільки розробка моделі є повторюваним процесом, клієнти часто надсилають запити до офлайн-магазину та створюють різні набори даних для навчання моделі. Наразі існує кілька способів доступу до функцій офлайн-сховища, включаючи виконання запитів SQL за допомогою Амазонка Афіна або за допомогою Spark SQL в Apache Spark. Однак ці шаблони вимагають написання спеціальних (і іноді складних) інструкцій SQL, що не завжди підходить для спеціаліста з обробки даних.
Магазин функцій нещодавно продовжено SageMaker Python SDK, щоб полегшити створення наборів даних із офлайн-сховища. У цьому випуску ви можете використовувати новий набір методів у SDK для створення наборів даних без написання запитів SQL. Ці нові методи підтримують такі звичайні операції, як подорожі в часі, фільтрування дублікатів записів і об’єднання кількох груп функцій, забезпечуючи при цьому точність на певний момент часу.
У цій публікації ми демонструємо, як використовувати SageMaker Python SDK для створення наборів даних, готових до ML, без написання будь-яких операторів SQL.
Огляд рішення
Щоб продемонструвати нову функціональність, ми працюємо з двома наборами даних: потенційні клієнти та показники веб-маркетингу. Ці набори даних можна використовувати для побудови моделі, яка передбачає, чи потенційний клієнт перетвориться на продаж, враховуючи маркетингову діяльність і показники, отримані для цього потенційного клієнта.
Дані потенційних клієнтів містять інформацію про потенційних клієнтів, ідентифікованих за допомогою Lead_ProspectID
. Функції для ліда (наприклад, LeadSource
) можна оновлювати з часом, що призводить до створення нового запису для цього потенційного клієнта. The Lead_EventTime
позначає час, протягом якого створюється кожен запис. На наступному знімку екрана показано приклад цих даних.
Дані показників веб-маркетингу відстежують показники залучення потенційного клієнта, де кожен потенційний клієнт ідентифікується за допомогою Web_ProspectID
, Web_EventTime
позначає час створення запису. На відміну від групи функцій потенційних клієнтів, у цій групі властивостей існує лише один запис на потенційну клієнтську одиницю. На наступному знімку екрана показано приклад цих даних.
Ми пройдемося по ключових частинах sagemaker-feature-store-offline-sdk.ipynb
блокнот, який демонструє наступні кроки:
- Створіть набір даних із групи ознак.
- Приєднайтеся до кількох груп функцій.
- Створіть об’єднання на певний момент часу між групою об’єктів і набором даних на основі набору подій із певними часовими мітками.
- Отримати історію функцій за певний проміжок часу.
- Отримати функції за певною міткою часу.
Передумови
Вам потрібні наступні передумови:
Ми припускаємо, що групу функцій для даних потенційних клієнтів було створено з використанням наявних FeatureGroup.create
метод, і на нього можна посилатися за допомогою змінної base_fg
. Додаткову інформацію про групи функцій див Створення груп функцій.
Створіть набір даних із групи ознак
Щоб створити набір даних за допомогою SDK SageMaker, ми використовуємо новий FeatureStore
клас, який містить create_dataset
метод. Цей метод приймає базову групу функцій, яку можна об’єднати з іншими групами функцій або DataFrames. Ми починаємо з надання групи функцій потенційних клієнтів як основи та додатка Служба простого зберігання Amazon (Amazon S3) шлях для зберігання набору даних:
Команда create_dataset
метод повертає a DatasetBuilder
об’єкт, який можна використовувати для створення набору даних з однієї чи кількох груп ознак (що ми продемонструємо в наступному розділі). Щоб створити простий набір даних, що складається лише з характеристик відведень, ми викликаємо to_csv_file
метод. Це запускає запит в Athena для отримання функцій з офлайн-сховища та зберігає результати до вказаного шляху S3.
Приєднайтеся до кількох груп функцій
За допомогою SDK SageMaker ви можете легко об’єднати кілька груп функцій для створення набору даних. Ви також можете виконувати операції приєднання між існуючим Pandas DataFrame до однієї або кількох груп функцій. The базова група ознак є важливою концепцією для об’єднань. Базова група функцій — це група функцій, до якої приєднано інші групи функцій або Pandas DataFrame.
Під час створення набору даних за допомогою create_dataset
функцію, ми використовуємо with_feature_group
метод, який виконує внутрішнє об’єднання між базовою групою ознак та іншою групою функцій, використовуючи ідентифікатор запису та назву цільової функції в базовій групі функцій. У нашому прикладі основною групою функцій є група функцій потенційних клієнтів, а групою цільових функцій є група функцій веб-маркетингу. The with_feature_group
метод приймає такі аргументи:
- feature_group – Це група функцій, до якої ми приєднуємося. У нашому прикладі коду цільова група функцій створюється за допомогою набору даних веб-маркетингу.
- target_feature_name_in_base – Ім’я функції в базовій групі функцій, яку ми використовуємо як ключ у об’єднанні. Ми використовуємо
Lead_ProspectID
як ідентифікатор запису для базової групи ознак. - включені_імена_функцій – Це список імен функцій базової групи функцій. Ми використовуємо це поле, щоб вказати функції, які ми хочемо включити в набір даних.
У наступному коді показано приклад створення набору даних шляхом об’єднання базової групи ознак із цільовою групою ознак:
Ви можете розширити операції об’єднання, щоб включити кілька груп функцій, додавши with_feature_group
метод у кінці попереднього прикладу коду та визначення необхідних аргументів для нової групи функцій. Ви також можете виконувати операції об’єднання з існуючим DataFrame, визначивши базу як ваш існуючий Pandas DataFrame і об’єднавшись із зацікавленими групами функцій. У наступному прикладі коду показано, як створити набір даних за допомогою існуючого Pandas DataFrame та наявної групи функцій:
Більше прикладів щодо цих різних конфігурацій див Створіть набір даних зі своїх груп ознак.
Створіть об’єднання на певний момент часу
Однією з найпотужніших можливостей цього вдосконалення є виконання об’єднань на певний момент часу просто й без необхідності писати складний код SQL. Під час створення моделей машинного навчання науковцям із обробки даних слід уникати витоку даних або цільовий витік, який випадково використовує дані під час навчання моделі, які були б недоступні на момент передбачення. Наприклад, якщо ми намагаємося передбачити шахрайство з кредитною карткою, нам слід виключити транзакції, які надходять після шахрайського стягнення плати, яке ми намагаємось передбачити, інакше навчена модель може використати цю інформацію після шахрайства, щоб змінити модель, зробивши її узагальненою менш добре.
Для отримання точних даних об’єктів на певний момент часу потрібно надати сутність DataFrame, яка надає набір ідентифікаторів записів (або первинного ключа) і відповідні часи подій, які служать кінцевим часом для події. Цей механізм пошуку іноді називають подорожі в часі на рівні рядків, тому що це дозволяє застосовувати різні часові обмеження для кожного ключа рядка. Щоб виконати об’єднання на певний момент часу за допомогою SDK SageMaker, ми використовуємо Конструктор набору даних і надайте сутність DataFrame як базовий аргумент для конструктора.
У наступному коді ми створюємо просту сутність DataFrame із двома записами. Ми встановлюємо час події, який використовується для вказівки кінцевого часу, близько середини даних часового ряду (середина січня 2023 року):
Коли ми використовуємо point_in_time_accurate_join
функціональність з create_dataset
внутрішній запит виключає всі записи з часовими мітками, пізнішими за наданий час відсічення, повертаючи останні значення функції, які були б доступні на момент події:
Зауважте, що є лише два записи у DataFrame, які повертає об’єднання на певний момент часу. Це тому, що ми надіслали лише два ідентифікатори запису в сутності DataFrame, по одному для кожного Lead_ProspectID
ми хочемо отримати. Критерії моменту часу визначають, що час події запису (зберігається в Lead_Eventtime
поле) має містити значення, яке є меншим за час відключення.
Крім того, ми наказуємо запиту отримати лише останній запис, який відповідає цим критеріям, оскільки ми застосували with_number_of_recent_records_by_record_identifier
метод. При використанні в поєднанні з point_in_time_accurate_join
це дозволяє абоненту вказати, скільки записів повертати з тих, що відповідають критеріям об’єднання на певний момент часу.
Порівняйте результати об’єднання на певний момент часу з результатами запиту Athena
Щоб перевірити результат, який повертає SageMaker SDK point_in_time_accurate_join
ми порівнюємо його з результатом запиту Athena. Спочатку ми створюємо стандартний запит Athena за допомогою оператора SELECT, прив’язаного до певної таблиці, створеної середовищем виконання Feature Store. Цю назву таблиці можна знайти, посилаючись на table_name
після створення екземпляра athena_query
від FeatureGroup
API:
Запит Athena не містить жодної семантики з’єднання на певний момент часу, тому він повертає всі записи, які відповідають вказаному record_id
(Lead_ProspectID
).
Далі ми використовуємо бібліотеку Pandas для сортування результатів Athena за часом подій для легкого порівняння. Записи з часовими мітками пізніше часу подій, указаного в сутності DataFrame (наприклад, 2023-01-15T00:00:00Z
) подано до point_in_time_accurate_join
не відображаються в результатах на певний момент часу. Оскільки ми додатково вказали, що нам потрібен лише один запис із попереднього create_dataset
коду, ми отримуємо лише останній запис до часу відключення. Порівнюючи результати SageMaker SDK із результатами запиту Athena, ми бачимо, що функція об’єднання на певний момент часу повернула належні записи.
Таким чином, ми впевнені, що можемо використовувати SageMaker SDK для здійснення подорожі в часі на рівні рядків і уникнення витоку цілі. Крім того, ця можливість працює з кількома групами функцій, які можуть оновлюватися в абсолютно різні часові шкали.
Отримати історію функцій за певний проміжок часу
Ми також хочемо продемонструвати використання визначення вікна діапазону часу під час об’єднання груп ознак для формування набору даних. Часове вікно визначається за допомогою with_event_time_range
, який приймає два входи, starting_timestamp
та ending_timestamp
і повертає об’єкт конструктора набору даних. У нашому зразку коду ми встановили вікно часу отримання на 1 повний день з 2022-07-01 00:00:00
до 2022-07-02 00:00:00
.
У наведеному нижче коді показано, як створити набір даних із вказаним часовим вікном подій під час об’єднання базової групи ознак із цільовою групою функцій:
Ми також підтверджуємо різницю між розмірами набору даних, створеного за допомогою with_event_time_range
шляхом експорту до Pandas DataFrame за допомогою to_dataframe()
метод і відображення даних. Зверніть увагу, що набір результатів містить лише частину початкових 10,020 XNUMX записів, оскільки він отримує лише записи, event_time
знаходиться в межах 1 дня.
Отримати функції за певною міткою часу
Команда DatasetBuilder as_of
метод отримує функції з набору даних, які відповідають обмеженню на основі мітки часу, яке викликається надає як аргумент функції. Цей механізм корисний для таких сценаріїв, як повторний запуск експериментів із раніше зібраними даними, перевірка моделей часових рядів або створення набору даних із попереднього стану офлайн-сховища для цілей аудиту даних. Цю функцію іноді називають подорожжю в часі, оскільки вона фактично повертає сховище даних до попередньої дати та часу. Це часове обмеження також називають позначка часу відключення.
У нашому прикладі коду ми спочатку створюємо мітку часу завершення, читаючи write_time
значення для останнього запису, записаного до сховища функцій, записаного з put_record
. Потім ми надаємо цю мітку часу завершення DatasetBuilder
як аргумент до as_of
метод:
Важливо відзначити, що as_of
метод застосовує часове обмеження до внутрішнього write_time
поле, яке автоматично генерується Feature Store. The write_time
поле представляє фактичну позначку часу, коли запис записується в сховище даних. Це відрізняється від інших подібних методів point-in-time-accurate-join
та with_event_time_range
які використовують надані клієнтом event_time
поле як компаратор.
Прибирати
Обов’язково видаліть усі ресурси, створені в рамках цього прикладу, щоб уникнути поточних платежів. Це включає групи функцій і сегмент S3, що містить дані офлайн-магазину.
Досвід SageMaker Python SDK порівняно з написанням SQL
Нові методи в SageMaker Python SDK дозволяють швидко створювати набори даних і швидко переходити до етапу навчання протягом життєвого циклу ML. Щоб показати час і зусилля, які можна заощадити, давайте розглянемо випадок використання, коли нам потрібно об’єднати дві групи функцій, відновлюючи функції протягом визначеного періоду часу. На наступному малюнку порівнюються запити Python в офлайн-сховище функцій із SQL, який використовується для створення набору даних за запитом Python.
Як ви можете бачити, та сама операція об’єднання двох груп функцій вимагає створення довгого, складного SQL-запиту, тоді як її можна виконати, використовуючи лише with_feature_group
та with_event_time_range
у SageMaker Python SDK.
Висновок
Нові методи офлайн-зберігання в Python SageMaker SDK дозволяють запитувати ваші офлайн-функції без необхідності писати складні оператори SQL. Це забезпечує бездоганний досвід для клієнтів, які звикли писати код Python під час розробки моделі. Додаткову інформацію про групи функцій див Створіть набір даних зі своїх груп функцій та API магазину функцій: група функцій.
Повний приклад у цій публікації можна знайти в GitHub сховище. Спробуйте й повідомте нам свої відгуки в коментарях.
Про авторів
Пол Харгіс зосередив свої зусилля на машинному навчанні в кількох компаніях, включаючи AWS, Amazon і Hortonworks. Йому подобається створювати технологічні рішення та навчати людей, як їх використовувати. Пол любить допомагати клієнтам розширювати свої ініціативи машинного навчання для вирішення реальних проблем. До роботи в AWS він був провідним архітектором Amazon Exports and Expansions, допомагаючи amazon.com покращити досвід для міжнародних покупців.
Мечіт Гунгор є спеціалістом із розробки рішень AI/ML в AWS, який допомагає клієнтам проектувати та створювати рішення AI/ML у масштабі. Він охоплює широкий спектр випадків використання AI/ML для клієнтів телекомунікацій і наразі зосереджується на Generative AI, LLMs, а також навчанні та оптимізації висновків. Його часто можна зустріти в поході в пустелю або грати в настільні ігри з друзями у вільний час.
Тоні Чен є архітектором рішень машинного навчання в AWS, який допомагає клієнтам розробляти масштабовані та надійні можливості машинного навчання в хмарі. Як колишній фахівець із обробки даних та інженер з даних, він використовує свій досвід, щоб допомогти вирішити деякі з найскладніших проблем, з якими стикаються організації під час впровадження машинного навчання.
Совік Кумар Натх є архітектором рішень AI/ML з AWS. Він має великий досвід у наскрізному дизайні та рішеннях для машинного навчання; бізнес-аналітика в рамках фінансової, операційної та маркетингової аналітики; охорона здоров'я; ланцюг поставок; та IoT. Поза роботою Совік любить подорожувати та дивитися фільми.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- EVM Фінанси. Уніфікований інтерфейс для децентралізованих фінансів. Доступ тут.
- Quantum Media Group. ІЧ/ПР посилений. Доступ тут.
- PlatoAiStream. Web3 Data Intelligence. Розширення знань. Доступ тут.
- джерело: https://aws.amazon.com/blogs/machine-learning/build-machine-learning-ready-datasets-from-the-amazon-sagemaker-offline-feature-store-using-the-amazon-sagemaker-python-sdk/
- : має
- :є
- :де
- $UP
- 1
- 10
- 100
- 11
- 14
- 15%
- 16
- 2023
- 22
- 24
- 7
- 8
- a
- МЕНЮ
- Приймає
- доступ
- виконано
- точність
- точний
- через
- діяльності
- фактичний
- Ad
- додати
- Додатково
- після
- AI
- AI / ML
- ВСІ
- дозволяти
- дозволяє
- Також
- завжди
- Amazon
- Amazon SageMaker
- Amazon Web Services
- an
- аналітика
- та
- Інший
- будь-який
- Apache
- API
- Інтерфейси
- прикладної
- ЕСТЬ
- аргумент
- аргументація
- AS
- At
- аудит
- автоматично
- доступний
- уникнути
- AWS
- назад
- Backtesting
- база
- заснований
- BE
- оскільки
- було
- за
- між
- рада
- Настільні ігри
- будувати
- будівельник
- Створюємо
- бізнес
- by
- call
- гість
- CAN
- можливості
- здатний
- захоплений
- карта
- випадок
- випадків
- ланцюг
- складні
- заряд
- вантажі
- клас
- хмара
- код
- коментарі
- загальний
- Компанії
- порівняти
- порівняння
- порівняння
- повністю
- комплекс
- концепція
- довіра
- підтвердити
- зв'язок
- Складається
- містити
- містить
- конвертувати
- Відповідний
- може
- Обкладинки
- створювати
- створений
- створення
- кредит
- кредитна картка
- Критерії
- В даний час
- Клієнти
- дані
- вчений даних
- набори даних
- Дата
- дата, час
- день
- певний
- визначаючи
- демонструвати
- демонструє
- дизайн
- конструкцій
- розробка
- різниця
- різний
- показ
- Ні
- Не знаю
- під час
- кожен
- Раніше
- легше
- легко
- легко
- зусилля
- зусилля
- кінець
- кінець в кінець
- зачеплення
- інженер
- забезпечення
- суб'єкта
- епоха
- по суті
- Event
- Події
- досліджувати
- приклад
- Приклади
- існуючий
- Розширювати
- досвід
- Експерименти
- експорт
- продовжити
- обширний
- Великий досвід
- Face
- особливість
- риси
- FeatureStore
- зворотний зв'язок
- поле
- Рисунок
- філе
- фільтрація
- фінансовий
- Перший
- увагу
- фокусується
- після
- для
- форма
- Колишній
- знайдений
- фракція
- FRAME
- шахрайство
- шахрайський
- Безкоштовна
- часто
- друзі
- від
- Повний
- функція
- функціональність
- Крім того
- Games
- породжувати
- генерується
- генеративний
- Генеративний ШІ
- отримати
- Давати
- даний
- Group
- Групи
- Ручки
- Мати
- має
- he
- охорона здоров'я
- допомога
- допомогу
- його
- історичний
- історія
- Як
- How To
- Однак
- HTML
- HTTP
- HTTPS
- ідентифікований
- ідентифікатор
- ідентифікатори
- if
- імпорт
- важливо
- удосконалювати
- in
- включати
- includes
- У тому числі
- вказувати
- інформація
- ініціативи
- витрати
- екземпляр
- зацікавлений
- внутрішній
- Міжнародне покриття
- в
- КАТО
- IT
- приєднатися
- приєднався
- приєднання
- з'єднання
- JPG
- просто
- ключ
- Знати
- останній
- пізніше
- останній
- вести
- Веде за собою
- вивчення
- менше
- дозволяти
- Важіль
- важелі
- бібліотека
- Життєвий цикл
- як
- Сподобалося
- список
- розташування
- Довго
- машина
- навчання за допомогою машини
- зробити
- Робить
- багато
- Маркетинг
- матч
- Може..
- механізм
- Зустрічатися
- відповідає
- метод
- методика
- Метрика
- Середній
- ML
- модель
- Моделі
- більше
- найбільш
- рухатися
- кіно
- множинний
- повинен
- ім'я
- Імена
- Близько
- Необхідність
- Нові
- наступний
- ноутбук
- Зверніть увагу..
- об'єкт
- of
- offline
- часто
- on
- ONE
- постійний
- онлайн
- тільки
- операція
- оперативний
- операції
- оптимізація
- or
- організації
- оригінал
- Інше
- інакше
- наші
- вихід
- поза
- над
- панди
- частина
- частини
- проходити
- шлях
- моделі
- Пол
- Люди
- Виконувати
- виступає
- period
- plato
- Інформація про дані Платона
- PlatoData
- ігри
- пошта
- потужний
- передбачати
- прогноз
- Прогнози
- передумови
- попередній
- раніше
- первинний
- попередній
- проблеми
- процес
- правильний
- передбачуваний
- забезпечувати
- забезпечує
- забезпечення
- цілей
- Python
- запити
- швидко
- діапазон
- читання
- Реальний світ
- запис
- облік
- посилання
- називають
- звільнити
- представляє
- вимагати
- вимагається
- Вимагається
- ресурси
- результат
- результати
- повертати
- повернення
- Умови повернення
- міцний
- Роль
- рулонах
- ROW
- біг
- мудрець
- sale
- то ж
- масштабовані
- шкала
- сценарії
- вчений
- Вчені
- Sdk
- безшовні
- seconds
- розділ
- побачити
- семантика
- Серія
- служити
- обслуговування
- Послуги
- комплект
- установка
- установка
- кілька
- Повинен
- Показувати
- Шоу
- простий
- просто
- один
- розміри
- So
- рішення
- Рішення
- ВИРІШИТИ
- деякі
- Іскритися
- спеціаліст
- конкретний
- зазначений
- standard
- старт
- стан
- Заява
- заяви
- Крок
- заходи
- зберігання
- зберігати
- зберігати
- магазинів
- представлений
- такі
- підходящий
- поставляється
- поставка
- ланцюжка поставок
- підтримка
- синхронізація
- таблиця
- снасті
- Мета
- Навчання
- Технологія
- телекомунікації
- ніж
- Що
- Команда
- їх
- Їх
- потім
- Там.
- Ці
- це
- ті
- через
- Зв'язаний
- час
- Часовий ряд
- подорож у часі
- терміни
- times
- відмітка часу
- до
- Тоні
- навчений
- Навчання
- Transactions
- подорожувати
- Подорож
- намагатися
- два
- UNIX
- на відміну від
- до
- оновлений
- us
- використання
- використання випадку
- використовуваний
- використання
- значення
- Цінності
- різний
- перевірити
- vs
- хотіти
- було
- спостереження
- способи
- we
- Web
- веб-сервіси
- ДОБРЕ
- коли
- в той час як
- який
- в той час як
- ВООЗ
- чий
- широкий
- Широкий діапазон
- Вікіпедія
- волі
- з
- в
- без
- Work
- працює
- б
- запис
- лист
- письмовий
- Ти
- вашу
- зефірнет