Рабочий процесс науки о данных: он не такой линейный, как вы думаете

Синтез итерационных процессов в проектах по науке о данных

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

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

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

Что-то не так с этим линейным процессом? На самом деле ничего плохого в этом нет, именно так люди изучают алгоритмы и развивают навыки решения проблем. Единственная проблема — это не так, как это работает в реальном мире.

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

Давайте посмотрим, как этот процесс более или менее работает и какая его часть является итеративной.

Поиск проблемы

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

Большинство проектов начинаются с бизнес-проблемы — либо она уже известна, либо вам нужно ее решить. У некоторых команд будут четко определенные проблемы, например: как сегментировать клиентов, чтобы сделать маркетинг по электронной почте более рентабельным? Как улучшить процесс утверждения кредита с помощью машинного обучения (ML)? Или как выявить мошенничество в транзакциях клиентов?

Как только вы определили проблему, вы начинаете думать о решении.

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

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

Работа над проблемой

Теперь, когда у вас есть проблема, которую нужно решить, естественно, следующим шагом будет выяснить, как ее решить.

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

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

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

Продумывая методологию

После того, как вы провели комплексную проверку фоновых исследований, вы еще не думаете о моделях, инструментах и ​​методах визуализации.

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

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

Какие инструменты необходимы?

На этом этапе вы думаете о том, какие инструменты могут помочь ответить на вопрос. Если это проблема прогнозирования, должна ли работать модель прогнозирования временных рядов? Или это проблема линейной регрессии? Вам нужны ГИС-технологии? Есть ли хороший пакет в R или Python, на который вы можете положиться?

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

Вы нашли необходимые данные для выбранной модели? Если да, то вы готовы строить свою модель. Но если у вас нет всех необходимых входных данных, вам следует остановиться здесь и вернуться к методологическому процессу на шаге 2. Возможно, существуют другие инструменты/методы, для которых не требуются данные временных рядов? Как насчет динамической модели системы, которая не требует большого набора данных?

Моделирование

Если вы не слышали его раньше, приготовьтесь к шоку. Моделирование — самая простая часть рабочего процесса науки о данных. В отрасли хорошо известно, что 80% (более или менее) времени, затрачиваемого на проект, уходит на очистку данных, разработку функций и т. д.

Большая часть процесса построения и тестирования моделей довольно стандартизирована. Например, если вы решаете задачу классификации:

  • сначала вы определяете свои независимые и зависимые переменные, а затем разделяете данные на наборы для обучения, проверки и тестирования.
  • затем вы запускаете базовую модель (например, логистическую регрессию), чтобы сравнить производительность других моделей с этой базовой моделью.
  • затем вы запускаете несколько других моделей — SVM, деревья решений, случайные леса, бэггинг, AdaBoost, XGBoost столько, сколько пожелаете — все с гиперпараметрами по умолчанию.
  • выберите одну или две наиболее эффективные модели для настройки гиперпараметров (можете ли вы догадаться, почему вы не используете все модели для настройки гиперпараметров? Я отвечу на это позже).
  • наконец, вы запускаете несколько версий модели с различными комбинациями гиперпараметров, выбранных либо вручную, либо с помощью процесса GridSearch.

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

Производство и постпродакшн

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

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

Проекты по науке о данных не являются линейными

Теперь ко второму пункту, который я собирался сделать.

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

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

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

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

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

Последние мысли

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

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

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

Спасибо за чтение. Не стесняйтесь подписаться, чтобы получать уведомления о моих будущих статьях, или просто связаться со мной через или LinkedIn.