ИСТОРИЯ AUTOML И TPOT

Что такое автоматическое машинное обучение?

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

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

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

можно использовать легко и без специальных знаний.

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

Каковы типы AutoML в последние дни?

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

  • AutoWEKA — подход для одновременного выбора алгоритма машинного обучения и его гиперпараметров; в сочетании с пакетом WEKA он автоматически дает хорошие модели для самых разных наборов данных.
  • Auto-sklearn – это расширение AutoWEKA, использующее библиотеку Python scikit-learn, которая является заменой обычных классификаторов и регрессоров scikit-learn.
  • Auto-PyTorch основан на платформе глубокого обучения PyTorch и совместно оптимизирует гиперпараметры и нейронную архитектуру.

Кроме того, есть и другие известные пакеты AutoML, в том числе:

  • AutoGluon – это многоуровневый подход к объединению различных моделей машинного обучения.
  • H2O AutoML обеспечивает автоматический выбор и объединение моделей для платформы машинного обучения и анализа данных H2.
  • MLBoX — это библиотека AutoML с тремя компонентами: предварительная обработка, оптимизация и прогнозирование.
  • TransmogrifAI – это библиотека AutoML, работающая поверх Spark.
  • TPOT – это помощник по анализу данных, который оптимизирует конвейеры машинного обучения с помощью генетического программирования.

Что такое TPOT AutoML? Кого разрабатывают?

В этой статье мы сосредоточимся на последнем названии типа AutoML. TPOT Tree-Based Pipeline Optimization Tool (TPOT) — один из самых первых методов AutoML и программных пакетов с открытым исходным кодом, разработанных для сообщества специалистов по обработке и анализу данных. Впервые TPOT был разработан доктором Рэндалом Олсоном, когда он был докторантом вместе с доктором Джейсоном Х. Муром в Лаборатории вычислительной генетики Пенсильванского университета, затем эта команда все еще расширяет и поддерживает его.

Целью TPOT является автоматизация построения конвейеров машинного обучения путем объединения гибкого представления конвейеров в виде дерева выражений с алгоритмами стохастического поиска, такими как генетическое программирование. TPOT использует библиотеку scikit-learn на основе Python в качестве своего меню ML.

Были опубликованы некоторые рецензируемые статьи, в которых говорится о TPOT. В 2016 году первая статья о TPOT была признана лучшей на конференции по компьютерным наукам EvoStar. Затем вторая статья в 2016 году также получила награду за лучшую статью на конференции по компьютерным наукам GECCO.

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

КОНЦЕПЦИЯ, ПАРАМЕТРЫ, ПРЕИМУЩЕСТВА И НЕДОСТАТКИ TPOT

Как работает TPOT?

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

TPOT вдохновлен идеей Дарвина о естественном отборе.

TPOT использует генетическое программирование для создания оптимизированного пространства поиска, они вдохновлены идеей Дарвина о естественном отборе, генетическое программирование использует следующие свойства:

  • Выбор. На этом этапе функция пригодности оценивается для каждого из индивидуумов и нормализуется их значения, так что каждый из них имеет значения от 0 до 1, а их сумма равна 1. После этого мы решаем случайное число R ч/б 0 и 1. Теперь мы сохраняем тех особей, у которых значение фитнес-функции больше или равно R.
  • Кроссовер: теперь мы можем выбрать наиболее приспособленных особей из приведенных выше и выполнить кроссовер между ними, чтобы создать новую популяцию.
  • Мутация: мутировать особей, сгенерированных кроссовером, выполнять некоторые случайные модификации и повторять это в течение нескольких шагов или до тех пор, пока мы не получим лучшую популяцию.

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

В древовидной GP компьютерные программы представлены в виде древовидных структур, которые рекурсивно оцениваются для получения результирующих многомерных выражений. Традиционная номенклатура гласит, что узел дерева (или просто узел) — это оператор [+,-,*,/], а конечный узел (или лист) — это переменная [ а, б, в, г].

Лисп был первым языком программирования, примененным к древовидной ГП, поскольку структура этого языка соответствует структуре деревьев. Однако многие другие языки, такие как Python, Java и C++, использовались для разработки приложений GP на основе дерева.

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

