Разработка модели машинного обучения и операции с моделью: принципы и практика

1. Введение
Использование Machine Leaning (ML) значительно расширилось в сценариях анализа корпоративных данных для извлечения ценной информации из бизнес-данных. Следовательно, очень важно иметь экосистему для создания, тестирования, развертывания и обслуживания моделей машинного обучения корпоративного уровня в производственных средах. Разработка модели машинного обучения включает в себя сбор данных из нескольких надежных источников, обработку данных, чтобы сделать ее пригодной для построения модели, выбор алгоритма для построения модели, построение модели, вычисление показателей производительности и выбор наиболее эффективной модели. Обслуживание модели играет критически важную роль после того, как модель будет запущена в производство. Обслуживание модели машинного обучения включает в себя поддержание модели в актуальном состоянии и в соответствии с изменениями исходных данных, поскольку существует риск того, что модель со временем устареет. Также, управление конфигурацией модели машинного обучения играет важную роль в управлении моделью по мере роста количества моделей.
В этой статье основное внимание уделяется принципам и отраслевым стандартам, включая инструменты и технологии, используемые для разработки, развертывания и обслуживания моделей машинного обучения в корпоративной среде.
2. Разработка модели
Жизненный цикл модели машинного обучения (ML) – это процесс, охватывающий сразу от идентификации исходных данных до разработки модели, развертывания модели и обслуживания модели. На высоком уровне вся деятельность подпадает под две широкие категории, такие как разработка моделей машинного обучения и операции с моделями машинного обучения.
Разработка модели машинного обучения (ML) включает серию шагов, как показано на рисунке 1.
Рис.1: Жизненный цикл разработки модели машинного обучения (ML)
Шаги жизненного цикла разработки модели машинного обучения можно в целом разделить на следующие: исследование данных, построение модели, настройка гиперпараметров модели и выбор модели с оптимальной производительностью.
Исследовательский анализ данных– важный шаг, который начинается после того, как бизнес-гипотеза готова. Этот шаг занимает 40-50% от общего времени проекта, так как результат модели зависит от качества входных данных, подаваемых для обучения модели. Исследовательский анализ данных включает идентификацию атрибутов данных, предварительную обработку данных и проектирование функций. Идентификация атрибутов включает в себя идентификацию переменных-предикторов / характеристик (входные данные) и целевой переменной / переменной класса (выход) по типам данных (строковые, числовые или дата-время) и классификацию функций на категориальные и непрерывные переменные, что помогает в применении соответствующей обработки, чтобы быть задается переменной алгоритмом при построении модели.
Предварительная обработка данных включает в себя идентификацию недостающих значений и выбросов и заполнение этих пробелов путем вычисления среднего значения для количественных атрибутов и режима для качественных атрибутов данных для повышения предварительной силы модели. Выбросы вызывают увеличение среднего и стандартного отклонения, которое можно устранить, взяв значение натурального логарифма, что уменьшает вариацию, вызванную экстремальными значениями.
Функциональная инженерия– это следующий по важности шаг в исследовательском анализе данных, когда необработанный набор данных обрабатывается для преобразования типов данных строковых, datetime или числовых в числовые векторы для алгоритма машинного обучения для понимания и построения эффективной модели прогнозирования. Кроме того, помеченные категориальные данные (например, красный, зеленый, синий цвет; производительность → плохое, удовлетворительное, хорошее, очень хорошее, отличное; риск → низкий, средний, высокий; состояние → запущено, выполняется, приостановлено, закрыто. ; пол → мужской / женский; is_loan_approved / is_claim_fraudulent → yes / no) не могут быть поняты алгоритмом машинного обучения в его истинном контексте, поэтому его необходимо преобразовать в числовые данные.
Кодирование признаков – это широко используемый метод преобразования категориальных данных в непрерывные (числовые) значения, например, кодирование цвета как 1,2,3; производительность как 1,2,3,4,5; риск как 1,2,3; статус 1,2,3,4; гендер / is_loan_approved / is_claim_fraudulent как 0/1 и т.д. ) и одно горячее кодирование в случае, если данные категориальных переменных имеют двоичную природу (например, gender, is_loan_approved, is_claim_fraudulent). Набор библиотек доступен в R или Python для реализации этих методов кодирования. В некоторых случаях создается набор фиктивных переменных или производных переменных, особенно при обработке типов данных «data».
Как только категориальные текстовые данные преобразованы в числовые данные, данные готовы для подачи в модель; в качестве последнего шага необходимо выбрать соответствующие функции, которые помогают повысить точность модели, с помощью таких методов, как одномерный выбор (статистическая мера), важность функции (свойство модели) и матрица корреляции (определяет, какие функции наиболее связаны с целевой переменной). Эти методы обнаруживают коллинеарность между двумя переменными, где они сильно коррелированы и содержат аналогичную информацию о дисперсии в пределах данного набора данных.
Фактор инфляции дисперсии (VIF) может оказаться полезным для обнаружения мультиколлинеарности, когда в модель включены три или более переменных с высокой степенью корреляции. Ключевые моменты исследовательского анализа данных представлены на рисунке 2, как показано ниже. Эти методы обнаруживают коллинеарность между двумя переменными, где они сильно коррелированы и содержат аналогичную информацию о дисперсии в пределах данного набора данных. Фактор инфляции дисперсии (VIF) может оказаться полезным для обнаружения мультиколлинеарности, когда в модель включены три или более переменных с высокой степенью корреляции.
Ключевые моменты исследовательского анализа данных представлены на рисунке 2, как показано ниже. Эти методы обнаруживают коллинеарность между двумя переменными, где они сильно коррелированы и содержат аналогичную информацию о дисперсии в пределах данного набора данных. Фактор инфляции дисперсии (VIF) может оказаться полезным для обнаружения мультиколлинеарности, когда в модель включены три или более переменных с высокой степенью корреляции. Ключевые моменты исследовательского анализа данных представлены на рисунке 2, как показано ниже.
Рис 2: Исследовательский анализ данных
Построение модели машинного обучения требует разделения данных на два набора, такие как «обучающий набор» и «набор для тестирования» в соотношении 80/20 или 70/30; Набор контролируемых (для помеченных данных) и неконтролируемых (для немаркированных данных) алгоритмов доступен на выбор в зависимости от характера входных данных и бизнес-результатов, которые необходимо предсказать. В случае помеченных данных рекомендуется выбрать алгоритм логистической регрессии, если прогнозируемый результат имеет двоичный (0/1) характер.
Выберите классификатор дерева решений (или) классификатор Random Forest® (или) KNN, если прогнозируемый результат имеет мультиклассовый (1/2/3 / …) характер; и выберите алгоритм линейной регрессии (например, регрессор дерева решений, регрессор случайного леса), если прогнозируемый результат является непрерывным по своей природе. Алгоритм кластеризации (без учителя) предпочтителен для анализа немаркированных / неструктурированных (текстовых) данных (например, кластеризация k-средних).
Алгоритмы искусственной нейронной сети (ANN) предлагаются для анализа других типов неструктурированных (изображение / голос) данных, таких как сверточные нейронные сети (CNN) для распознавания изображений и рекуррентные нейронные сети (RNN) для распознавания голоса и обработки естественного языка (NLP). Модель построена с использованием обучающего набора данных и делает прогноз с использованием тестового набора данных. Использование моделей глубокого обучения (нейронных сетей) предпочтительнее регрессионных моделей (моделей ML) для повышения производительности, поскольку эти модели вводят дополнительный уровень нелинейности с введением функции активации (AF).
Выбор алгоритма для различных сценариев представлен на рисунке 3, как показано ниже. такие как сверточные нейронные сети (CNN) для распознавания изображений и рекуррентные нейронные сети (RNN) для распознавания голоса и обработки естественного языка (NLP). Модель построена с использованием обучающего набора данных и делает прогноз с использованием тестового набора данных. Использование моделей глубокого обучения (нейронных сетей) предпочтительнее регрессионных моделей (моделей ML) для повышения производительности, поскольку эти модели вводят дополнительный уровень нелинейности с введением функции активации (AF).
Рис 3: Выберите правильный алгоритм
Вычисление производительности модели является следующим логическим шагом для выбора правильной модели. Показатели производительности модели будут определять окончательный выбор модели, которые включают вычисление точности, точности, отзыва, оценки F1 (средневзвешенное значение точности и отзыва), а также матрицу путаницы для моделей классификации и коэффициент определения для регрессионных моделей. Не рекомендуется использовать точность в качестве меры для определения производительности моделей классификации, которые обучаются с несбалансированными/искаженными наборами данных, для правильного выбора модели классификации рекомендуется вычислять точность и отзыв.
Настройка гиперпараметров модели является настоятельно рекомендуемым шагом в этом процессе, продолжайте, пока производительность модели не достигнет примерно 80-85%. Например, алгоритм случайного леса использует максимальную глубину, максимальное количество объектов, количество деревьев и т.д. В качестве гиперпараметров, которые можно интуитивно настроить для повышения точности модели. Аналогично, алгоритм нейронных сетей учитывает количество слоев, размер пакета, количество эпох, количество выборок и т.д. Рекомендуется использовать метод поиска по сетке для поиска оптимальных гиперпараметров модели, что приводит к наиболее “точным” прогнозам. Кроме того, также рекомендуется выполнить перекрестную проверку, так как иногда повышение точности модели может быть связано с переоснащением (слишком чувствительная модель, неспособная к обобщению) или недостаточной подгонкой (очень обобщенная модель) модели с использованием метода перекрестной проверки k-кратной. Чтобы избежать переоснащения, увеличьте размер выборки обучающих данных, чтобы ввести больше шаблонов, или уменьшите количество функций, чтобы избежать сложности, или выполните регуляризацию данных с использованием методов регуляции гребня и лассо, которые уменьшают ошибку/штраф. Аналогичным образом, чтобы избежать недостаточной подгонки, увеличьте сложность модели, например, перейдя от линейной к нелинейной или добавив больше скрытых слоев (эпох) в нейронную сеть, или добавьте больше функций, которые вводят скрытые шаблоны. Однако увеличение объема данных не решает проблему недостаточного соответствия, а скорее снижает производительность модели.
Выберите модель с оптимальной производительностью.
Лучшие практики разработки моделей машинного обучения: рекомендуемые передовые методы разработки моделей машинного обучения: (1) Выполнить четкую гипотезу для выявленной бизнес-проблемы перед самой идентификацией атрибутов; (2) Сначала постройте модель, используя базовый алгоритм, например логистическую регрессию или дерево решений, и скомпилируйте показатели производительности, которые дают достаточную уверенность в релевантности данных, прежде чем переходить к более изощренным алгоритмам, таким как нейронные сети; (3) Сохраняйте промежуточные контрольные точки при построении модели, чтобы отслеживать ее гиперпараметры модели и связанные с ней показатели производительности, что дает возможность обучать модель постепенно и принимать правильные решения, когда дело касается производительности и времени обучения; (4) Используйте реальные производственные данные для обучения модели, чтобы повысить точность прогнозов.
Модельные операции
Операции модели с наклоном машины (ML) относится к реализации процессов для поддержки моделей машинного обучения в производственной среде. Общая проблема, встречающаяся в типичном корпоративном сценарии, заключается в том, что модели машинного обучения, работающие в лабораторной среде, во многих случаях остаются на стадии проверки концепции. Если модель запускается в производство, она устаревает из-за частого изменения исходных данных, что требует перестройки модели. Поскольку модели повторно обучаются несколько раз, необходимо отслеживать производительность модели и соответствующие функции и гиперпараметры, которые используются для повторного обучения модели. Для выполнения всех этих операций должен существовать четко определенный воспроизводимый процесс на месте для реализации операций сквозного машинного обучения (MLOps), который поддерживает актуальность и точность модели в производственной среде.
Рис.4: Жизненный цикл операций модели машинного обучения (ML)
Переобучение модели очень важно через регулярные промежутки времени, скажем, раз в две недели или ежемесячно, ежеквартально или по запросу, поскольку весьма вероятно, что базовые исходные данные будут меняться в течение определенного периода в реальном сценарии. Задание “cron” запланировано для переобучения модели через предопределенные интервалы, либо по мере изменения исходных данных, либо по мере снижения производительности модели. В код модели могут быть некоторые изменения из-за настройки гиперпараметров во время переобучения модели. Требуется автоматизировать эти операции модели с помощью автоматизированного конвейера модели.
Типичный автоматизированный конвейер моделей в производственных средах предприятия включает 3 типа хранилищ, таких как хранилище функций, хранилище метаданных и реестр моделей. Хранилище функций содержит данные, извлеченные из различных исходных систем и преобразованные в функции в соответствии с требованиями модели. Конвейер машинного обучения партиями берет данные из хранилища функций для обучения модели.
Хранилище метаданных представляет собой централизованную систему отслеживания (учета) моделей, поддерживаемую на уровне предприятия, содержащую метаданные модели на каждом этапе конвейера. Хранилище метаданных модели облегчает переход стадии модели, скажем, от стадии подготовки к производству и архивированию. Обучение модели выполняется в одной среде, а развертывание – в других средах, где вывод модели будет выполняться просто путем указания пути к удаленному файлу модели. Хранилище метаданных модели используется для отслеживания модельных экспериментов и сравнения модельных экспериментов с их производительностью.
Метаданные модели включают версию набора обучающих данных, ссылки на обучающие прогоны и эксперименты. Модель реестра содержит данные всех обученных моделей, такие как версия обученной модели, дата обучения модели, метрики обучения модели, гиперпараметры, используемые для обучения модели, прогнозируемые результаты и диагностические диаграммы (матрица путаницы, кривые ROC). Соответствующая модель будет выбрана из реестра моделей на основе требований предполагаемого целевого пользователя. Хранилище метаданных модели и реестр моделей могут быть реализованы (индивидуализированы) с использованием облегченной базы данных, такой как SQLite и набора функций Python; или набор продуктов с открытым исходным кодом / проприетарных продуктов, таких как MLflow (версия сообщества / управляемая служба от Databricks). Этот инструмент предоставляет возможность управлять моделями с помощью графического интерфейса пользователя или набора API.
Развертывание модели: модели могут быть развернуты в производственных средах для выполнения прогнозирования либо в режиме пакетного вывода, либо в режиме вывода онлайн. Пакетный вывод может быть достигнут, если запланировать выполнение задания с определенным временным интервалом и отправить результаты по электронной почте предполагаемым пользователям. Онлайн вывод может быть достигнут путем раскрытия модели как веб-службы с использованием фреймворков, таких как библиотека python flask или библиотека streamlit, для разработки интерактивных веб-приложений и вызова модели с помощью конечной точки HTTP.
Упаковка / распространение модели: обученная модель машинного обучения сериализуется в различные форматы, чтобы иметь возможность распространять модель для развертывания в средах TEST / PROD. Наиболее распространенными форматами являются pickle (для моделей машинного обучения или глубокого обучения, разработанных на Python), ONNX (формат открытого нейронного обмена для моделей глубокого обучения) и PMML (XML-формат на основе языка разметки прогнозных моделей, специально для моделей, разработанных с использованием логистическая регрессия и нейронные сети). Модель можно упаковать как файл .jar или как образ контейнера dokers и развернуть в качестве службы прогнозирования в производственной среде.
Контейнеризация модели может быть достигнута путем создания образа doker, связанного с кодом обучения и вывода, вместе с необходимыми данными обучения и тестирования и файлом модели для будущих прогнозов. После создания файла doker в комплекте с необходимой моделью машинного обучения можно построить конвейер CI / CD с помощью такого инструмента, как Jenkins. Этот образ контейнера doker может быть представлен как REST API, так что любые внешние заинтересованные стороны могут использовать эту модель машинного обучения либо из локального, либо из общедоступного облака (в случае высоких требований к вычислениям для построения модели глубокого обучения). В случае упаковки и управления несколькими контейнерами dokers можно использовать Kubeflow , набор инструментов машинного обучения для Kubernetes.
Мониторинг производительности модели является важным действием, при котором прогнозируемый результат (например, прогнозируемая продажная цена товара) по сравнению с фактической стоимостью (фактической продажной ценой) постоянно отслеживается. И рекомендуется понимать реакцию конечных пользователей на окончательные прогнозы. В некоторых сценариях рекомендуется поддерживать параллельную работу старой и новой модели, чтобы понять различия в производительности обеих моделей (проверка модели). Обязательно устранять снижение производительности, которое возникает из-за “ дрейфа данных ” (изменения базового шаблона данных источника из-за сезонности и тенденции, например, данные о продажах на конец года (или) добавление новых категорий (или) один конкретный атрибут не используется. (Не генерируется вышестоящими системами) и «дрейф модели» (изменение статистических свойств целевой переменной, например, изменение самого определения мошеннической транзакции). Самый точный способ измерить дрейф модели – это измерить показатель F1, который объединяет точность и отзывчивость классификатора в единую метрику путем взятия их среднего гармонического значения. Модель будет переобучаться, когда дрейф модели (оценка F1) упадет ниже определенного порога или через регулярные промежутки времени (пакетный режим), или обучить модель, как только данные станут доступны (онлайн-обучение). Очень важно собирать журналы моделей и журналы прогнозов с помощью популярных инструментов ведения журналов, таких как elasticstack и fluentd.
Управление версиями модели является обязательным действием в управлении моделями машинного обучения, поскольку модель будет регулярно переобучаться в связи с изменениями в исходных данных или в соответствии с требованиями аудита и соответствия требованиям. Исходные данные, сценарии обучения модели, эксперимент с моделью и обученная модель версируются вместе в репозитории кода. Доступны инструменты с открытым исходным кодом, такие как Data Version Control (DVC) или AWS CodeCommit, которые используют Git в качестве базового репозитория кода для целей управления версиями модели.
Роли в разработке проектов машинного обучения. В реализации разработки и эксплуатации модели машинного обучения задействованы различные роли. Data Engineer анализирует бизнес-данные из различных источников и обеспечивает доступность актуальных и актуальных данных с требуемой степенью детализации и качества экономичным способом. Специалисты по обработке данных изучают данные, выполняют предварительную обработку данных и проектирование функций, построение модели и выбирают правильную модель, которая наилучшим образом соответствует прогнозным / предписывающим требованиям бизнеса. Обычно специалисты по анализу данных используют подход, основанный на гипотезах, чтобы выбрать модель, которая соответствует требованиям. ML Engineer гарантирует, что построенная модель надежно дает результаты, и оценивает необходимость повторного обучения модели, отслеживая ее результат. Разработчик веб-приложений создает необходимый компонент уровня представления для вызова и представления результатов предполагаемым заинтересованным сторонам.
Рекомендации по развертыванию модели машинного обучения
Рекомендуемые передовые методы развертывания модели:
- Автоматизировать шаги, необходимые для разработки и развертывания модели машинного обучения, с помощью инструментов DevOps, которые дают дополнительное время для переобучения модели;
- Выполнять непрерывное тестирование модели, мониторинг производительности и переподготовку после ее производственного развертывания, чтобы поддерживать модель актуальной / актуальной по мере изменения исходных данных для прогнозирования желаемого результата (ов);
- Реализовать ведение журнала при отображении моделей машинного обучения в виде API, что включает в себя сбор входных функций / выходных данных модели (для отслеживания дрейфа модели), контекста приложения (для отладки производственных ошибок), версии модели (если в производственной среде развернуто несколько повторно обученных моделей);
- Управляйте всеми метаданными моделями в одном хранилище.