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

Генетические алгоритмы

Генетический алгоритм (ГА) - это метаэвристический алгоритм, охватывающий процесс естественного отбора для поиска решений проблем оптимизации. Алгоритм основан на том, как виды создают потомство в последующих поколениях путем выживания наиболее приспособленных, согласно теории Чарльза Дарвина. У наиболее приспособленного сегмента населения были самые высокие шансы на создание потомства в следующих поколениях. Эту аналогию можно использовать для достижения оптимальных решений как в ограниченных, так и в неограниченных задачах оптимизации, где поиск решений вручную может быть сложной задачей.

Кратко об алгоритме

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

Ключевая особенность:

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

2. Определение функции пригодности. Единственное требование для работы функции пригодности - это способность вычислять и количественно различать хороших и плохих кандидатов. Это может зависеть от постановки задачи и может быть точностью, F1-Score (в случае проблемы классификации) или RMSE (в случае проблемы регрессии).

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

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

Получение лучшего алгоритма и лучших параметров с помощью TPOT

Итак, что такое TPOT?

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

Что оно делает?

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

Как это сделать?

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

TPOT позволяет вам управлять параметрами при выборе размера популяции, количества поколений (аналогично количеству итераций), выбора вашей собственной функции оценки пригодности (предлагает наиболее часто используемые оценки, такие как 'точность', 'f1', 'neg_log_loss', 'roc_auc') и величину настройки (mutation_rate, crossover_rate ) из огромного набора других гиперпараметров.

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

  1. Http://epistasislab.github.io/tpot/
  2. Https://towardsdatascience.com/tpot-automated-machine-learning-in-python-4c063b3e5de9

Вы можете просмотреть эти заметки, если хотите больше узнать о GA.