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

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

Это было намного больше, чем изменение входных данных

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

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

Во-первых, нам нужно было изменить статические входные данные на входные данные в реальном времени. При разработке алгоритмов мы извлекли данные в несколько файлов CSV и построили наши алгоритмы на основе набора данных. На этот раз нам нужно было напрямую подключиться к облачной базе данных и извлечь данные нового клиента в реальном времени. Таким образом, мы потратили много времени на поиск и применение правильных API-интерфейсов на Python для подключения наших ноутбуков к облачной базе данных и написания запросов для выбора всех данных, необходимых для выполнения алгоритмов.

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

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

Расширение моего понимания науки о данных

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

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

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

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

Повышение уверенности в науке о данных

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

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

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

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