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

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

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

Давайте решим эту проблему по одному кусочку за раз:

⦁ Для начала попробуем понять, с какими проблемами мы столкнемся при продуктивном использовании нашей модели.

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

⦁ и, наконец, давайте рассмотрим некоторые подходы, с помощью которых можно решить эту проблему

Проблема дрейфа модели

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

Есть три допущения, которые нам нужно сделать на этом пути:

⦁ Будущие данные должны быть аналогичны тренировочным данным (прошлые данные).

⦁ Распределение функций и целей должно оставаться достаточно постоянным.

⦁ Нет признаков, влияющих на целевую переменную и не охваченных моделью ИЛИ, если они есть, они вообще не меняются.

Помня об этом, примите во внимание тот факт, что среда, в которой развернута наша модель, постоянно меняется. Прогностическая эффективность модели со временем обязательно ухудшится. Почему?

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

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

Типы и примеры смещения модели:

Давайте посмотрим пример из каждой категории.

Дрейф данных:

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

Движение концепции:

Это происходит, когда связь между входными и целевыми переменными со временем меняется, что означает, что изменились свойства нашей зависимой переменной. Поскольку описание того, что мы хотим предсказать, меняется, модель дает неточные предсказания. Например, спам с каждым днем ​​становится все лучше, и нам нужны новые границы, чтобы определить, что такое спам. Раньше было очень легко обнаружить спам-письма, потому что тогда нам нужно было только смотреть на спам-ключевые слова (лотерея, приз, удача и т. д.). Ниже приведен пример.

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

Изменения исходных данных:

Это относится к оперативным изменениям данных в конвейере данных. Примером этого является то, что функция больше не создается, что приводит к отсутствующим значениям. Другим примером является изменение измерения (например, мили в километры).

Как мы отслеживаем дрейф модели?

Теперь не обманывайтесь этим именем. Наша модель никуда не дрейфует. Дрейфует распределение данных или отношения функция-цель.

Существует три основных подхода к обнаружению дрейфа модели:

Мониторинг производительности

Это самый простой способ измерения распада модели. Мы напрямую отслеживаем производительность и устанавливаем нижний порог, который нельзя нарушать. Для этого подхода нам понадобится:

  1. Доступ к наземным меткам правды.
  2. Некоторая тестовая функциональность для сравнения выходных данных модели (прогноза) с истинной реальностью и, таким образом, вычисления производительности модели.

Контролировать дрейф данных.

Обнаружение изменений в распределении входных данных модели = признаков.

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

Контролировать изменение концепции.

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

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

Переобучение модели

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

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

⦁ Правильная сборка обучающих данных из нескольких источников во избежание предвзятости.

⦁ Правильная разработка функций.

⦁ Сравнение производительности с разными алгоритмами.

⦁ Хорошая оценка погрешности.

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

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

Работа со старыми и новыми данными.

Данные — это то, что будет генерироваться бесконечно. У нас может быть непрерывный поток новых данных, но это не означает, что нашу модель нужно переобучать каждый раз, когда она видит новые данные (как в случае онлайн-обучения и непрерывного обучения). Нас интересуют только те точки данных, которые содержат новые отношения, которые наша модель еще не видела. Таким образом, когда мы объединяем эти новые точки данных со старыми, наша модель лучше приспособлена для сопоставления отношений. Существуют различные способы объединения новых и старых данных, которые обсуждались в следующей статье, подробности можно найти здесь.

Когда проводить переподготовку?

Как только что упоминалось, снижение производительности является основной причиной проведения процесса переобучения. Переобучение можно запустить как по триггеру (например, кликабельность упала ниже 1,91%), так и по расписанию (например, каждый понедельник в 2 часа ночи).

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

Итак, это все было на переподготовке моделей. До новых встреч в следующей статье.

А пока удачного обучения 😊.