Информированные методы: генетические алгоритмы

Подбор гиперпараметров в Python

Alex Scriven

Data Scientist

Урок генетики

 

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

  1. Существует множество особей («потомков»)
  2. Сильнейшие выживают и образуют пары
  3. При скрещивании происходит «кроссовер»
  4. У некоторых потомков возникают случайные мутации
    • Иногда мутации дают потомку преимущество
  5. Возврат к шагу (1)!
Подбор гиперпараметров в Python

Генетика в машинном обучении

 

Ту же идею можно применить к настройке гиперпараметров:

  1. Создаём несколько моделей с различными наборами гиперпараметров
  2. Отбираем лучшие по функции оценки
    • Это те, что «выживают»
  3. Создаём новые модели, похожие на лучшие
  4. Добавляем случайность, чтобы не попасть в локальный оптимум
  5. Повторяем до получения нужного результата!
Подбор гиперпараметров в Python

Почему это работает?

 

Это информированный поиск с рядом преимуществ:

  • Он учитывает результаты предыдущих итераций — как байесовская настройка гиперпараметров.
  • Дополнительное преимущество — элемент случайности
  • (Используемый нами пакет) берёт на себя многие рутинные задачи машинного обучения
Подбор гиперпараметров в Python

Знакомство с TPOT

 

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

Считайте TPOT своим ассистентом по Data Science. TPOT — инструмент автоматического машинного обучения на Python, который оптимизирует пайплайны машинного обучения с помощью генетического программирования.

Пайплайны включают не только модель (или несколько моделей), но и работу с признаками и другими аспектами процесса. Кроме того, TPOT возвращает готовый Python-код пайплайна!

Подбор гиперпараметров в Python

Компоненты TPOT

Основные аргументы классификатора TPOT:

  • generations: количество итераций обучения.
  • population_size: количество моделей, сохраняемых после каждой итерации.
  • offspring_size: количество моделей, создаваемых на каждой итерации.
  • mutation_rate: доля пайплайнов, к которым применяется случайность.
  • crossover_rate: доля пайплайнов для скрещивания на каждой итерации.
  • scoring: функция для определения лучших моделей.
  • cv: стратегия кросс-валидации.
Подбор гиперпараметров в Python

Простой пример

Простой пример:

from tpot import TPOTClassifier
tpot = TPOTClassifier(generations=3, population_size=5, 
                      verbosity=2, offspring_size=10,
                      scoring='accuracy', cv=5)

tpot.fit(X_train, y_train) print(tpot.score(X_test, y_test))

Для mutation_rate и crossover_rate оставим значения по умолчанию — без глубоких знаний генетического программирования менять их не рекомендуется.

Обратите внимание: никаких алгоритм-специфичных гиперпараметров?

Подбор гиперпараметров в Python

Давайте потренируемся!

Подбор гиперпараметров в Python

Preparing Video For Download...