Автоматическое создание модели машинного обучения

с помощью HAQM SageMaker Autopilot

HAQM SageMaker – это полностью управляемый сервис, который предоставляет каждому разработчику и специалисту по работе с данными возможность быстро создавать, обучать и развертывать модели машинного обучения (ML).

При прохождении этого учебного пособия вы автоматически создадите модели машинного обучения, не написав ни одной строчки кода. Работа будет выполняться с использованием HAQM SageMaker Autopilot, возможности автоматизации ML, которая позволяет автоматически создавать оптимальные модели машинного обучения для классификации и регрессии с сохранением полного контроля и прозрачности.

Из этого учебного пособия вы узнаете как выполнить следующие операции.

  1. Создать аккаунт AWS
  2. Настроить HAQM SageMaker Studio для получения доступа к HAQM SageMaker Autopilot
  3. Загрузить публичный пакет данных с помощью HAQM SageMaker Studio
  4. Создать обучающий эксперимент с помощью HAQM SageMaker Autopilot
  5. Изучить различные стадии обучающего эксперимента
  6. Выявить модель с наилучшими показателями из учебного эксперимента и выполнить ее развертывание
  7. Создавать прогнозы с помощью развернутой модели

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

Данные маркированы для вашего удобства, а в отдельном столбце набора данных указывается, зарегистрирован ли клиент для получения банковского продукта. Версия этого набора данных находится в открытом доступе в репозитории машинного обучения, курируемом Калифорнийским университетом в Ирвайне.
Подробнее об этом учебном пособии
Время 10 минут                                           
Стоимость Менее 10 USD
Пример использования Machine Learning
Продукты HAQM SageMaker
Аудитория Разработчик
Уровень Начинающий
Последнее обновление 12 мая 2020 г.

Шаг 1. Создание аккаунта AWS

Стоимость этого семинара составляет менее 10 USD. Подробнее см. на странице цен на HAQM SageMaker Studio.

Уже есть аккаунт? Вход

Шаг 2. Настройка HAQM SageMaker Studio

Выполните следующие шаги, чтобы подключиться к HAQM SageMaker Studio и получить доступ к HAQM SageMaker Autopilot.

Примечание. Подробнее см. разделе Get Started with HAQM SageMaker Studio документации по HAQM SageMaker.


а) Войдите в консоль HAQM SageMaker

Примечание. В верхнем правом углу выберите регион AWS, в котором доступен сервис HAQM SageMaker Studio. Список регионов см. в разделе Onboard to HAQM SageMaker Studio.


б) На панели навигации HAQM SageMaker выберите HAQM SageMaker Studio.
 
Примечание. При первом использовании HAQM SageMaker Studio потребуется завершить процесс подключения к сервису Studio. Во время подключения выберите один из способ аутентификации: AWS Single Sign‑On (AWS SSO) или AWS Identity and Access Management (IAM) При использовании аутентификации IAM можно выбрать быструю либо стандартную процедуру настройки. Если вы не знаете, какой вариант выбрать, см. раздел Onboard to HAQM SageMaker Studio и обратитесь за помощью к ИТ‑администратору. Для простоты в этом руководстве используется процедура Quick start (Быстрое начало работы).

в) В окне Get started (Начать работу) выберите пункт Quick start (Быстрое начало работы) и укажите имя пользователя.

г) Для параметра Execution role (Роль выполнения) выберите пункт Create an IAM role (Создать роль IAM). В появившемся диалоговом окне выберите пункт Any S3 bucket (Любая корзина S3) и нажмите кнопку Create role (Создать роль).

HAQM SageMaker создаст роль с требуемыми разрешениями и назначит ее вашему инстансу.  


д) Нажмите Submit (Отправить).

Шаг 3. Загрузка набора данных

Выполните следующие шаги, чтобы загрузить и исследовать набор данных.

Примечание. Подробнее см. в разделе HAQM SageMaker Studio tour документации по HAQM SageMaker.


а) На панели HAQM SageMaker Studio Control Panel (Панель управления HAQM SageMaker Studio) выберите Open Studio (Открыть Studio).

б) В JupyterLab в меню File (Файл) выберите New (Новый), а затем – Notebook (Блокнот). В окне Select Kernel (Выберите ядро) выберите пункт Python 3 (Data Science).
 

в) Чтобы загрузить и извлечь код, скопируйте следующий код, вставьте его в ячейку кода и выберите Run (Исполнить).
 
Примечание. Во время исполнения кода в квадратных скобках появится символ *. Через несколько секунд код выполнится и символ * сменится на число.
%%sh
apt-get install -y unzip
wget http://sagemaker-sample-data-us-west-2.s3-us-west-2.amazonaws.com/autopilot/direct_marketing/bank-additional.zip
unzip -o bank-additional.zip

