Сокращение сроков реализации проектов в области науки о данных: Часть 3

Автор: Дмитрий Иванов [Команда P9X]

~8 минут чтения

Части 1 и 2 этой серии были посвящены техническому аспекту улучшения процесса экспериментирования

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

Провал в планировании — это планирование провала

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

Хотя энтузиазм заслуживает похвалы, ситуация может быстро измениться. Представьте себе, что прошли месяцы, а вы всё ещё проводите эксперименты после того, как ранее провели сотни, пытаясь настроить гиперпараметры, чтобы добиться дополнительного улучшения производительности модели на 1–2%. Ваша окончательная конфигурация модели превратилась в сложный взаимосвязанный ансамбль, использующий 4–5 базовых моделей, которые необходимо обучать и отслеживать. Наконец, после всего этого вы обнаруживаете, что ваша модель едва улучшает текущий процесс.

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

Собирайте больше бизнес-информации, а затем действуйте просто

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

Ваша задача — не построить модель, ваша задача — решить бизнес-проблему, которая может включать в себя модель!

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

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

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

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

Конечно, это надуманная проблема, но она, надеюсь, иллюстрирует, что ваша роль здесь — устранить бизнес-проблему, с которой они столкнулись, а не обязательно построить модель для этого.

Имейте чёткий план экспериментирования

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

Учитывайте любые ограничения

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

Некоторые примеры ограничений, которые могут быть наложены на эксперименты:

  • Временные рамки: позволить экспериментам продолжаться вечно — рискованное занятие, поскольку вы рискуете тем, что ваше решение так и не будет реализовано. Поэтому принято давать определённое время для разработки жизнеспособного рабочего решения, после чего вы переходите к чему-то другому, если это неосуществимо.
  • Финансовые: проведение экспериментов занимает вычислительное время, а это стоит денег. Это особенно актуально, если вы используете сторонние вычислительные ресурсы, где виртуальные машины обычно рассчитываются по часам. Если вы не будете осторожны, вы можете легко накопить огромный счёт за вычислительные ресурсы, особенно если вам потребуются, например, GPU. Поэтому нужно понимать стоимость ваших экспериментов.
  • Доступность ресурсов: ваш эксперимент будет не единственным в вашей организации, и могут быть фиксированные вычислительные ресурсы. Это означает, что вы можете быть ограничены в количестве экспериментов, которые вы можете проводить одновременно. Поэтому вам нужно будет проявить смекалку, выбирая, какие направления работы исследовать.
  • Объяснимость: хотя понимание решений, принимаемых вашей моделью, всегда важно, оно становится критическим, если вы работаете в регулируемой отрасли, такой как финансы, где любая предвзятость в вашей модели может иметь серьёзные последствия. Чтобы обеспечить соответствие требованиям, вам может потребоваться ограничиться более простыми, но лёгкими для интерпретации моделями, такими как регрессии, деревья решений или машины опорных векторов.

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

Начните с простых базовых показателей

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

  • Мало или вообще нет гиперпараметров для оценки, поэтому быстрая итерация экспериментов.
  • Очень просто объяснить процесс принятия решений.
  • Более сложные модели должны быть лучше этой.
  • Этого может быть достаточно для решения поставленной задачи.

Важно чётко понимать, какую дополнительную сложность вы вносите с точки зрения производительности.

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

Использование необработанных и полуобработанных данных

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

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

Нетабличные данные создают проблемы для традиционных методов машинного обучения.

Существует несколько различных тактик для решения этих сценариев:

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

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

Оценивайте производительность модели справедливо

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

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

Справедливая оценка даёт абсолютную уверенность в результатах.

Знайте, когда остановиться

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

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

  • Ваше предложенное решение уже отвечает бизнес-проблеме.
  • Дальнейшие эксперименты демонстрируют убывающую отдачу.
  • Ваши эксперименты не дают желаемых результатов.

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

Заключение

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

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

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