Учебное пособие по настройке собственной автоматизированной системы машинного обучения.
Недавно я завершил разработку веб-сайта, который действительно выполняет непрерывное машинное обучение (как графический интерфейс), то есть автоматически выполняет следующие шаги:
- Принимает данные обучения и тестовые данные от пользователя с помощью формы.
- Очищает данные и делает их пригодными для использования в модели машинного обучения (например, заполнение недостающих значений, работа с категориальными переменными и т. Д.).
- Обучает случайный лес на данных и настраивает его гиперпараметры.
- Выполняет разработку функций для данных.
- Создает график важности признаков для окончательной модели.
- Создает прогнозы на основе тестовых данных и отправляет результаты и график важности функции на адрес электронной почты, предоставленный пользователем.
Итак, в этом блоге я в основном расскажу вам о коде для настройки такой системы. Вы можете найти репозиторий GitHub, содержащий основной код для части веб-сайта, посвященной машинному обучению, здесь.
Мы будем использовать части старой библиотеки fastai (v0.7) в качестве начальной базы для начала работы (код до строки 500 содержит фрагменты из библиотеки и другой необходимый импорт, который будет использоваться). Вы можете скопировать фрагменты или установить библиотеку. Начнем кодирование отсюда!
Я буду объяснять код по частям. Итак, приступим!
В приведенном выше коде определены некоторые функции, которые будут многократно использоваться по мере продвижения вперед. Больше всего выделяются две функции:
- Print_score: он будет использоваться для оценки производительности нашей модели в наборах данных для обучения и проверки.
- «Auto_train»: он будет использоваться для обучения случайного леса с использованием заданных гиперпараметров.
Следующая функция «data_trainer» немного длинновата, поэтому я разделю ее на две части, чтобы объяснить вам. Он будет использоваться для выполнения следующих задач:
- Очистите данные, разберитесь с категориальными переменными, извлеките информацию из дат (если они есть) и заполните недостающие значения.
- Обучите случайный лес и настройте его гиперпараметры.
- Feature Engineering.
- Удалите избыточные переменные.
- Постройте график важности функции.
Так что давайте погрузимся в это!
Я добавил комментарии, чтобы разграничить разделы, соответствующие каждому процессу.
Приведенный выше код (первая часть «data_trainer») выполняет следующие задачи:
- Он извлекает данные из столбца даты (если он есть), например год, день, месяц, конец квартала или нет, конец года или нет и многое другое.
- Он преобразует категориальные переменные в такой формат, чтобы их можно было использовать в модели машинного обучения. Он также заполняет недостающие значения.
- Он разбивает данные на наборы данных для обучения и проверки.
- Если набор данных очень велик, он будет использовать «rf_sampling» (метод в fastai для ускорения работы).
- Затем он начнет настройку гиперпараметров случайного леса, а именно «min_samples_leaf» и «max_features», используя циклы для получения наилучших результатов.
Приведенный выше код (вторая часть «data_trainer») выполнит проектирование функций и удалит переменные, которые не влияют на нашу целевую переменную или являются избыточными.
После этого функция вернет оптимальные гиперпараметры и список функций, которые будут использоваться для обучения окончательной модели.
Приведенный выше код определяет функцию для прогнозирования в наборе тестовых данных, а также для создания и сохранения графика важности функции. Он выполняет все следующие действия:
- Извлеките информацию из столбца даты (если есть), как мы это сделали для набора данных для обучения.
- Обучите случайный лес (используя гиперпараметры и техническую информацию о функциях, полученную в предыдущей функции) для всего набора данных (обучение + проверка) и примените его к набору тестовых данных для генерации прогнозов.
- Создайте график важности функции и сохраните его.
Теперь все, что осталось сделать, это связать все ранее определенные функции вместе, вызвав их в соответствующей последовательности с соответствующими входными данными, что и делается ниже.
Подведем итоги:
Сначала мы определили функцию для очистки обучающих данных и поиска оптимальных гиперпараметров, а также для разработки функций (названная data_trainer). Затем мы определили функцию для использования информации, полученной из вышеуказанной функции, для обучения модели и использования ее для создания графика важности функции и прогнозов для тестового набора данных (называемого auto_applyer). Затем мы связали все, используя функцию под названием auto_predictor. Также, если вы хотите настроить систему электронной почты для отправки электронного письма с результатами, вы можете найти код здесь.
Вуаля! Мы создали собственную автоматизированную систему машинного обучения.
Вы можете проверить веб-сайт (сквозной графический интерфейс) здесь, а репозиторий GitHub здесь.
Большое спасибо за чтение этого блога!
P.S.
Пожалуйста, обращайтесь ко мне в LinkedIn, если у вас возникнут какие-либо вопросы или предложения.