Амазонка Redshift — это самое быстрое, наиболее широко используемое, полностью управляемое облачное хранилище данных объемом в петабайты. Десятки тысяч клиентов используют Amazon Redshift для ежедневной обработки эксабайтов данных, чтобы повысить эффективность своих аналитических рабочих нагрузок. Amazon Redshift ML, питаться от Создатель мудреца Амазонки, позволяет пользователям SQL, таким как аналитики данных, специалисты по данным и разработчики баз данных, создавать, обучать и развертывать модели машинного обучения (ML) с помощью знакомых команд SQL, а затем использовать эти модели для прогнозирования новых данных для таких случаев использования, как как прогнозирование оттока, прогнозирование ценности жизни клиента и рекомендации по продукту. Redshift ML делает модель доступной в виде функции SQL в хранилище данных Amazon Redshift, чтобы вы могли легко использовать ее в запросах и отчетах. Клиенты во всех вертикалях используют Redshift ML, чтобы лучше анализировать свои данные. Например, Jobcase использует Redshift ML для рекомендовать поиск работы в масштабе. Magellan RX Management использует Redshift ML для предсказывать условия терапевтического применения лекарств.
Amazon Redshift поддерживает контролируемое обучение, в том числе регресс, бинарная классификация, многоклассовая классификацияи неконтролируемое обучение с использованием K-средних. При желании вы можете указать XGBoost, MLP, а теперь и линейные типы моделей учащегося, которые представляют собой контролируемые алгоритмы обучения, используемые для решения задач классификации или регрессии и обеспечивающие значительное увеличение скорости по сравнению с традиционными методами оптимизации гиперпараметров. Amazon Redshift также поддерживает принеси свою собственную модель для вызова удаленных конечных точек SageMaker.
В этом посте мы покажем вам, как использовать Redshift ML для решения задач регрессии и классификации с помощью Алгоритм линейного обучения SageMaker, который исследует различные цели обучения и выбирает лучшее решение из проверочного набора.
Обзор решения
Сначала мы решаем задачу линейной регрессии, а затем задачу классификации нескольких классов.
В следующей таблице показаны некоторые распространенные варианты использования и используемые алгоритмы.
Кейсы | Алгоритм / Тип проблемы |
Прогноз оттока клиентов | классификация |
Предсказать, закроется ли потенциал продаж | классификация |
Обнаружение мошенничества | классификация |
Прогноз цены и дохода | Линейная регрессия |
Прогнозирование пожизненной ценности клиента | Линейная регрессия |
Чтобы использовать алгоритм линейного обучения, вам необходимо предоставить входные данные или столбцы, представляющие размерные значения, а также метку или цель, то есть значение, которое вы пытаетесь предсказать. Алгоритм линейного обучения параллельно обучает множество моделей и автоматически определяет наиболее оптимизированную модель.
Предпосылки
Для начала нам понадобится кластер Amazon Redshift или Amazon Redshift без сервера конечная точка и Управление идентификацией и доступом AWS (IAM) прикрепленная роль, которая обеспечивает доступ к SageMaker и разрешения для Простой сервис хранения Amazon (Amazon S3) ведро.
Введение в Redshift ML и инструкции по его настройке см. Создание, обучение и развертывание моделей машинного обучения в Amazon Redshift с помощью SQL с Amazon Redshift ML.
Чтобы создать простой кластер с ролью IAM по умолчанию, см. Используйте роль IAM по умолчанию в Amazon Redshift, чтобы упростить доступ к другим сервисам AWS..
Вариант использования 1: линейная регрессия
В этом случае мы анализируем Набор данных Abalone и определить взаимосвязь между физическими измерениями и использовать это для определения возраста морского ушка. Возраст морского ушка определяют, разрезая раковину через конус, окрашивая ее и подсчитывая количество колец под микроскопом, что является трудоемкой задачей. Мы хотим предсказать возраст, используя различные физические измерения, которые легче измерить. Возраст морского ушка составляет (количество колец + 1.5) года.
Подготовьте данные
Загрузите набор данных Abalone в Amazon Redshift, используя следующий SQL. Вы можете использовать Редактор запросов Amazon Redshift v2 или ваш предпочтительный инструмент SQL для запуска этих команд.
Для создания таблицы используйте следующие команды:
Чтобы загрузить данные в Amazon Redshift, используйте следующую команду COPY:
Для обучения модели используем abalone
таблицу и 80 % данных для обучения модели, а затем проверьте точность этой модели, проверив, правильно ли она предсказывает возраст атрибута метки кольца на оставшихся 20 % данных. Выполните следующую команду, чтобы создать обучающие и проверочные таблицы:
Создайте модель в Redshift ML
Чтобы создать модель в Amazon Redshift, используйте следующую команду:
Мы определяем следующие параметры в операторе CREATE MODEL:
- Тип проблемы - Мы используем линейный тип задачи обучения, который был недавно добавлен для расширения типичных линейных моделей путем параллельного обучения многих моделей эффективным с вычислительной точки зрения способом.
- Цель – Мы указали MSE (среднеквадратическую ошибку) в качестве нашей цели, которая является общей метрикой для оценки проблем регрессии.
- Максимальное время работы – Этот параметр указывает, как долго может продолжаться обучение модели. Указание большего значения может помочь создать лучшую настроенную модель. Значение по умолчанию для этого параметра — 5400 (90 минут). Для этого примера мы установили его на 15000.
Выполнение предыдущего оператора занимает несколько секунд. Он инициирует Amazon SageMaker Автопилот процесс в фоновом режиме для автоматического создания, обучения и настройки лучшей модели машинного обучения для входных данных. Затем он использует Amazon SageMaker Neo для локального развертывания этой модели в кластере Amazon Redshift или Amazon Redshift Serverless в качестве определяемой пользователем функции (UDF). Вы можете использовать ПОКАЗАТЬ МОДЕЛЬ в Amazon Redshift для отслеживания хода создания модели, которая должна находиться в состоянии READY в течение max_runtime
параметр, который вы определили при создании модели.
Чтобы проверить состояние модели, используйте следующую команду:
Ниже приведен табличный результат для предыдущей команды после завершения обучения модели. Обучение модели заняло около 120 минут.
Основные | Значение |
Название модели | model_abalone_ring_prediction |
Имя схемы | что такое варган? |
Владелец | awsuser |
Время создания | Вт, 10.05.2022 19:42:33 |
Состояние модели | ГОТОВ |
проверка: mse | 4.082088 |
Ориентировочная стоимость | 5.423719 |
. | . |
ДАННЫЕ ДЛЯ ОБУЧЕНИЯ: | . |
запрос | ВЫБЕРИТЕ ПОЛ , ДЛИНУ , ДИАМЕТР , ВЫСОТУ , ЦЕЛЫЙ , ОТШЛУШЕННЫЙ , ВИСЦЕРА , ОБОЛОЧКУ, КОЛЬЦА КАК TARGET_LABEL |
. | ОТ ABALONE_TRAINING |
Целевой столбец | TARGET_LABEL |
. | . |
ПАРАМЕТРЫ: | . |
Тип модели | линейный_обучающийся |
Тип проблемы | Регрессия |
Цель | MSE |
Имя задания AutoML | красное смещениеml-20220510194233380173 |
Имя функции | f_abalone_ring_prediction |
Параметры функции | пол длина диаметр высота целые очищенные внутренности скорлупа |
Типы функциональных параметров | bpchar float8 float8 float8 float8 float8 float8 float8 |
Роль IAM | роль по умолчанию aws-iam |
Ведро S3 | POC-общий-БКТ |
Максимальное время работы | 15000 |
Проверка модели
Из предыдущей таблицы видно, что MSE для обучающих данных составляет 4.08. Теперь давайте запустим прогнозный запрос и проверим точность модели в наборе данных для тестирования и проверки:
Ниже приводится результат запроса:
MSE | среднеквадратичное значение |
5.08 | 2.25 |
Значение MSE из результатов предыдущего запроса указывает на то, что наша модель достаточно точна для фактических значений из нашего набора данных проверки.
Мы также можем заметить, что Redshift ML может определить правильную комбинацию функций для создания пригодной для использования модели прогнозирования. Мы можем дополнительно проверить влияние каждого атрибута, его вклад и вес при выборе модели, используя следующую команду:
Ниже приводится результат, где вес каждого атрибута представляет его роль в принятии решений модели:
Вариант использования 2: классификация по нескольким классам
Для этого варианта использования мы используем Набор данных типа обложки (авторские права Джока А. Блэкарда и Университета штата Колорадо), который содержит информацию, собранную Геологической службой США и Лесной службой США о дикой природе на севере Колорадо. Это было загружено в корзину S3, чтобы упростить создание модели. Вы можете загрузить описание набора данных. Этот набор данных содержит различные измерения, такие как высота над уровнем моря, расстояние до водоемов и дорог, а также обозначение дикой природы и тип почвы. Наша задача машинного обучения — создать модель для прогнозирования типа покрытия для данной области.
Подготовьте данные
Чтобы подготовить данные для этой модели, вам необходимо создать и заполнить таблицу public.covertype_data
в Amazon Redshift с использованием набора данных Covertype. Вы можете использовать следующий SQL в Редактор запросов Amazon Redshift v2 или предпочитаемый инструмент SQL:
Теперь, когда наш набор данных загружен, мы запускаем следующие операторы SQL, чтобы разделить данные на три набора для обучения (80%), проверки (10%) и прогнозирования (10%). Обратите внимание, что Redshift ML Autopilot автоматически разделяет данные на данные для обучения и проверки, но, разделив их здесь, вы сможете проверить точность своей модели.
Чтобы подготовить набор данных, назначьте случайные значения для разделения данных:
Используйте следующий код для обучающего набора:
Используйте следующий код для набора проверки:
Используйте следующий код для тестового набора:
Теперь, когда у нас есть наборы данных, пришло время создать модель.
Создайте модель в Redshift ML с помощью линейного обучаемого
Запустите следующую команду SQL, чтобы создать свою модель — обратите внимание, что наша цель cover_type
и мы используем все входные данные из нашего обучающего набора:
Вы можете использовать команду SHOW MODEL для просмотра состояния модели.
Вы можете видеть, что модель имеет показатель точности 730279 и находится в состоянии ГОТОВО. Теперь давайте запустим запрос, чтобы выполнить некоторую собственную проверку.
Проверка модели
Запустите следующий SQL-запрос к таблице проверки, используя функцию, созданную нашей моделью:
Вы можете видеть, что наша точность очень близка к нашей оценке из выходных данных SHOW MODEL.
Запустить прогнозный запрос
Давайте запустим прогнозный запрос в Amazon Redshift ML, используя нашу функцию для нашего тестового набора данных, чтобы увидеть наиболее распространенный класс типа укрытия для дикой природы Неота. Мы можем обозначить это, проверив wildnerness_area2
на значение 1.
Набор данных включает в себя следующие области дикой природы:
- Район дикой природы Рава
- Район дикой природы Неота
- Зона дикой природы пика команчей
- Заповедник Каш-ла-Пудр
Типы покрытия делятся на семь различных классов:
- Ель/Пихта
- Lodgepole Pine
- Сосна желтая
- Коттонвуд/Ива
- Aspen
- Douglas Fir
- Круммхольц
Существует также 40 различных определений типа почвы, которые вы можете увидеть в описании набора данных, со значением 0 или 1, чтобы отметить, применимо ли оно к конкретной строке. Вот несколько примеров типов почвы:
- Соборная семья – комплекс выходов горных пород, чрезвычайно каменистый
- Семьи Ванет-Ратакэ – Скальный комплекс обнажения, очень каменистый
- Семья гаплоборолисов – Скальный комплекс обнажений, щебень
- Семья Ратакэ – Скальный комплекс обнажений, щебень
- Семья Ванет – Скальный комплекс обнажений, щебень
- Семьи Ванет-Ветмор – Скальный комплекс обнажения, каменистый
Наша модель предсказала, что большую часть покрытия составляют ели и пихты.
Вы можете поэкспериментировать с различными комбинациями, например, определить, какие типы почв наиболее вероятны в прогнозируемом типе покрытия.
Заключение
Redshift ML позволяет пользователям любого уровня легко создавать, обучать и настраивать модели с помощью интерфейса SQL. В этом посте мы рассказали вам, как использовать алгоритм линейного обучения для создания моделей регрессии и классификации с несколькими классами. Затем вы можете использовать эти модели для прогнозирования с помощью простых команд SQL и получения ценной информации.
Чтобы узнать больше о RedShift ML, посетите Amazon Redshift ML.
Об авторах
Фил Бейтс является старшим специалистом по аналитике и архитектором решений в AWS с более чем 25-летним опытом работы с хранилищами данных.
Сохаиб Катаривала является специалистом по аналитике, архитектором решений в AWS. Он имеет более чем 12-летний опыт оказания помощи организациям в извлечении информации из их данных.
Тахир Азиз является архитектором аналитических решений в AWS. Он работал над созданием хранилищ данных и решений для больших данных более 13 лет. Ему нравится помогать клиентам разрабатывать комплексные аналитические решения на AWS. Помимо работы любит путешествовать и готовить.
Цзяюань Чен является старшим инженером по разработке программного обеспечения в AWS. Он увлечен проектированием и созданием приложений, интенсивно использующих данные, и работал в областях озера данных, механизма запросов, приема и аналитики. Он идет в ногу с новейшими технологиями и изобретает вещи, которые вызывают радость.
Дебу Панда является старшим менеджером по управлению продуктами в AWS, является лидером отрасли в области аналитики, платформ приложений и технологий баз данных и имеет более чем 25-летний опыт работы в мире ИТ. Дебу опубликовал множество статей по аналитике, корпоративной Java и базам данных и выступал на нескольких конференциях, таких как re:Invent, Oracle Open World и Java One. Он является ведущим автором EJB 3 в действии (Manning Publications 2007, 2014) и Middleware Management (Packt).