Автоматизированное машинное обучение

AutoML - приложение с графическим интерфейсом для создания машинного обучения для всех

Настольное приложение, автоматизирующее большинство задач конвейера машинного обучения, написанное на Python.

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

Существует множество инструментов и библиотек, таких как Google Cloud AutoML, AutoKeras, AutoML H2o. Но большинство этих инструментов дорогие или основаны на сценариях и не обеспечивают пользовательского интерфейса. Нормальным людям, мало разбирающимся в машинном обучении, сложно использовать эти инструменты. Таким образом, создание AutoML с графическим интерфейсом расширит возможности использования машинного обучения и поможет пользователям изучать машинное обучение посредством интерактивности.

Настройка приложения

Загрузите репозиторий для локального запуска



$ git clone https://github.com/santhalakshminarayana/AutoML.git

Создать виртуальную среду

$ virtualenv AutoML
$ source AutoML/bin/activate
$ cd AutoML

Установить требования для запуска приложения

$ pip install -r requirements.txt

Запустить приложение

$ python app.py

Если все загружено и размещено в нужном месте, вы можете увидеть экран приветствия, как на верхнем изображении.

Создание приложения с графическим интерфейсом

Я плохо разбираюсь в разработке пользовательского интерфейса и выучил только основы HTML, CSS и JS. А для серверной части приложения должен быть Python, на котором происходят все вычисления. Теперь мне нужен фреймворк или библиотека, которые позволят мне интегрировать JS и Python. Изучив, как создать пользовательский интерфейс за короткое время с моими знаниями, я наткнулся на Electron, который дает возможность создавать кроссплатформенные приложения, но он тяжелый. Я искал альтернативу Electron, а затем нашел эту библиотеку Python под названием Eel (библиотека Python).

Создание настольных приложений Eel легко и не требует изучения новых пакетов или библиотек, если вы знаете основы JS. Eel создает мост между JS и Python и передает данные от одной стороны к другой, как Flask, Django, но может работать локально, поскольку настольное приложение зависит от браузера CEF (Chrome, Firefox, Edge…).

Архитектура приложения

После определения необходимых инструментов и до начала кодирования проектирование базовой архитектуры приложения дает абстрактное представление о работе.

Рабочий процесс прост:

  1. Пользователь взаимодействует с приложением, чтобы выбрать тип модели и ввести данные,
  2. JS передает данные в бэкэнд Python с помощью Eel,
  3. Вычисления происходят в Python и отправляют данные в JS,
  4. Показывать результаты пользователям.

Следующий шаг - решить, что нужно автоматизировать и какие требования предъявлять пользователь.

Конвейер машинного обучения

Как правило, модель машинного обучения следует этапам конвейера, например:

  1. Извлечение / подготовка данных
  2. Обработка данных
  3. Извлечение признаков
  4. Выбор модели
  5. Модельное обучение
  6. Тюнинг модели
  7. Оценка модели
  8. Прогноз модели

За исключением извлечения данных, выбора модели и прогнозирования модели, все остальные шаги могут быть автоматизированы путем получения данных от пользователя.

Итак, чтобы автоматизировать вышеперечисленное, Пользователь должен предоставить данные.

Требования от пользователя
Пользователь взаимодействует с приложением для ввода необходимых данных, и взаимодействие с пользователем должно быть минимальным. Ожидаемое поведение пользователя включает:

  1. Выбор модели в контексте набора данных
  2. Предоставление набора данных, относящегося к выбранной модели
  3. Ввод параметров для настройки модели
  4. Ищите идеи и анализ модели

Подробный сквозной рабочий процесс

Шаг 1. Выбор модели

Пользователь должен выбрать тип проблемы из следующих типов:

  1. Регресс
  2. Классификация
  3. Кластеризация
  4. Обнаружение аномалий
  5. Уменьшение размеров

Каждый тип проблемы предлагает разные модели на выбор, например:

Регрессия:

  • K-nn
  • Линейная регрессия
  • Регрессор опорных векторов (SVR)
  • Случайный лесной регрессор

