Работа над проектом машинного обучения — это не только работа над созданием модели, но и сосредоточение внимания на других аспектах проекта, таких как развертывание, расширяемость, модульность и т. д. Да, мы создаем модели, да, мы их обучаем, и да, мы делаем ставку на точность модели для предсказания. Но это не весь жизненный цикл.
Нужно подумать о:
→ Как данные будут собираться/обновляться на регулярной основе? (Это когда у вас есть нужные атрибуты данных, необходимые для обучения модели.)
→ 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 совместима с платформой, и вам нужно разобраться с шагами, необходимыми для развертывания вашей модели. Вам не нужно беспокоиться о каких-либо других вещах, кроме как убедиться, что ваша модель работает эффективно и результативно, и в случае, если вам нужно лучше обучить свою модель, убедитесь, что данные доступны для вашей модели через платформу.