Каковы параметры TPOT?

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

  • generations: количество итераций для запуска конвейерного процесса (по умолчанию: 100).
  • population_size: количество людей, сохраняющих популяцию генетического программирования в каждом поколении (по умолчанию 100).
  • offspring_size: количество потомков, которое будет создано на каждой итерации генетического программирования. (по умолчанию 100).
  • mutation_rate: скорость мутации ч/б [0,1] (по умолчанию 0,9).
  • crossover_rate: частота кроссовера ч/б [0,1] (по умолчанию 0,1) {скорость мутации + скорость кроссовера ‹= 1}. Этот параметр сообщает алгоритму генетического программирования, сколько конвейеров «разводить» в каждом поколении.
  • оценка: показатели для оценки качества воронки продаж. Здесь подсчет очков принимает такие параметры, как точность, оценка F1 и т. д.
  • cv: метод перекрестной проверки, если заданное значение является целым числом, то при перекрестной проверке K-Fold оно будет равно K.
  • n_job: количество процессов, которые могут выполняться параллельно (по умолчанию 1).
  • max_time_mins: максимальное время, в течение которого TPOT может оптимизировать конвейер (по умолчанию: нет).
  • max_eval_time_mins: сколько минут есть у TPOT для оценки одного конвейера (по умолчанию: нет).
  • многословие:сколько информации отображает TPOT во время работы. {0: ничего, 1: минимальная информация, 2: дополнительная информация и индикатор выполнения, 3: все} (по умолчанию: 0)
  • random_state: начальное значение генератора псевдослучайных чисел, используемого в TPOT. Используйте этот параметр, чтобы убедиться, что TPOT будет давать одинаковые результаты каждый раз, когда вы запускаете его для одного и того же набора данных с этим начальным числом.

TpotRegressor: модуль для выполнения автоматического глубокого обучения для задач регрессии. Большинство приведенных выше аргументов описывают TpotClassifier. Здесь единственным параметром, который отличается, является оценка. В TpotRegression нам нужно оценить регрессию, поэтому мы используем такие параметры, как: «neg_median_absolute_error», «neg_mean_absolute_error», «neg_mean_squared_error», «r2».

Оба модуля предоставляют 4 функции для подбора и оценки набора данных. Это:

  • fit(features, target): запустить конвейер оптимизации TPOT для заданных данных.
  • predict(features):используйте оптимизированный конвейер для прогнозирования целевых значений примера/примеров набора функций.
  • score(test_features, test_target): оценивает модель на тестовых данных и возвращает наиболее оптимизированный результат.
  • export(output_file_name):экспортировать оптимизированный конвейер как код Python.

Каковы преимущества TPOT?

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

TPOT — это продвинутая версия генетического программирования в сценарии обучения с учителем.

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

Магия TPOT развивается из версии генетического программирования в сценарии обучения с учителем. Несмотря на то, что я называю это своего рода «волшебством», оно не может заменить инженеров по машинному обучению или специалистов по науке о данных. Этот инструмент просматривает данные и определяет лучшие функции. Кроме того, он также рекомендует трубопроводы. У пользователя есть привилегия экспортировать эти пайплайны и объединять свои знания предметной области по мере того, как они визуализируют соответствие.

Каковы недостатки TPOT?

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

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

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

Другие недостатки TPOT — сложность установки, поскольку TPOT построен на основе нескольких существующих библиотек Python, в том числе:

Итак, перед установкой TPOT убедитесь, что вы установили необходимые библиотеки Python, после чего вы сможете установить TPOT. Последний TPOT в настоящее время доступен только для контролируемого обучения.

ПРАКТИЧЕСКИЙ ТРОТ

Как установить TPOT?

Чтобы использовать TPOT в вашей системе, первым делом убедитесь, что основные библиотеки TPOT уже установлены. Эти библиотеки включали numpy, scipy, scikit-learn, DEAP, update_checker, tqdm, stopit, pandas и joblib. Большинство необходимых пакетов Python можно установить через дистрибутив Anaconda Python или установить их отдельно. Если вы хотите, чтобы TPOT выполнял поиск eXtreme Gradient Boosting, вы также можете установить XGBoost.

NumPy, SciPy, scikit-learn, pandas, joblib и PyTorch можно установить в Anaconda с помощью команды:

