Важность хранилищ данных и аналитики, выполняемой на платформах хранилищ данных, с годами неуклонно растет, и многие предприятия начинают полагаться на эти системы как на критически важные как для краткосрочного принятия оперативных решений, так и для долгосрочного стратегического планирования. Традиционно хранилища данных обновляются пакетными циклами, например, ежемесячно, еженедельно или ежедневно, чтобы предприятия могли извлекать из них различную информацию.
Многие организации осознают, что прием данных в режиме, близком к реальному времени, наряду с расширенной аналитикой открывает новые возможности. Например, финансовый институт может предсказать, является ли транзакция по кредитной карте мошеннической, запустив программу обнаружения аномалий в режиме, близком к реальному времени, а не в пакетном режиме.
В этом посте мы покажем, как Амазонка Redshift может предоставлять прогнозы потоковой передачи и машинного обучения (ML) на одной платформе.
Amazon Redshift — это быстрое, масштабируемое, безопасное и полностью управляемое облачное хранилище данных, которое позволяет просто и экономично анализировать все ваши данные с помощью стандартного SQL.
Amazon Redshift ML позволяет аналитикам данных и разработчикам баз данных легко создавать, обучать и применять модели машинного обучения с помощью знакомых команд SQL в хранилищах данных Amazon Redshift.
Мы рады запустить Прием потоковой передачи Amazon Redshift для Потоки данных Amazon Kinesis и Amazon Managed Streaming для Apache Kafka (Amazon MSK), который позволяет получать данные непосредственно из потока данных Kinesis или раздела Kafka без необходимости промежуточного хранения данных в Простой сервис хранения Amazon (Амазон С3). Прием потоковой передачи Amazon Redshift позволяет снизить задержку порядка нескольких секунд при приеме сотен мегабайт данных в хранилище данных.
В этом посте показано, как Amazon Redshift, облачное хранилище данных, позволяет создавать прогнозы машинного обучения почти в реальном времени с помощью потоковой загрузки Amazon Redshift и функций машинного обучения Redshift на знакомом языке SQL.
Обзор решения
Следуя шагам, описанным в этом посте, вы сможете настроить приложение продюсера-стримера на Эластичное вычислительное облако Amazon (Amazon EC2), который имитирует транзакции по кредитным картам и отправляет данные в Kinesis Data Streams в режиме реального времени. Вы настраиваете материализованное представление Amazon Redshift Streaming Ingestion в Amazon Redshift, куда поступают потоковые данные. Вы обучаете и создаете модель машинного обучения Redshift для создания выводов в реальном времени на основе потоковых данных.
Следующая диаграмма иллюстрирует архитектуру и поток процессов.
Пошаговый процесс выглядит следующим образом:
- Экземпляр EC2 имитирует приложение для транзакций по кредитным картам, которое вставляет транзакции по кредитным картам в поток данных Kinesis.
- Поток данных хранит данные о входящих транзакциях по кредитным картам.
- Поверх потока данных создается материализованное представление Amazon Redshift Streaming Ingestion, которое автоматически загружает потоковые данные в Amazon Redshift.
- Вы создаете, обучаете и развертываете модель машинного обучения с помощью Redshift ML. Модель Redshift ML обучается с использованием исторических данных о транзакциях.
- Вы преобразовываете потоковые данные и генерируете прогнозы машинного обучения.
- Вы можете предупредить клиентов или обновить приложение, чтобы снизить риск.
В этом пошаговом руководстве используются данные потоковой передачи транзакций по кредитным картам. Данные о транзакциях по кредитной карте являются фиктивными и основаны на имитатор. Набор данных о клиентах также является фиктивным и генерируется с помощью некоторых функций случайных данных.
Предпосылки
- Создайте кластер Amazon Redshift.
- Настройте кластер для использования Redshift ML.
- Создавай an Управление идентификацией и доступом AWS (IAM) пользователь.
- Обновите роль IAM, прикрепленную к кластеру Redshift, чтобы включить разрешения на доступ к потоку данных Kinesis. Дополнительные сведения о необходимой политике см. Начало работы с потоковой передачей.
- Создайте экземпляр m5.4xlarge EC2.. Мы протестировали приложение Producer с инстансом m5.4xlarge, но вы можете использовать другой тип инстанса. При создании экземпляра используйте amzn2-ami-kernel-5.10-hvm-2.0.20220426.0-x86_64-gp2 АМИ.
- Чтобы убедиться, что Python3 установлен в экземпляре EC2, выполните следующую команду, чтобы проверить версию Python (обратите внимание, что скрипт извлечения данных работает только на Python 3):
- Установите следующие зависимые пакеты для запуска программы-симулятора:
- Настройте Amazon EC2, используя переменные, такие как учетные данные AWS, сгенерированные для пользователя IAM, созданного на шаге 3 выше. На следующем снимке экрана показан пример использования aws настроить.
Настройка потоков данных Kinesis
Amazon Kinesis Data Streams — это масштабируемый и надежный сервис потоковой передачи данных в режиме реального времени. Он может непрерывно собирать гигабайты данных в секунду из сотен тысяч источников, таких как потоки посещений веб-сайтов, потоки событий базы данных, финансовые транзакции, каналы социальных сетей, ИТ-журналы и события отслеживания местоположения. Собранные данные доступны за миллисекунды, что позволяет использовать варианты использования аналитики в реальном времени, такие как информационные панели в реальном времени, обнаружение аномалий в реальном времени, динамическое ценообразование и многое другое. Мы используем Kinesis Data Streams, потому что это бессерверное решение, которое можно масштабировать в зависимости от использования.
Создание потока данных Kinesis
Во-первых, вам нужно создать поток данных Kinesis для получения потоковых данных:
- На консоли Amazon Kinesis выберите Потоки данных в навигационной панели.
- Выберите Создать поток данных.
- Что касается Имя потока данных, войти
cust-payment-txn-stream
. - Что касается Режим емкости, наведите на По требованию.
- Для остальных параметров выберите параметры по умолчанию и следуйте инструкциям, чтобы завершить настройку.
- Запишите ARN для созданного потока данных, чтобы использовать его в следующем разделе при определении политики IAM.
Настроить разрешения
Чтобы потоковое приложение могло записывать данные в Kinesis Data Streams, оно должно иметь доступ к Kinesis. Вы можете использовать следующий оператор политики, чтобы предоставить процессу симулятора, который вы настроили в следующем разделе, доступ к потоку данных. Используйте ARN потока данных, который вы сохранили на предыдущем шаге.
Настройте производителя потока
Прежде чем мы сможем использовать потоковые данные в Amazon Redshift, нам нужен источник потоковых данных, который записывает данные в поток данных Kinesis. В этом посте используется специально созданный генератор данных и AWS SDK для Python (Boto3) для публикации данных в потоке данных. Инструкции по настройке см. Симулятор продюсера. Этот процесс симулятора публикует потоковые данные в потоке данных, созданном на предыдущем шаге (cust-payment-txn-stream
).
Настройте потребителя потока
В этом разделе рассказывается о настройке потребителя потока (представление приема потоковой передачи Amazon Redshift).
Amazon Redshift Streaming Ingestion обеспечивает высокоскоростную передачу потоковых данных из Kinesis Data Streams в материализованное представление Amazon Redshift. Вы можете настроить свой кластер Amazon Redshift для включения приема потоковой передачи и создания материализованного представления с автоматическим обновлением с помощью операторов SQL, как описано в разделе Создание материализованных представлений в Amazon Redshift. Процесс автоматического обновления материализованного представления будет принимать потоковые данные со скоростью сотни мегабайт данных в секунду из Kinesis Data Streams в Amazon Redshift. Это приводит к быстрому доступу к внешним данным, которые быстро обновляются.
После создания материализованного представления вы можете получить доступ к своим данным из потока данных с помощью SQL и упростить свои конвейеры данных, создав материализованные представления непосредственно поверх потока.
Выполните следующие действия, чтобы настроить материализованное представление потоковой передачи Amazon Redshift:
- В консоли IAM выберите политики на панели навигации.
- Выберите Создать политику.
- Создайте новую IAM-политику с именем
KinesisStreamPolicy
. Определение политики потоковой передачи см. Начало работы с потоковой передачей. - На панели навигации выберите роли.
- Выберите Создать роль.
- Выберите Сервис AWS , а затем выбрать Redshift и Redshift настраиваемые.
- Создайте новую роль с именем
redshift-streaming-role
и прикрепите политикуKinesisStreamPolicy
. - Создайте внешнюю схему для сопоставления с Kinesis Data Streams:
Теперь вы можете создать материализованное представление для использования данных потока. Вы можете использовать тип данных SUPER для хранения полезной нагрузки как есть в формате JSON или использовать функции Amazon Redshift JSON для анализа данных JSON по отдельным столбцам. В этом посте мы используем второй метод, потому что схема хорошо определена.
- Создайте материализованное представление потокового приема
cust_payment_tx_stream
. Указав AUTO REFRESH YES в следующем коде, вы можете включить автоматическое обновление представления приема потоковой передачи, что экономит время, избегая создания конвейеров данных:
Обратите внимание, что json_extract_path_text
имеет ограничение длины 64 КБ. Также from_varbye фильтрует записи размером более 65 КБ.
- Обновите данные.
Материализованное представление потоковой передачи Amazon Redshift автоматически обновляется Amazon Redshift. Таким образом, вам не нужно беспокоиться об устаревании данных. При автоматическом обновлении материализованного представления данные автоматически загружаются в Amazon Redshift по мере их появления в потоке. Если вы решите выполнить эту операцию вручную, используйте следующую команду:
- Теперь давайте запросим потоковое материализованное представление, чтобы увидеть примеры данных:
- Давайте проверим, сколько записей сейчас в потоковом представлении:
Теперь вы завершили настройку представления приема потоковой передачи Amazon Redshift, которое постоянно обновляется данными о входящих транзакциях по кредитным картам. В моей настройке я вижу, что около 67,000 XNUMX записей были загружены в потоковое представление в то время, когда я запускал свой запрос на выборку. Это число может быть другим для вас.
Красное смещение ML
С помощью Redshift ML вы можете использовать предварительно обученную модель машинного обучения или создать ее самостоятельно. Для получения дополнительной информации см. Использование машинного обучения в Amazon Redshift.
В этом посте мы обучаем и строим модель ML, используя исторический набор данных. Данные содержат tx_fraud
поле, которое помечает историческую транзакцию как мошенническую или нет. Мы строим контролируемую модель ML с помощью Redshift Auto ML, которая учится на этом наборе данных и прогнозирует входящие транзакции, когда они выполняются с помощью функций прогнозирования.
В следующих разделах мы покажем, как настроить исторический набор данных и данные о клиентах.
Загрузите исторический набор данных
В исторической таблице больше полей, чем в источнике потоковых данных. Эти поля содержат самые последние расходы клиента и оценку конечного риска, например, количество мошеннических транзакций, рассчитанное путем преобразования потоковых данных. Существуют также категориальные переменные, такие как транзакции в выходные дни или транзакции в ночное время.
Чтобы загрузить исторические данные, запустите команды с помощью Редактор запросов Amazon Redshift.
Создайте таблицу истории транзакций со следующим кодом. DDL также можно найти на GitHub.
Проверим, сколько транзакций загружено:
Проверьте ежемесячную тенденцию мошеннических и немошеннических транзакций:
Создание и загрузка данных о клиентах
Теперь мы создаем таблицу клиентов и загружаем данные, которые содержат адрес электронной почты и номер телефона клиента. Следующий код создает таблицу, загружает данные и производит выборку таблицы. Таблица DDL доступна на GitHub.
В наших тестовых данных около 5,000 клиентов. На следующем снимке экрана показаны примеры данных о клиентах.
Создайте модель машинного обучения
В нашей исторической таблице транзакций по картам есть данные за 6 месяцев, которые мы теперь используем для обучения и тестирования модели ML.
В качестве входных данных модель принимает следующие поля:
Мы получаем tx_fraud
как выход.
Мы разделяем эти данные на обучающие и тестовые наборы данных. Транзакции с 2022 по 04 относятся к тренировочному набору. Транзакции с 01 по 2022 используются для тестового набора.
Давайте создадим модель ML, используя знакомый SQL Оператор СОЗДАТЬ МОДЕЛЬ. Мы используем базовую форму команды Redshift ML. Следующий метод использует Amazon SageMaker Автопилот, который автоматически выполняет подготовку данных, разработку функций, выбор модели и обучение. Укажите имя корзины S3, содержащей код.
Я называю модель ML как Cust_cc_txn_fd
, а функция предсказания как fn_customer_cc_fd
. Предложение FROM показывает входные столбцы из исторической таблицы. public.cust_payment_tx_history
. Целевой параметр установлен на tx_fraud
, которая является целевой переменной, которую мы пытаемся предсказать. IAM_Role
установлено по умолчанию, поскольку кластер настроен с этой ролью; в противном случае необходимо указать роль IAM кластера Amazon Redshift ARN. я установил max_runtime
до 3,600 секунд — это время, которое мы даем SageMaker для завершения процесса. Redshift ML развертывает лучшую модель, которая определена в этот период времени.
В зависимости от сложности модели и объема данных может потребоваться некоторое время, чтобы модель стала доступной. Если вы обнаружите, что выбор модели не завершен, увеличьте значение параметра max_runtime
. Вы можете установить максимальное значение 9999.
Команда CREATE MODEL запускается асинхронно, то есть в фоновом режиме. Вы можете использовать ПОКАЗАТЬ МОДЕЛЬ Команда, чтобы увидеть статус модели. Когда статус отображается как Готово, это означает, что модель обучена и развернута.
На следующих снимках экрана показан наш вывод.
Из вывода я вижу, что модель была правильно распознана как BinaryClassification
, и F1 был выбран в качестве цели. Счет F1 является показателем, который учитывает оба точность и отзыв. Он возвращает значение от 1 (идеальная точность и полнота) до 0 (минимально возможная оценка). В моем случае это 0.91. Чем выше значение, тем лучше производительность модели.
Давайте проверим эту модель с тестовым набором данных. Выполните следующую команду, которая извлекает выборочные прогнозы:
Мы видим, что некоторые значения совпадают, а некоторые нет. Давайте сравним предсказания с правдой:
Мы подтвердили, что модель работает и оценка F1 хорошая. Давайте перейдем к созданию прогнозов для потоковых данных.
Прогнозировать мошеннические транзакции
Поскольку модель Redshift ML готова к использованию, мы можем использовать ее для выполнения прогнозов против приема потоковых данных. В наборе исторических данных больше полей, чем в источнике потоковых данных, но это всего лишь метрики давности и частоты для клиента и конечного риска мошеннической транзакции.
Мы можем очень легко применять преобразования поверх потоковых данных, встраивая SQL в представления. Создайте первый взгляд, который объединяет потоковые данные на уровне клиента. Затем создайте второй взгляд, который объединяет потоковые данные на уровне терминала, и третий вид, который объединяет входящие данные о транзакциях с агрегированными данными о клиентах и терминалах и вызывает функцию прогнозирования в одном месте. Код для третьего представления выглядит следующим образом:
Запустите оператор SELECT для представления:
По мере многократного выполнения инструкции SELECT последние транзакции по кредитным картам претерпевают преобразования и прогнозы машинного обучения почти в реальном времени.
Это демонстрирует мощь Amazon Redshift — с помощью простых в использовании команд SQL вы можете преобразовывать потоковые данные, применяя сложные оконные функции, и применять модель машинного обучения для прогнозирования мошеннических транзакций за один шаг, без создания сложных конвейеров данных или построения и управления дополнительная инфраструктура.
Развернуть решение
Поскольку потоки данных и прогнозы машинного обучения выполняются почти в реальном времени, вы можете создавать бизнес-процессы для оповещения своих клиентов, используя Amazon Простая служба уведомлений (Amazon SNS), или вы можете заблокировать счет кредитной карты клиента в операционной системе.
В этом посте не рассматриваются подробности этих операций, но если вам интересно узнать больше о создании решений, управляемых событиями, с помощью Amazon Redshift, см. следующие материалы. Репозиторий GitHub.
Убирать
Чтобы избежать дополнительных расходов в будущем, удалите ресурсы, созданные в рамках этой публикации.
Заключение
В этом посте мы продемонстрировали, как настроить поток данных Kinesis, настроить производителя и опубликовать данные в потоках, а затем создать представление Amazon Redshift Streaming Ingestion и запросить данные в Amazon Redshift. После того, как данные были помещены в кластер Amazon Redshift, мы продемонстрировали, как обучать модель машинного обучения, создавать функцию прогнозирования и применять ее к потоковым данным для создания прогнозов практически в реальном времени.
Если у вас есть какие-либо отзывы или вопросы, пожалуйста, оставьте их в комментариях.
Об авторах
Бхану Питтампалли является специалистом по аналитике, архитектором решений из Далласа. Специализируется на построении аналитических решений. Его опыт связан с хранилищами данных — архитектурой, разработкой и администрированием. Он работает в сфере данных и аналитики более 15 лет.
Правин Кадипиконда является старшим специалистом по аналитике, архитектором решений в AWS из Далласа. Он помогает клиентам создавать эффективные, производительные и масштабируемые аналитические решения. Он работал над созданием баз данных и решений для хранилищ данных более 15 лет.
Ритеш Кумар Синха является специалистом по аналитике, архитектором решений из Сан-Франциско. Более 16 лет он помогает клиентам создавать масштабируемые хранилища данных и решения для больших данных. Ему нравится проектировать и создавать эффективные комплексные решения на AWS. В свободное время он любит читать, гулять и заниматься йогой.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Источник: https://aws.amazon.com/blogs/big-data/near-real-time-fraud-detection-using-amazon-redshift-streaming-ingestion-with-amazon-kinesis-data-streams-and-amazon-redshift-ml/
- 000
- 000 клиентов
- 1
- 10
- 100
- 11
- 15 лет
- 67
- 7
- 9
- a
- в состоянии
- О нас
- выше
- доступ
- Учетная запись
- Достигать
- Действие
- дополнительный
- администрация
- продвинутый
- После
- против
- Оповещение
- Все
- позволяет
- Amazon
- Amazon EC2
- Амазонка Кинезис
- количество
- Аналитики
- аналитический
- аналитика
- анализировать
- и
- обнаружение аномалии
- апаш
- Применение
- Применить
- Применение
- архитектура
- около
- прикреплять
- автоматический
- Автоматический
- автоматически
- доступен
- избегающий
- AWS
- фон
- основанный
- основной
- , так как:
- становится
- ЛУЧШЕЕ
- Лучшая
- между
- большой
- Big Data
- приносить
- строить
- Строительство
- бизнес
- деловые процессы
- бизнес
- призывают
- под названием
- Объявления
- захватить
- карта
- случаев
- случаев
- персонаж
- расходы
- проверка
- Выберите
- Город
- облако
- Кластер
- код
- Колонки
- комбинаты
- приход
- Комментарии
- сравнить
- полный
- комплектующие
- комплекс
- сложность
- Вычисление
- считает
- Консоли
- потреблять
- потребитель
- содержит
- рентабельным
- может
- Создайте
- создали
- создает
- Создающий
- Полномочия
- кредит
- кредитная карта
- клиент
- данные клиентов
- Клиенты
- циклы
- ежедневно
- Dallas
- данным
- Подготовка данных
- информационное хранилище
- хранилища данных
- База данных
- базы данных
- Наборы данных
- Время
- Принятие решений
- По умолчанию
- определяющий
- доставить
- убивают
- зависимый
- развертывание
- развернуть
- развертывает
- описано
- Проект
- подробнее
- обнаружение
- застройщиков
- Разработка
- различный
- непосредственно
- не
- дело
- Dont
- Доу
- динамический
- легко
- Простой в использовании
- эффект
- эффективный
- включить
- позволяет
- впритык
- Проект и
- Enter
- Эфир (ETH)
- События
- События
- пример
- возбужденный
- и, что лучший способ
- добыча
- f1
- знакомый
- БЫСТРО
- Особенность
- Особенности
- Обратная связь
- поле
- Поля
- фильтры
- финансовый
- Найдите
- Флаги
- поток
- следовать
- после
- следующим образом
- форма
- формат
- найденный
- КАДР
- Франциско
- мошенничество
- обнаружение мошенничества
- Бесплатно
- частота
- от
- полностью
- функция
- Функции
- будущее
- порождать
- генерируется
- порождающий
- генератор
- получить
- Дайте
- Go
- хорошо
- предоставлять
- земля
- группы
- имеющий
- помог
- помогает
- высший
- Выделите
- исторический
- история
- Как
- How To
- HTML
- HTTPS
- Сотни
- IAM
- идентифицированный
- Личность
- значение
- in
- включают
- Входящий
- Увеличение
- повышение
- individual
- информация
- Инфраструктура
- вход
- Вставки
- размышления
- устанавливать
- пример
- Институт
- инструкции
- заинтересованный
- IT
- присоединиться
- JSON
- Кафка
- Потоки данных Kinesis
- язык
- больше
- Задержка
- последний
- запуск
- изучение
- Оставлять
- Длина
- уровень
- ОГРАНИЧЕНИЯ
- ограничение
- загрузка
- грузы
- долгосрочный
- Низкий
- машина
- обучение с помощью машины
- сделанный
- сделать
- ДЕЛАЕТ
- управляемого
- управления
- вручную
- многих
- карта
- массивно
- согласование
- Matplotlib
- Макс
- означает
- Медиа
- метод
- метрический
- Метрика
- смягчать
- ML
- режим
- модель
- Модели
- ежемесячно
- месяцев
- БОЛЕЕ
- самых
- двигаться
- имя
- Навигация
- Необходимость
- потребности
- Новые
- следующий
- уведомление
- номер
- NumPy
- цель
- ONE
- Откроется
- операция
- оперативный
- Операционный отдел
- Возможности
- Опции
- заказ
- организации
- Другие контрактные услуги
- изложенные
- пакеты
- панд
- хлеб
- параметр
- часть
- ИДЕАЛЬНОЕ
- выполнять
- производительность
- выполняет
- Разрешения
- Телефон
- Часть
- планирование
- Платформа
- Платформы
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- пожалуйста
- сборах
- политика
- возможное
- После
- мощностью
- Точность
- предсказывать
- прогноз
- Predictions
- предсказывает
- предыдущий
- цены
- процесс
- Процессы
- производитель
- FitPartner™
- обеспечивать
- приводит
- что такое варган?
- публиковать
- Питон
- Вопросы
- быстро
- случайный
- Reading
- готовый
- реальные
- реального времени
- данные в реальном времени
- понимая,
- Получать
- получила
- последний
- признанный
- учет
- НЕОДНОКРАТНО
- замещать
- обязательный
- ресурс
- Полезные ресурсы
- ОТДЫХ
- Итоги
- Возвращает
- Снижение
- Роли
- Run
- Бег
- sagemaker
- Сан -
- Сан-Франциско
- масштабируемые
- Шкала
- скриншоты
- SDK
- рожденное море
- Во-вторых
- секунды
- Раздел
- разделах
- безопасный
- выбранный
- выбор
- Serverless
- обслуживание
- набор
- установка
- настройки
- установка
- краткосрочный
- показывать
- Шоу
- просто
- упростить
- имитатор
- So
- Соцсети
- социальные сети
- Решение
- Решения
- некоторые
- Источник
- Источники
- специалист
- специализируется
- тратить
- раскол
- SQL
- Этап
- стандарт
- и политические лидеры
- Область
- заявление
- отчетность
- Статус:
- Шаг
- Шаги
- диск
- магазин
- магазины
- Стратегический
- поток
- потоковый
- потоковая служба
- потоки
- такие
- супер
- система
- системы
- ТАБЛИЦЫ
- взять
- принимает
- переговоры
- цель
- Терминал
- тестXNUMX
- Ассоциация
- В третьих
- тысячи
- Через
- время
- отметка времени
- в
- топ
- тема
- Традиционно
- Train
- специалистов
- Обучение
- сделка
- транзакционный
- Сделки
- Transform
- преобразований
- превращение
- тенденция
- Обновление ПО
- обновление
- Применение
- использование
- Информация о пользователе
- подтверждено
- ценностное
- Наши ценности
- различный
- правдивость
- версия
- Вид
- Просмотры
- ходьба
- прохождение
- Склады
- Складирование
- Вебсайт
- уик-энд
- еженедельно
- Что
- который
- в то время как
- Википедия.
- будете
- без
- работавший
- работает
- работает
- записывать
- лет
- Йога
- ВАШЕ
- зефирнет