г) Скопируйте приведенный ниже код, вставьте его в новую ячейку кода и нажмите Run (Исполнить).

Набор данных при этом будет загружен в формате CSV, отобразятся первые десять строчек.

import pandas as pd
data = pd.read_csv('./bank-additional/bank-additional-full.csv')
data[:10]

Один из столбцов набора данных называется y и обозначает положительный ответ на вопрос, принял клиент данное предложение или нет.

Обычно на этом шаге специалисты по работе с данными начинают изучать данные, создавать новые возможности и т. д. Благодаря HAQM SageMaker Autopilot выполнять эти дополнительные шаги не требуется. Просто загрузите табличные данные в файл со значениями, разделенными запятыми (например, из электронной таблицы или базы данных), выберите целевой столбец для прогнозирования, и Autopilot создаст прогнозирующую модель для вас.


г) Скопируйте приведенный ниже код, вставьте его в новую ячейку кода и нажмите Run (Исполнить).

На этом шаге набор данных в формате CSV загружается в корзину HAQM S3. Создавать корзину HAQM S3 не нужно; при загрузке данных сервис HAQM SageMaker автоматически создает в аккаунте корзину по умолчанию.

import sagemaker

prefix = 'sagemaker/tutorial-autopilot/input'
sess   = sagemaker.Session()

uri = sess.upload_data(path="./bank-additional/bank-additional-full.csv", key_prefix=prefix)
print(uri)

Готово! В выводе кода отобразится идентификатор URI корзины S3; выглядеть это будет приблизительно так:

s3://sagemaker-us-east-2-ACCOUNT_NUMBER/sagemaker/tutorial-autopilot/input/bank-additional-full.csv

Сохраните показанный идентификатор URI для S3 в своем блокноте. Он понадобится на следующем шаге.

Шаг 4. Создание эксперимента SageMaker Autopilot

Теперь, когда вы загрузили и подготовили набор данных в корзине HAQM S3, можно переходить к созданию эксперимента HAQM SageMaker Autopilot. Эксперимент – это набор заданий по обработке и обучению, связанных с одним проектом машинного обучения.

Выполните следующие шаги, чтобы создать новый эксперимент.

Примечание. Подробнее см. в разделе Create an HAQM SageMaker Autopilot Experiment in SageMaker Studio документации по HAQM SageMaker.


а) На левой навигационной панели HAQM SageMaker Studio выберите Experiments (Эксперименты) (значок в виде колбы) и нажмите кнопку Create Experiment (Создать эксперимент).


б) Заполните поля раздела Job Settings (Настройки задания), как указано ниже.

  • Experiment Name (Название эксперимента): tutorial-autopilot
  • S3 location of input data (Местоположение входных данных в S3): идентификатор URI для S3, который был показан ранее
    (например, s3://sagemaker-us-east-2-123456789012/sagemaker/tutorial-autopilot/input/bank-additional-full.csv)
  • Target attribute name (Имя целевого атрибута): y
  • S3 location for output data (Местоположение выходных данных в S3): s3://sagemaker-us-east-2-[ACCOUNT-NUMBER]/sagemaker/tutorial-autopilot/output
    (обязательно замените [ACCOUNT‑NUMBER] на номер своего аккаунта)

в) Оставьте для всех остальных параметров значения по умолчанию и нажмите кнопку Create Experiment (Создать эксперимент).

Готово! Это действие запустит процесс создания эксперимента HAQM SageMaker Autopilot. Процесс сгенерирует модель, а также статистику, которую вы сможете просматривать в режиме реального времени в процессе выполнения эксперимента. После завершения эксперимента можно просмотреть испытания, отсортировать их по целевому показателю и, щелкнув правой кнопкой мыши, выполнить развертывание модели, чтобы использовать ее в других средах.

Шаг 5. Изучение этапов эксперимента SageMaker Autopilot

Во время проведения эксперимента можно узнать и изучить различные этапы эксперимента SageMaker Autopilot.  

В этом разделе содержится подробная информация о следующих этапах эксперимента SageMaker Autopilot.

  1. Анализ данных
  2. Разработка возможности
  3. Настройка модели

Примечание. Подробную информацию см. в разделе SageMaker Autopilot Notebook Output.


Анализ данных

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


Разработка возможности

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

  • Блокнот просмотра данных содержит сведения и статистику по набору данных.
  • Блокнот генерации потенциальных конвейеров содержит определения десяти конвейеров. По сути, это исполняемый блокнот: вы можете точно воспроизвести действия задания AutoPilot, понять, как строятся различные модели, и даже продолжить их доработку при желании.

