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

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

АвтоГлюон

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

Основными факторами, обеспечивающими качественное моделирование с использованием AutoGluon для задачи табличного прогнозирования, являются:

  • Новая табличная нейронная сеть.
  • Автоматическое суммирование и объединение нескольких моделей.
  • Надежная предварительная обработка данных.

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

Табличная глубокая нейронная сеть

Глубокая нейронная сеть AutoGluon Tabular - это тщательно спроектированная нейронная сеть, которая состоит из сети прямого распространения с линейным сокращенным путем и встраиванием каждой переменной для табличных данных, в которых отсутствует инвариантность перевода и локальность изображений или текста, которые могут использоваться свертками. Детали архитектуры и модели табличной глубокой нейронной сети показаны ниже.

Табличная нейронная сеть использует числовой блок, который состоит из плотно связанного слоя нейронной сети с активацией Relu для реальных функций. широкий и глубокий блок табличной сети состоит из гибридного последовательного блока, который имеет два плотно связанных слоя нейронной сети размером [256, 128], которые масштабируются в соответствии с количество классов для мультиклассовой классификации. Широкая часть сети помогает в запоминании, а глубокая часть сети помогает в обобщении.

Автоматическая укладка

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

Если auto stacking имеет значение True, количество уровней наложения вычисляется эвристически с использованием уравнения min (1, max (0, math.floor (number train rows / 750)). и количество складок рассчитывается эвристически с использованием уравнения min (10, max (5, math.floor (num_train_rows / 100)))

Предварительная обработка данных

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

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

Соответствовать()

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

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

Один из важных параметров, предустановки в функции подгонки, контролирует точность прогнозов, задержку вывода и использование ресурсов. В приведенной ниже таблице показано подробное сравнение точности прогнозов, времени обучения, времени вывода и ранга kaggle в задаче Классификация продуктов Otto Group для различных предустановок. ‘high_quality_fast_inference_only_refit’ обеспечивает наилучший компромисс между точностью прогнозирования и задержкой вывода.

Другим важным параметром является time_limits, который определяет, как долго должна выполняться функция fit, если модель обучения для онлайн-среды, где важно обновление модели в реальном времени в течение указанного времени. . Ограничение по времени распределяется для различных оптимизаций гиперпараметров в зависимости от уровней стека, количества складок упаковки и количества базовых моделей.

time_limits_hpo = time_limits / (1 + num_bagging_folds * (1 + stack_ensemble_levels))

Установка

Инструкция по установке pip3

sudo apt install python3-pip
sudo -H pip3 install -U pip (update to latest version)

Инструкция по установке MXNET

Выберите подходящую версию для ОС / платформы из https://mxnet.apache.org/versions/1.7/get_started?

sudo -H pip3 install mxnet-cu102 (GPU Version with CUDA 10.02)
sudo -H pip3 install mxnet (CPU Version)

Инструкция по установке AutoGluon

sudo -H pip3 install autogluon

Прогнозирование выживания на Титанике как табличное предсказание

Скачать Датасет Титаник

sudo -H pip3 install kaggle (install kaggle python package)
#download the key and save it home directorty (/home/userid/.kaggle)
kaggle competitions download -c titanic

Обучите модель с помощью AutoGluon

from autogluon import TabularPrediction as task
label_column = 'Survived'
#load data (assuming train.csv and test.csv is alredy downloaded)
train_data = task.Dataset(file_path='train.csv').drop(labels=['PassengerId'],axis=1)
test_data = task.Dataset(file_path='test.csv')
#create temp dataset to hold passenger id.
test_data_tmp = pd.DataFrame()
test_data_tmp['PassengerId'] = test_data['PassengerId'].copy()
test_data = test_data.drop(labels=['PassengerId'],axis=1)
#To get the best predictive accuracy, recommended setting is to make auto_stack=True and time how long we can wait (time_limits).
metric='accuracy'
predictor = task.fit(train_data=train_data, label=label_column, eval_metric=metric, auto_stack=True, time_limits=3600)
#calcutate test prediction 
y_pred = predictor.predict(test_data, as_pandas=True)
y_pred = y_pred.to_frame()
#save the prediction to the file
y_pred['PassengerId'] = test_data_tmp['PassengerId'].copy()
tfilename = 'autogluon_titantic.csv'
y_pred.to_csv(tfilename, index=False)
#submit test prediction to kaggle for scoring
kaggle competitions submit titanic -f tfilename -m "autogluon tabular titanic prediction"

После отправки мы проверили счет на конкурсе Kaggle Titanic. На странице «Мои заявки» мы получили оценку 0,78708, которая находится ниже верхних 15%, т. Е. хорошо, и после применения функции проектирования мы можем еще больше повысить прогнозирующую способность этих моделей.

Заключение

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

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

использованная литература

  1. Https://mxnet.apache.org/versions/1.7/
  2. Https://github.com/apache/incubator-mxnet
  3. Https://arxiv.org/pdf/2003.06505.pdf
  4. Https://aws.amazon.com/blogs/opensource/machine-learning-with-autogluon-an-open-source-automl-library/
  5. Https://towardsdatascience.com/autogluon-deep-learning-automl-5cdb4e2388ec