Ноут s3_stacked_dae_09.ipynb

В продолжение записи №85. Создание вручную запусков с возможностью настройки гиперпараметров для каждого из запусков - это, конечно, клёво. Но всё таки это плохо масштабируется. Работать должно роботы. Узнал про Optuna - можно сказать GridSearchCV на стероидах. Это механизм поиска оптимальных гиперпараметров (да в и вообще любых параметров), требуется только для каждого запуска уметь рассчитывать некоторую метрику, смотря на которую Optuna сама разберётся, в какую сторону крутить те или иные гиперпараметры. Удобно. Пришлось, правда, повозиться, чтобы адаптировать ноут для запуска из-под Optuna. Проблема была в том, как сделать запуск в параллель, чтобы быстрее было. Пришлось допилить launchit, который теперь умеет создавать не только ноуты, но и обычные .py модули, которые прекрасно запускаются из-под Optuna.

При этом сначала я сделал тупо: в качестве метрики выступал test_accuracy. Но так делать нельзя, т.к. оптимизация гиперпараметров неявно учитывала accuracy на test данных. Т.е. в какой-то мере тестовые данные использовались для model selection. Внедрил расчет метрики через cross-validation - это более честный подход.

Забавно, что по результатам не удалось переплюнуть результат из 85:

  • s3_stacked_dae_08, best 0.9899, 98.99%
  • s3_stacked_dae_09, best 0.9879, 98.79%