Классификация:

  • K-nn
  • Логистическая регрессия
  • Машина опорных векторов (SVM)
  • Классификатор случайного леса

Кластеризация:

  • K-означает
  • Агломеративный / Иерархический
  • DBSCAN

Обнаружение аномалий:

  • Многомерный гауссовский
  • DBSCAN
  • Изолированный лес

Уменьшение размера:

  • PCA
  • ЦНЕ
  • Усеченный СВД

После выбора типа проблемы и модели пользователь должен предоставить набор данных и выбрать параметры для модели.

Шаг 2. Ввод набора данных и выбор параметров

Пользователь предоставляет набор данных для обучения, а для обучения с учителем - набор данных для тестирования.

Модель машинного обучения требует множества параметров, которые различаются от модели к модели. Параметры модели могут быть разных типов, например int, string, float.

Если пользователь хочет выполнить настройку гиперпараметров, пользователь может указать несколько значений для одного и того же атрибута.

Если пользователь не выбрал какие-либо параметры или не сбросил значения по умолчанию, сохраненные значения по умолчанию будут использоваться в качестве параметров для модели.

Теперь взаимодействие с пользователем завершено, и пора бэкэнду предпринять действия после того, как пользователь нажмет кнопку Далее.

Шаг 3. Предварительная обработка набора данных

Предварительная обработка данных включает

  • Проверка соответствия набора данных выбранной модели
  • Назначение отсутствующих имен столбцов для каждого столбца в наборе данных
  • Удаление повторяющихся данных / строк
  • Заполнение пропущенных значений в соответствии с типом проблемы - Среднее значение для регрессии, Режим для набора данных классификации.
  • Преобразование категориальных значений в числовые - для преобразования использовался BackwardDifferenceEncoder.
  • Разделение на наборы данных для обучения и оценки, если применимо
  • Стандартизация данных
  • Применение PCA для извлечения признаков

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

Пользователь получит ошибку в следующих ситуациях:

  • Неправильный набор данных
  • Набор данных не относится к выбранной модели
  • Неправильные параметры модели, предоставленные пользователем

Шаг 4: Обучение модели с настройкой гиперпараметров

Если предоставленный набор данных успешно обработан, следующим шагом будет обучение модели с помощью набора данных. Если предоставлено несколько значений для разных параметров, то модель является гиперпараметрической, настроенной с помощью GridSearchCV, и лучший набор параметров, обеспечивающий высокую точность, принимается в качестве параметров модели и отображается пользователю, сообщая лучший набор параметров.

Если возникает какая-либо ошибка, пользователь сообщает журналы о том, что пошло не так в процессе построения модели.

Шаг 5: Оценка производительности модели

С данными, предоставленными пользователями после разделения на данные обучения и данные оценки, обученная модель оценивается, и результаты отображаются пользователю в виде различных графиков для разных типов задач.

Оценка регрессии

В регрессии график содержит MAE, MSE, RMSE, R ** 2, Adj. R ** Показано 2 метрики как для данных обучения, так и для данных оценки.

Классификационная оценка

Для классификации, матрицы неточностей классов и других деталей, таких как f1_score, показаны точность, прецизионность и отзыв.

Кластеризация прогнозов

Для кластеризации в соответствии с моделью отображается столбчатая диаграмма с различным количеством классов.

Прогнозы обнаружения аномалий

Для обнаружения аномалий отображается столбиковая диаграмма, показывающая количество аномалий и не аномалий.

Эффективность уменьшения размера

Для уменьшения размера отображается агрегирование отклонения для всех компонентов.

Шаг 6: Результат

В зависимости от типа проблемы результат сохраняется в виде файла .csv.

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

Это приложение можно использовать

  • Как инструмент обучения в начале пути к машинному обучению
  • Для быстрого понимания набора данных для специалистов по данным или разработчиков машинного обучения и многого другого.

Будущие улучшения

Это приложение можно расширить, добавив

  • Поддержка глубокого обучения
  • Интернет-поддержка
  • Больше моделей и типов машинного обучения
  • Измените дизайн пользовательского интерфейса для лучшего взаимодействия с пользователем