DS с Редди😎

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

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

Автоматизированное машинное обучение: AutoML

Автоматизированное машинное обучение (AutoML) – это процесс автоматизации комплексного процесса применения машинного обучения к решению реальных задач. AutoML стремится автоматизировать максимальное количество шагов в конвейере машинного обучения — с минимальными усилиями человека — без ущерба для производительности модели.

Автоматизированное машинное обучение можно рассматривать как стандартный процесс машинного обучения с автоматизацией некоторых этапов. AutoML очень широко включает в себя:

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

Автоматическое машинное обучение H2O (AutoML)

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

H2O также имеет ведущую в отрасли функциональность AutoML (доступна в H2O ≥3.14), которая автоматизирует процесс построения большого количества моделей, чтобы найти «лучшую» модель без каких-либо предварительных знаний или усилий со стороны Специалист по данным. H2O AutoML можно использовать для автоматизации рабочего процесса машинного обучения, который включает в себя автоматическое обучение и настройку многих моделей в течение заданного пользователем срока.

Вот некоторые из важных особенностей AutoML H2O:

  • Распределенные (многоядерные + многоузловые) реализации передовых алгоритмов машинного обучения с открытым исходным кодом.
  • Наличие базовых алгоритмов в высокопроизводительной Java. включая API в R, Python, Scala, веб-интерфейс.

  • Легко развертываемые модели в производстве в виде чистого кода Java.
  • Беспрепятственно работает на Hadoop, Spark, AWS, вашем ноутбуке и т. д.

Кто это для?

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

Интерфейс AutoML

H2O AutoML имеет интерфейс R и Python, а также веб-интерфейс под названием Flow. Интерфейс H2O AutoML спроектирован так, чтобы иметь как можно меньше параметров, поэтому все, что нужно сделать пользователю, — это указать на свой набор данных, определить столбец ответа и, при необходимости, указать ограничение по времени или ограничение на общее количество обученных моделей.

"Установка"

H2O предлагает пакет R, который можно установить из CRAN, и пакет Python, который можно установить из PyPI. В этой статье мы будем работать только с реализацией Python. Кроме того, вы можете заглянуть в документацию для получения полной информации.

Зависимости:

pip install requests
pip install tabulate
pip install “colorama>=0.3.8”
pip install future
  • установка с пипсом
pip install h2o

Каждый новый сеанс Python начинается с инициализации соединения между клиентом Python и кластером H2O.

Функции H2O AutoML

AutoML от H2O оснащен следующими функциями:

  • Необходимые возможности предварительной обработки данных (как во всех алгоритмах H2O).
  • Обучает случайную сетку алгоритмов, таких как GBM, DNN, GLM и т. д., используя тщательно подобранное пространство гиперпараметров.
  • Отдельные модели настраиваются с помощью перекрестной проверки.
  • Обучаются два составных ансамбля. Один ансамбль содержит все модели (оптимизированные для производительности моделей), а другой ансамбль предоставляет только наиболее эффективные модели из каждого класса/семейства алгоритмов (оптимизированные для производственного использования).
  • Возвращает отсортированную «таблицу лидеров» всех моделей.
  • Все модели можно легко экспортировать в производство.

Тематическое исследование

Прогнозирование невыполненных заказов материалов в управлении запасами с использованием машинного обучения

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

Справочник

Р. Б. Сантис, Э. П. Агиар и Л. Голиат, «Прогнозирование невыполненных заказов в управлении запасами с использованием машинного обучения», 4-я Латиноамериканская конференция IEEE по вычислительному анализу, Арекипа, Перу, 2017 г.

Методология

Основная схема для этой машинной задачи будет следующей.

  • Запустить H2O

Начнем с импорта модуля Python h2o и класса H2OAutoML. Затем следует инициализация локального кластера H2O.

import h2o
from h2o.automl import H2OAutoML
h2o.init(max_mem_size='16G')

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

По умолчанию экземпляр H2O использует все ядра и около 25% системной памяти. Однако, если вы хотите выделить для него фиксированный кусок памяти, вы можете указать его в функции инициализации.

  • Загрузка данных в H2O