С помощью этих двух блокнотов можно подробно изучить, как происходит предварительная обработка данных, а также построение и оптимизация моделей. Прозрачность – важная особенность HAQM SageMaker Autopilot.


Настройка модели

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

После выполнения этого этапа работа SageMaker Autopilot завершается. Все задания можно просмотреть в SageMaker Studio.

Шаг 6. Развертывание лучшей модели

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

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

Примечание. Дополнительную информацию см. в разделе Выбор и развертывание лучшей модели.


а) В списке Trials (Исследования) для своего эксперимента нажмите карет (^) рядом с пунктом Objective (Цель), чтобы отсортировать задания по настройке в убывающем порядке. Лучшее задание по настройке будет отмечено звездочкой.


б) Выберите лучшее задание по настройке (отмеченное звездочкой) и нажмите Deploy model (Развертывание модели)


в) В поле Deploy model (Развертывание модели) присвойте адресу имя (например, tutorial-autopilot-best-model) и оставьте настройки по умолчанию. Нажмите Deploy model (Развертывание модели).

Будет выполнено развертывание модели по адресу HTTPS, который находится под управлением HAQM SageMaker.


г) В панели инструментов слева нажмите значок Endpoints (Адреса). Вы увидите, что идет создание модели. Этот процесс занимает несколько минут. Как только статус адреса изменится на InService (Работает), можно отправлять данные и получать прогнозы.

Шаг 7. Прогнозирование с использованием модели

После развертывания модели можно приступать к прогнозированию первых 2000 образцов в наборе данных. Для этого используется API invoke_endpoint в составе boto3 SDK. В процессе вычисляются важные метрики машинного обучения: доля правильных ответов алгоритма, точность, полнота и F‑мера.

Для прогнозирования с использованием модели выполните следующие действия.

Примечание. Подробнее см. в разделе Manage Machine Learning with HAQM SageMaker Experiments.


Скопируйте следующий код в блокнот Jupyter и нажмите Run (Исполнить).

import boto3, sys

ep_name = 'tutorial-autopilot-best-model'
sm_rt = boto3.Session().client('runtime.sagemaker')

tn=tp=fn=fp=count=0

with open('bank-additional/bank-additional-full.csv') as f:
    lines = f.readlines()
    for l in lines[1:2000]:   # Skip header
        l = l.split(',')      # Split CSV line into features
        label = l[-1]         # Store 'yes'/'no' label
        l = l[:-1]            # Remove label
        l = ','.join(l)       # Rebuild CSV line without label
                
        response = sm_rt.invoke_endpoint(EndpointName=ep_name, 
                                         ContentType='text/csv',       
                                         Accept='text/csv', Body=l)

        response = response['Body'].read().decode("utf-8")
        #print ("label %s response %s" %(label,response))

        if 'yes' in label:
            # Sample is positive
            if 'yes' in response:
                # True positive
                tp=tp+1
            else:
                # False negative
                fn=fn+1
        else:
            # Sample is negative
            if 'no' in response:
                # True negative
                tn=tn+1
            else:
                # False positive
                fp=fp+1
        count = count+1
        if (count % 100 == 0):   
            sys.stdout.write(str(count)+' ')
            
print ("Done")

accuracy  = (tp+tn)/(tp+tn+fp+fn)
precision = tp/(tp+fp)
recall    = tn/(tn+fn)
f1        = (2*precision*recall)/(precision+recall)

print ("%.4f %.4f %.4f %.4f" % (accuracy, precision, recall, f1))

В результате должны отобразиться указанные ниже выходные данные.

100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 Done
0.9830 0.6538 0.9873 0.7867

Это индикатор прогресса, показывающий количество спрогнозированных образцов.

Шаг 8. Очистка

На этом этапе нужно удалить ресурсы, которые использовались в ходе данного практического занятия.

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


Удалите использованный адрес. Для этого скопируйте следующий код в блокнот Jupyter и нажмите Run (Исполнить).

sess.delete_endpoint(endpoint_name=ep_name)

Если вы хотите удалить все артефакты обучения (модели, наборы предварительно обработанных данных и т. д.), скопируйте в ячейку кода следующий код и нажмите Run (Исполнить).

Примечание. Обязательно замените ACCOUNT_NUMBER на номер своего аккаунта.

%%sh
aws s3 rm --recursive s3://sagemaker-us-east-2-ACCOUNT_NUMBER/sagemaker/tutorial-autopilot/

Поздравляем!

Вы автоматически создали модель машинного обучения с наибольшей долей правильных ответов алгоритма, используя HAQM SageMaker Autopilot.

Была ли полезной информация, представленная в этом учебном пособии?

Подробнее о возможностях HAQM SageMaker Autopilot

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