conda установить numpy scipy scikit-learn pandas joblib pytorch.

DEAP, update_checker, tqdm, stopit и xgboost можно установить с помощью pip с помощью команды:

pip install deap update_checker tqdm stopit xgboost

Наконец, чтобы установить сам TPOT, выполните следующую команду:

pip установить tpot

После установки TPOT мы можем импортировать библиотеку и подтвердить ее версию с помощью кода:

#импортируйте и проверьте версию TPOT

Импортировать

print('tpot: %s' % tpot.__version__)

Если установлен TPOT, результат выполнения кода будет таким же или выше: tpot: 0.11.1

Подробнее читайте на http://epistasislab.github.io/tpot/installing/

Как внедрить/практичный TPOT на модели классификации и регрессии?

Использование TPOT на самом деле простое и довольно прямолинейное, как и другие модели машинного обучения. Он включает в себя импорт библиотек, загрузку набора данных, разделение данных, кодирование, определение параметров cv, поиск TPOT и выполнение поиска с использованием подгонки. TPOTRegressor используется для задач регрессии, а TPOTClassifier — для задач классификации. По окончании поиска модель конвейера с наилучшей производительностью можно экспортировать в виде шаблона, который можно скопировать и вставить в свой проект.

Регрессионная модель

Для задач регрессии существуют библиотеки, которые отличают регрессию от задач классификации, таких как выбор модели и библиотеки TPOT. Для задач регрессии это:

#импорт model_selection

из sklearn.model_selection импортировать RepeatedKFold

#импорт TPOT

из tpot импортировать TPOTRegressor

