Работа над проектом машинного обучения — это не только работа над созданием модели, но и сосредоточение внимания на других аспектах проекта, таких как развертывание, расширяемость, модульность и т. д. Да, мы создаем модели, да, мы их обучаем, и да, мы делаем ставку на точность модели для предсказания. Но это не весь жизненный цикл.

Нужно подумать о:

→ Как данные будут собираться/обновляться на регулярной основе? (Это когда у вас есть нужные атрибуты данных, необходимые для обучения модели.)

→ Python или R?

→ Вам потребуются восходящие или нисходящие данные или и то, и другое?

→Где будет развернута модель? на стороне клиента или на стороне сервера.

→Сколько экземпляров модели нужно развернуть?

→что насчет балансировки нагрузки?

По моему опыту, я разделил деятельность по разработке в проекте ML на следующие 3 этапа:

1.Сбор и очистка данных

2.Создание модели

3. Развертывание модели

Этап 1. Сбор и очистка данных

Сбор данных:

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

→ Проверьте источники данных (таблицы БД, файлы txt, excels, Json)

→ Пройдитесь по атрибутам/столбцам.

→ Узнайте у других членов команды/администраторов баз данных/SME вашего проекта, что означают эти атрибуты.

→ Соберите необходимые атрибуты в единый формат, такой как файл excel, csv или txt.

→ Подготовьте стратегию/основу того, как вы планируете запоминать одни и те же атрибуты, если вам нужно еще больше повысить точность модели.

Очистка данных:

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

В реальном времени имена ваших столбцов будут содержать пробелы, специальные символы и т. д. Ваши данные, если они вообще будут представлены в текстовом формате, обычно будут чрезвычайно беспорядочными и неструктурированными, с пробелами, ненужными кавычками, символами Юникода и орфографическими ошибками. . На их исправление действительно нужно потратить значительное количество времени. Например: мне нужно, чтобы значения в столбце были как «be_smart», но мои данные также содержали бы «be-smart» для того же столбца. К счастью, в python есть достаточно пакетов и методов для очистки/управления такими данными.

Мой опыт: Тратьте как можно больше времени на сбор и очистку ваших данных, чем чище данные, тем более конкретной будет ваша модель.

→ удалить нули

→ удалить пробелы

→ удалить дубликаты

→ Обработка выбросов

→ Обработка отсутствующих значений и т. д.

→ Категориальные переменные.

→ Регулярные выражения и т. д.

Этап 2:

Создание модели:

Вы можете создать модель, выбрав переменные в соответствии с вашими требованиями, и использовать очищенные данные для обучения/тестирования. Здесь знание аналитики, NN, DL, статистики приходит на помощь в зависимости от ваших требований. Нужно знать, когда использовать логистическую регрессию для дерева решений или когда использовать SVM для случайного леса. Обычно я пытаюсь запустить 2–3 алгоритма и посмотреть, какой из них дает лучший результат/точность для моих данных. После создания модели ее необходимо тщательно протестировать.

→ подобрать алгоритм исходя из вашей постановки задачи

→ Попробуйте с ним пару других связанных алгоритмов

→ выберите вариант с наибольшей точностью

Я делаю что-то вроде этого: создаю модели с разными алгоритмами регрессии
Например:

случайный лесной классификатор,

ЛинейныйSVC(),

Логистическая регрессия ,

МногочленNB()

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

Этап 3:

Развертывание модели:

Еще одна проблема, с которой я столкнулся во время работы над проектом по машинному обучению, — это развертывание модели в производственной среде. На ноутбуке Jupyter тестирование с использованием функции прогнозирования с простым вводом выполняется довольно просто. Но в режиме реального времени, как вы планируете выставить свою модель? это через веб-сервис или в комплекте с клиентом или как запланированное задание?. Вы либо развертываете свои модели с нуля (мой менее предпочтительный способ), либо используете доступные платформы, такие как IBM Watson, Azure, или настраиваемые платформы развертывания для машинного обучения.Бывают случаи, когда у вашего клиента может быть собственная платформа, а вы может потребоваться развернуть на нем.

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

→сколько экземпляров модели создать?

→ Предоставьте модель как веб-сервис или свяжите ее и поместите в клиент (для мобильных приложений)

→ сколько экземпляров докеров может понадобиться?

→ как будет происходить балансировка нагрузки?

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