Учебное пособие по настройке собственной автоматизированной системы машинного обучения.

Недавно я завершил разработку веб-сайта, который действительно выполняет непрерывное машинное обучение (как графический интерфейс), то есть автоматически выполняет следующие шаги:

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

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

Мы будем использовать части старой библиотеки fastai (v0.7) в качестве начальной базы для начала работы (код до строки 500 содержит фрагменты из библиотеки и другой необходимый импорт, который будет использоваться). Вы можете скопировать фрагменты или установить библиотеку. Начнем кодирование отсюда!

Я буду объяснять код по частям. Итак, приступим!

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

  • Print_score: он будет использоваться для оценки производительности нашей модели в наборах данных для обучения и проверки.
  • «Auto_train»: он будет использоваться для обучения случайного леса с использованием заданных гиперпараметров.

Следующая функция «data_trainer» немного длинновата, поэтому я разделю ее на две части, чтобы объяснить вам. Он будет использоваться для выполнения следующих задач:

  • Очистите данные, разберитесь с категориальными переменными, извлеките информацию из дат (если они есть) и заполните недостающие значения.
  • Обучите случайный лес и настройте его гиперпараметры.
  • Feature Engineering.
  • Удалите избыточные переменные.
  • Постройте график важности функции.

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

Приведенный выше код (первая часть «data_trainer») выполняет следующие задачи:

  1. Он извлекает данные из столбца даты (если он есть), например год, день, месяц, конец квартала или нет, конец года или нет и многое другое.
  2. Он преобразует категориальные переменные в такой формат, чтобы их можно было использовать в модели машинного обучения. Он также заполняет недостающие значения.
  3. Он разбивает данные на наборы данных для обучения и проверки.
  4. Если набор данных очень велик, он будет использовать «rf_sampling» (метод в fastai для ускорения работы).
  5. Затем он начнет настройку гиперпараметров случайного леса, а именно «min_samples_leaf» и «max_features», используя циклы для получения наилучших результатов.

Приведенный выше код (вторая часть «data_trainer») выполнит проектирование функций и удалит переменные, которые не влияют на нашу целевую переменную или являются избыточными.
После этого функция вернет оптимальные гиперпараметры и список функций, которые будут использоваться для обучения окончательной модели.

Приведенный выше код определяет функцию для прогнозирования в наборе тестовых данных, а также для создания и сохранения графика важности функции. Он выполняет все следующие действия:

  • Извлеките информацию из столбца даты (если есть), как мы это сделали для набора данных для обучения.
  • Обучите случайный лес (используя гиперпараметры и техническую информацию о функциях, полученную в предыдущей функции) для всего набора данных (обучение + проверка) и примените его к набору тестовых данных для генерации прогнозов.
  • Создайте график важности функции и сохраните его.

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

Подведем итоги:
Сначала мы определили функцию для очистки обучающих данных и поиска оптимальных гиперпараметров, а также для разработки функций (названная data_trainer). Затем мы определили функцию для использования информации, полученной из вышеуказанной функции, для обучения модели и использования ее для создания графика важности функции и прогнозов для тестового набора данных (называемого auto_applyer). Затем мы связали все, используя функцию под названием auto_predictor. Также, если вы хотите настроить систему электронной почты для отправки электронного письма с результатами, вы можете найти код здесь.
Вуаля! Мы создали собственную автоматизированную систему машинного обучения.

Вы можете проверить веб-сайт (сквозной графический интерфейс) здесь, а репозиторий GitHub здесь.

Большое спасибо за чтение этого блога!

P.S.
Пожалуйста, обращайтесь ко мне в LinkedIn, если у вас возникнут какие-либо вопросы или предложения.