Давайте импортируем данные из локального файла CSV. Команда очень похожа на pandas.read_csv, а данные сохраняются в памяти как H2OFrame.

data_path = "https://github.com/h2oai/h2o-tutorials/raw/master/h2o-world-2017/automl/data/product_backorders.csv"# Load data into H2O
df = h2o.import_file(data_path)

Давайте посмотрим на часть данных.

df.head()

print(f'Size of training set: {df.shape[0]} rows and {df.shape[1]} columns')
-------------------------------------------------------------
Size of training set: 19053 rows and 23 columns
  • Разделение набора данных на наборы обучающих и тестовых данных
splits = df.split_frame(ratios=[0.8],seed=1)
train = splits[0]
test = splits[1]
  • Указание переменных ответа и предиктора

Затем давайте определим столбец ответовn и сохраним имя столбца как y. Столбец ответа называется «went_on_backorder» и показывает, был ли продукт задержан или нет (бинарный ответ). Мы также удалим столбец sku, поскольку он является уникальным идентификатором и не должен включаться в набор столбцов-предикторов, которые хранятся в списке с именем x.

y = "went_on_backorder" 
x = df.columns 
x.remove(y) 
x.remove("sku")
  • Запустить AutoML

Запустите AutoML, остановившись через 120 секунд. Аргумент max_runtime_secs позволяет ограничить запуск AutoML по времени.

aml = H2OAutoML(max_runtime_secs=120, seed=1)
aml.train(x=x,y=y, training_frame=train)

Обязательные параметры остановки

Существует две стратегии остановки (на основе времени или количества моделей), и одна из них должна быть указана. Если установлены оба параметра, запуск AutoML остановится, как только будет достигнуто одно из этих ограничений.

  • max_runtime_secs: этот аргумент определяет максимальное время работы AutoML перед обучением окончательных моделей Stacked Ensemble. По умолчанию 3600 секунд (1 час).
  • max_models: укажите максимальное количество моделей для построения при запуске AutoML, за исключением моделей Stacked Ensemble. По умолчанию NULL/None.

Также есть несколько необязательных параметров, которые можно установить, например:

nfolds, balance_classes, class_sampling_factors, max_after_balance_size, max_runtime_secs_per_model,stopping_metric и т. д. Подробнее о них можно прочитать в документации.

Таблица лидеров

Далее мы можем просмотреть таблицу лидеров AutoML. Объект AutoML включает «таблицу лидеров» моделей, обученных в процессе, включая 5-кратную перекрестную проверку производительности модели (по умолчанию).

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

lb = aml.leaderboard
lb.head()

В таблице лидеров отображаются 10 лучших моделей, созданных с помощью AutoML, с указанием их параметров. Лучшая модель — составной ансамбль (размещается сверху) и хранится как aml.leader..

Исследование ансамбля

Чтобы понять, как работает ансамбль, давайте заглянем внутрь модели Stacked Ensemble «Все модели». Ансамбль «Все модели» — это ансамбль всех отдельных моделей в запуске AutoML. Часто это самая эффективная модель в таблице лидеров.

# Get model ids for all models in the AutoML Leaderboard
model_ids = list(aml.leaderboard['model_id'].as_data_frame().iloc[:,0])# Get the "All Models" Stacked Ensemble model
se = h2o.get_model([mid for mid in model_ids if "StackedEnsemble_AllModels" in mid][0])# Get the Stacked Ensemble metalearner model
metalearner = h2o.get_model(se.metalearner()['name'])

Изучите переменную важность алгоритма metalearner (combiner) в ансамбле. Это показывает нам, какой вклад в ансамбль вносит каждый базовый ученик.

%matplotlib inline
metalearner.std_coef_plot()

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

pred = aml.predict(test)
pred.head()

Сохранение модели лидера

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

h2o.save_model(aml.leader, path="./product_backorders_model_bin")

Вывод

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

Подписывайтесь на меня:

ссылка, Гитхаб