После импорта необходимых библиотек следующие шаги выполняются аналогично другим моделям машинного обучения: загрузка набора данных, разделение наборов данных и кодирование (при необходимости). Затем процесс продолжился в определении процедуры оценки (определение того, как модель будет оцениваться, и определение модели поиска. Где мы можем применить передовой опыт повторной перекрестной проверки k-кратного с тремя повторениями и 10 повторениями. Рекомендуется явно укажите класс перекрестной проверки с выбранной вами конфигурацией и используемой метрикой производительности, например RepeatedKFold с скорингом = 'neg_mean_squared_error'.

# определить процедуру оценки

cv = RepeatedKFold (n_splits = 10, n_repeats = 3, random_state = 1)

# определяем поиск

модель = TPOTRegressor (поколения = 5, population_size = 50, подсчет = 'neg_mean_absolute_error', cv = cv, подробность = 2, random_state = 1, n_jobs = -1 ………………)

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

TPOTRegressor (поколения=100, размер_популяции=100, размер потомства=нет, скорость мутаций=0,9, скорость_пересечения =0,1, оценка='neg_mean_squared_error', cv=5, подвыборка=1,0, n_jobs =1, max_time_mins=Нет, max_eval_time_mins=5, random_state=Нет, config_dict=Нет, template=None, warm_start=False, memory=None, use_dask=False, periodic_checkpoint_folder= Нет, early_stop=Нет, многословие=0, disable_update_check=False)

С описанием каждого параметра и дальнейшими пояснениями можно ознакомиться по этой ссылке: http://epistasislab.github.io/tpot/api/#regression

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

# выполнить поиск

модель.подходит(Х, у)

Запуск модели может занять от нескольких минут, часов до дней. Это зависит от вашего набора данных и сложности модели. Вы можете увидеть индикатор выполнения поиска в командной строке, и с ним будет сообщено MAE самых эффективных моделей. Пример отчета MSE будет таким:

Поколение 1 — Текущий лучший внутренний балл CV: -29,147

Поколение 2 — Текущий лучший внутренний балл CV: -29,147

Поколение 3 — Текущий лучший внутренний балл CV: -29,147

…………

И в конце поиска также сообщается о лучшем конвейере.

Лучший конвейер: LinearSVR (input_matrix, C=1.0, dual=False, epsilon=0.0001, loss=squared_epsilon_insensitive, tol=0.001)

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

Сохраните лучший конвейер, используя:

# экспортировать лучшую модель

model.export('tpot_insurance_best_model.py')

Лучший пайплайн сохраняется в файле с именем «tpot_insurance_best_model.py». Открыв этот файл, вы можете увидеть общий код для загрузки набора данных и настройки пайплайна. Но этот код не выполняется, это шаблон, который вы можете скопировать-вставить в свой проект.

Модель классификации

Для задач классификации существуют библиотеки, которые отличают классификацию от задач регрессии, таких как выбор модели и библиотеки TPOT. Для задач классификации это:

#импорт model_selection

из sklearn.model_selection импортировать RepeatedStratifiedKFold

#импорт TPOT

из tpot импортировать TPOTClassifier

После импорта необходимых библиотек следующие шаги выполняются аналогично регрессионным и другим моделям машинного обучения: загрузка набора данных, разделение наборов данных и кодирование (при необходимости). Затем процесс продолжился определением процедуры оценки (определением того, как будет оцениваться модель) и определением модели поиска. Здесь мы можем указать класс перекрестной проверки с тремя повторениями и 10 сгибами, а также выбранную вами конфигурацию и используемую метрику производительности, например RepeatedStratifiedKFold с оценкой = «точность».

# определить процедуру оценки

cv = RepeatedStratifiedKFold (n_splits = 10, n_repeats = 3, random_state = 1)

# определяем поиск

модель = TPOTClassifier (поколения = 5, популяция_размер = 50, cv = cv, оценка = «точность», подробность = 2, random_state = 1, n_jobs = -1, ………………)

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

TPOTClassifier (поколения=100, размер популяции=100, offspring_size=нет, скорость мутаций=0,9, скорость кроссовера =0,1, оценка='accuracy', cv=5, подвыборка=1,0, n_jobs =1, max_time_mins=Нет, max_eval_time_mins=5, random_state=Нет, config_dict=Нет, template=None, warm_start=False, memory=None, use_dask=False, periodic_checkpoint_folder= Нет, early_stop=Нет, многословие=0, disable_update_check=False, log_file=Нет)

Единственным отличием параметров TPOTClassifier от TPOTRegressor является точность в оценке и Нет в log_file. С описанием каждого параметра и дальнейшими пояснениями можно ознакомиться по этой ссылке: http://epistasislab.github.io/tpot/api/#classification

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

# выполнить поиск

модель.подходит(Х, у)

Запуск модели может занять от нескольких минут, часов до суток. Это зависит от вашего набора данных и сложности модели. Вы можете увидеть индикатор выполнения поиска в командной строке, и с ним будет сообщено MAE самых эффективных моделей. Пример отчета о точности:

Поколение 1 — Текущий лучший внутренний балл CV: 0,865

Поколение 2 — Текущий лучший внутренний балл CV: 0,865

Поколение 3 — Текущий лучший внутренний балл CV: 0,865

…………

И в конце поиска также сообщается о лучшем конвейере.

Лучший трубопровод: GradientBoostingClassifier (gaussiannb (input_matrix), Learning_rate = 0,1, max_depth = 7, max_features = 0,7000000000000001, min_samples_leaf = 15, min_samples_split = 10, n_estimators = 100, подставка = 0,90000000000001).

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

Сохраните лучший конвейер, используя:

# экспортировать лучшую модель

model.export('tpot_sonar_best_model.py')

Лучший пайплайн сохраняется в файле с именем «tpot_sonar_best_model.py». Открыв этот файл, вы увидите, что в нем есть общий код для загрузки набора данных и подгонки пайплайна. Но этот код не выполняется, это шаблон, который вы можете скопировать-вставить в свой проект.

Ссылки:

https://www.automl.org/automl/

http://automl.info/tpot/

http://epistasislab.github.io/tpot/

https://geneticprogramming.com/about-gp/tree-based-gp/, https://www.geeksforgeeks.org/tpot-automl/amp/

https://www.analyticsvidhya.com/blog/2021/05/automate-machine-learning-using-tpot%E2%80%8A-%E2%80%8Aexplore-thousands-of-possible-pipelines-and- найди лучшее/

https://machinelearningmastery.com/tpot-for-automated-machine-learning-in-python/

http://epistasislab.github.io/tpot/api/#regression

http://epistasislab.github.io/tpot/api/#classification

Эта статья написана как совместный проект Thunder Talks вместе с:

  1. Густи Аю Деви Пушпа Картикасари
  2. Малвин Субари
  3. Мухаммад Ирхам Динан