Спойлер: я не создаю никаких причудливых моделей машинного обучения.

В последнее время я встречал много людей, которые заинтересованы в карьере в науке о данных. Одна из первых вещей, которые они всегда спрашивают меня: «Как выглядит обычный день?». Я видел много статей, в которых дается обзор навыков и инструментов, которые используют специалисты по обработке и анализу данных, но не так много статей, в которых приводятся реальные примеры повседневных задач.

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

Краткий обзор дня

  • 8:30–9:00 — Начало моего дня
  • 9:00–10:00 — Парное программирование
  • 10:00–10:30 — Скрам
  • 10:30–11:00 — Подготовка к презентации
  • 11:30–12:00 — 1–1 с менеджером
  • 12:00–1:00 — Получение обратной связи от ведущего специалиста по данным
  • 1:00–4:30 — Код!

Начало моего дня

Обычно я начинаю свой рабочий день около 8:30 утра, после того как встаю с постели в 8:20. Я работаю удаленно с марта 2020 года, и это изменило мою жизнь. Мне нравится тишина и покой моего домашнего офиса, возможность работать в пижаме и постирать несколько вещей, пока я жду, пока запустится какой-нибудь код.

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

Если ошибок нет, я завершаю проверку и отвечаю на различные сообщения/запросы, а затем открываю инструмент отслеживания проектов/задач под названием Jira, чтобы обновить статус заявок, над которыми я работаю в течение следующих трех недель — в гибком программном обеспечении. мире разработки, это называется спринт. Отсюда я расставляю приоритеты для своих задач на день.

Парное программирование

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

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

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

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

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

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

После того, как мы помогли мне, мы переключились на задачу, с которой он столкнулся. Ему нужно было написать SQL-запрос, который вычислял бы текущие и предыдущие метрики для нескольких направлений бизнеса.

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

Схватка

Когда наступает 10:00, наступает время для ежедневной схватки моей команды.

Традиционно человек, ведущий встречу, мастер схватки, задает всем три вопроса.

  1. Что ты делал вчера?
  2. Что ты будешь делать сегодня?
  3. У вас есть блокираторы?

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

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

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

Подготовка к презентации

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

Большая часть моей роли как Data Scientist включает в себя создание презентаций для информирования других о том, что такое наука о данных, а что нет. Многие руководители слышат модные слова «искусственный интеллект» и «машинное обучение», а затем говорят: «Мы должны это сделать!» Но правда в том, что машинное обучение не всегда является решением. Часто базовая отчетность или простая автоматизация решают большинство проблем команд, и мы не должны усложнять это машинным обучением только для того, чтобы сказать, что мы это делаем.

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

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

Если вы не можете объяснить это просто, значит, вы недостаточно хорошо это понимаете — Альберт Эйнштейн

1–1 с менеджером

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

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

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

Получите отзыв от ведущего специалиста по данным

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

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

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

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

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

Код!

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

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

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

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

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

Заключение

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

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