Создание современных моделей машинного обучения с помощью AutoGluon

AutoGluon и AutoML

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

Фреймворки AutoML призваны снизить планку начала работы с машинным обучением. Они берут на себя тяжелые задачи, такие как предварительная обработка данных, разработка функций, выбор алгоритмов и настройка гиперпараметров. Это означает, что, учитывая набор данных и проблему машинного обучения, продолжайте обучать разные модели с различными комбинациями гиперпараметров, пока не найдете оптимальную комбинацию модели и гиперпараметров - также называемую CASH (настройка комбинированного алгоритма / гиперпараметров) . Существующие платформы AutoML включают SageMaker Autopilot, Auto-WEKA и Auto-sklearn.

AutoGluon отличается от других (традиционных) сред AutoML, он делает больше, чем CASH (комбинированная настройка алгоритма / гиперпараметров).

Машинное обучение ансамбля и стекинг

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

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

Напротив, гетерогенные методы предполагают использование различных базовых алгоритмов машинного обучения, таких как деревья решений, искусственные нейронные сети и т. Д., Для создания моделей, которые используются для ансамблевого обучения. Стекинг - распространенный метод обучения гетерогенным ансамблям.

В этой таблице здесь перечислены примеры однородного и разнородного машинного обучения.

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

Как работает AutoGluon

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

Большая часть AutoML полагается на настройку гиперпараметров для создания и выбора лучших моделей. Настройка гиперпараметров включает поиск наилучшей комбинации гиперпараметров для алгоритма машинного обучения, который обеспечивает лучшую модель. Стратегия поиска наилучшего набора параметров основана на случайном поиске, поиске по сетке или байесовской оптимизации (которую использует SageMaker).

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

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

Память и состояние

AutoGluon учитывает память, он гарантирует, что обученные модели не превышают доступные ему ресурсы памяти.

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

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

Автоглюон в действии

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

Набор данных

Для набора данных мы используем популярный Titanic Dataset с открытым исходным кодом от Kaggle. Набор данных содержит данные о тренировках, которые состоят из помеченных данных для 851 пассажира на борту RMS Titanic и о том, выжили ли они в катастрофе или нет. Набор данных также включает тестовый набор с 418 пассажирами на борту, но без метки, то есть выжили они или нет.

Задача состоит в том, чтобы предсказать, выжил пассажир или нет, на основе включенных характеристик, таких как имя, возраст, пол, социально-экономический класс и т. Д.

Настраивать

Установка AutoGluon проста всего в пару строк

Обучение

Чтобы начать обучение, мы начинаем с импорта TabularPrediction из AutoGluon, а затем загружаем данные. AutoGluon в настоящее время может работать с таблицами данных, уже загруженными в Python как pandas DataFrames, или с таблицами, хранящимися в файлах формата CSV или Parquet.

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

Обучение начинается с .fit()method

При желании вы можете указать время, в которое будет выполняться тренировка, и AutoGluon автоматически завершит все учебные задания за это время.

Параметр eval_metric позволяет указать метрику оценки, которую AutoGluon будет использовать для проверки моделей. По умолчанию accuracy.

Установка auto_stack = True позволяет AutoGluon управлять количеством автоматически создаваемых стеков. Вы можете дополнительно указать количество стеков, которое вы хотите, с помощью параметра stack_ensemble_levels.

Параметр presets позволяет вам выбрать тип моделей, которые вы хотите сгенерировать, например, если задержка и время не являются ограничением, presets='best_quality часто будет генерировать более точные модели. С другой стороны, если вы знаете, что задержка будет ограничением, вы можете установить presets=[‘good_quality_faster_inference_only_refit’, ‘optimize_for_deployment’ для создания моделей, более оптимизированных для развертывания и вывода.

После начала обучения AutoGluon начнет регистрировать сообщения по мере прохождения различных этапов обучения.

По мере продолжения обучения AutoGluon также регистрирует оценочные баллы для различных моделей, которые он генерирует.

Здесь важно отметить, что, если у вас нет явной потребности указать набор данных для проверки, вы должны напрямую отправить все данные обучения в AutoGluon. Это позволяет AutoGluon эффективно автоматически выбирать случайное разделение данных для обучения и проверки.

После завершения обучения вы можете начать делать выводы с помощью функции .predict().

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

Достигнутые нами результаты были на высшем уровне. Точность ~ 78 и место в лучших 8% -10% в конкурсе на Kaggle.

Что делать, если вы хотите использовать одну или несколько моделей

По умолчанию AutoGluon автоматически выбирает лучший ансамбль многослойного стека для выполнения ваших прогнозов, однако вы также можете получить список всех моделей AutoGluon, сгенерированных вместе с их конкретными показателями производительности, путем создания таблицы лидеров с помощью одной строки кода: predictor.leaderboard(extra_info=True, silent=True)

Помимо показателей производительности, таблица лидеров также показывает время обучения и вывода для каждой из моделей / стеков, а также порядок, предков, потомков и т. Д. Среди другой информации.

Используя эту таблицу лидеров, вы можете выбрать конкретный стек ансамблей, который вы хотите запустить, просто указав порядковый номер.

Например, в приведенном выше коде мы используем стек 19 ансамбля.

Что насчет настройки гиперпараметров

В отличие от того, что вы, возможно, испытывали при работе с другими фреймворками машинного обучения, вам может не понадобиться настраивать гиперпараметры с помощью AutoGluon. В большинстве случаев вы получите наилучшую точность, установив auto_stack = True или вручную указав stack_levels вместе с num_bagging_folds

Однако AutoGluon поддерживает настройку гиперпараметров с помощью параметра hp_tune = True. Когда вы действительно включаете настройку гиперпараметров, AutoGluon будет создавать только модели с базовым алгоритмом, для которого вы указали настройки гиперпараметров. Остальное он пропустит.

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

Заключительные примечания

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

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

Дополнительное чтение