Обізнані методи: генетичні алгоритми

Тюнінг гіперпараметрів у 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 — це інструмент Automated Machine Learning для 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...