Автоматизированное машинное обучение
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…).
Архитектура приложения
После определения необходимых инструментов и до начала кодирования проектирование базовой архитектуры приложения дает абстрактное представление о работе.
Рабочий процесс прост:
- Пользователь взаимодействует с приложением, чтобы выбрать тип модели и ввести данные,
- JS передает данные в бэкэнд Python с помощью Eel,
- Вычисления происходят в Python и отправляют данные в JS,
- Показывать результаты пользователям.
Следующий шаг - решить, что нужно автоматизировать и какие требования предъявлять пользователь.
Конвейер машинного обучения
Как правило, модель машинного обучения следует этапам конвейера, например:
- Извлечение / подготовка данных
- Обработка данных
- Извлечение признаков
- Выбор модели
- Модельное обучение
- Тюнинг модели
- Оценка модели
- Прогноз модели
За исключением извлечения данных, выбора модели и прогнозирования модели, все остальные шаги могут быть автоматизированы путем получения данных от пользователя.
Итак, чтобы автоматизировать вышеперечисленное, Пользователь должен предоставить данные.
Требования от пользователя
Пользователь взаимодействует с приложением для ввода необходимых данных, и взаимодействие с пользователем должно быть минимальным. Ожидаемое поведение пользователя включает:
- Выбор модели в контексте набора данных
- Предоставление набора данных, относящегося к выбранной модели
- Ввод параметров для настройки модели
- Ищите идеи и анализ модели
Подробный сквозной рабочий процесс
Шаг 1. Выбор модели
Пользователь должен выбрать тип проблемы из следующих типов:
- Регресс
- Классификация
- Кластеризация
- Обнаружение аномалий
- Уменьшение размеров
Каждый тип проблемы предлагает разные модели на выбор, например:
Регрессия:
- 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.
Это пока конец шоу. Я разработал простое приложение, чтобы предоставить возможности машинного обучения для обычных пользователей, работающих в других доменах.
Это приложение можно использовать
- Как инструмент обучения в начале пути к машинному обучению
- Для быстрого понимания набора данных для специалистов по данным или разработчиков машинного обучения и многого другого.
Будущие улучшения
Это приложение можно расширить, добавив
- Поддержка глубокого обучения
- Интернет-поддержка
- Больше моделей и типов машинного обучения
- Измените дизайн пользовательского интерфейса для лучшего взаимодействия с пользователем