"Какая у тебя работа изо дня в день?" - Меня постоянно спрашивают об этом люди, подумывающие о подаче заявки в команду Ravelin's Detection. Это такой важный вопрос, и, честно говоря, его слишком много, чтобы осветить его без отдельной публикации в блоге, так что мы здесь.

В двух словах

Для контекста, я старший специалист по анализу данных в Ravelin и работаю здесь более 3 лет. Я начинал юниором, только что закончил буткемп. С тех пор мы увеличились вдвое - на момент написания было 9 Detectionista и более 100 Ravelino. Наша команда отвечает за создание и развертывание моделей, которые обнаруживают мошеннических клиентов для онлайн-продавцов, таких как Deliveroo, River Island и Ola. Мы тесно сотрудничаем с двумя другими «клиентскими» группами: Integrations, которые помогают клиентам отправлять качественные данные в наш API, и Investigations, которые работают с клиентскими специалистами по обработке данных и специалистами по мошенничеству, которые работать с клиентами, чтобы понять их данные и проанализировать новые тенденции мошенничества.

Будучи стартапом в области машинного обучения, наши прогнозы модели представляют продукт, поэтому (по крайней мере, мне нравится думать) обнаружение представляет собой бьющееся сердце компании. Наша работа тесно связана с производством; Хотя мы развертываем индивидуальную модель для каждого клиента, эти модели не создаются вручную в записной книжке. Каждая модель построена с помощью нашего полностью автоматизированного конвейера, что означает, что мы несем ответственность за инженерные улучшения самого конвейера: новые функции, фильтры данных, добавление отчетов для интерпретации поведения модели и т. Д. В этом смысле я бы описал нашу работу как нечто большее. «Инженерия машинного обучения» по сравнению со средней ролью в области науки о данных. Мы применяем передовые методы работы с программным обеспечением и гарантируем, что любая работа одного специалиста по данным (DS) помещается в наш репозиторий и может использоваться другими.

Держать свет включенным

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

Мы называем эту часть нашей работы «держать свет включенным», и обычно она занимает большую часть первых 6–12 месяцев работы DS в Detection. На этом этапе вы узнаете, как запускать и изменять наш конвейер (направленный ациклический граф, организованный Луиджи), писать хорошие модульные и интеграционные тесты (Pytest), разрабатывать новые функции (Go) и использовать или создавать инструменты для количественной оценки того, является ли модель-кандидат стоит развернуть. Поскольку мы участвуем в полном жизненном цикле модели, я лично считаю, что эта работа дает большое представление о радостях и опасностях моделей машинного обучения в производстве, например, о дрейфе модели, петлях обратной связи и контрфактических проблемах. Вы также много узнаете о самом мошенничестве, и - поверьте мне - это более увлекательно, чем вы могли подумать.

Проекты

Когда вы научитесь держать свет включенным и у вас будет несколько живых и счастливых клиентов, я бы сказал, что эта часть вашей работы упадет до 15–30% рабочей недели. Каждый квартал мы проводим ретроспективу, а затем составляем проекты, которые займут большую часть времени Detectionista. У них, как правило, есть основной и дополнительный исполнители, поэтому вас объединяют с кем-то, кто понимает цели вашего проекта, помогает разрабатывать решения или преодолевать проблемы и отслеживать прогресс.

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

  • Мы заложили в код свои предположения о том, каких клиентов и периоды данных мы должны обучать, но никогда не проверяли эти гипотезы официально. В недавнем проекте были сформулированы тесты AB в сочетании с панелями мониторинга, чтобы прояснить их.
  • У нас есть проблема холодного старта, из-за которой мы не можем обучать пользовательские модели без периода исторических данных. Поэтому мы экспериментировали с построением «общих» моделей, которые были обучены на данных от всех клиентов или клиентов из определенных отраслей. . Это включало построение нового конвейера с собственным набором критериев оценки.
  • Мы можем количественно оценить прирост производительности от идеи новой функции, разработав ее на Go, но поэкспериментировать с функциями, основанными на данных между клиентами или клиентами, гораздо сложнее реализовать в нашей инфраструктуре. В моем последнем проекте я построил фреймворк в инструменте под названием dbt, который дает нашей команде автономию для тестирования сложных идей с помощью запросов SQL, а не реализации их в Go.
  • Мы обрабатываем категориальные поля с помощью функций встраивания, разработка и поддержка которых требует большого объема работы. Поэтому мы внедрили алгоритм Google TabNet для автоматической обработки категориальных полей. Стоит отметить, что подобный проект глубокого обучения должен работать в обратном направлении; у нас есть ограничения по задержке (
  • Наш конвейер поддерживает обучение различным алгоритмам (например, Random Forest, XGBoost, TabNet, DevNet). Более крупный проект включал обучение и понимание ансамблей этих моделей и способов их развертывания и объяснения в производственной среде.

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

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

Захватывающий тип «проекта», о котором стоит упомянуть, - это подтверждение концепций, которые мы придерживались для очень крупных, высокопоставленных клиентов. Они повторяются каждый год или около того и включают в себя отправку клиентом помеченных исторических данных вместе с частью немаркированных данных, по которым мы должны прогнозировать мошенничество. Подобно соревнованию Kaggle, вся наша команда посвящает все свое время решению этой проблемы в течение 2–4 недель, совместно работая над проектированием конвейеров или улучшением функций. Наши окончательные результаты по набору данных без маркировки обычно сопоставляются с результатами конкурентов. Для меня в Равелин самые захватывающие времена, когда я работала над этим доказательством концепций, не в последнюю очередь из-за большого количества празднований, которые следовали за каждым из них.

Сама команда

Когда я присоединился к команде, мой менеджер сказал мне, что я могу быть «любым специалистом по данным, которого захочу», и это было правдой. Наша команда обладает разнообразным опытом и навыками, и люди естественным образом попадают в ту область, которая им интересна. У нас есть члены команды, которые руководят операциями машинного обучения (Kubernetes и Docker) или глубоким обучением и НЛП. Некоторые из нас увлечены качеством данных и отладкой клиентских моделей. Другие - фанатики мошенничества и платежей, которые помогают нам оставаться в курсе меняющейся ситуации. Все навыки ценятся одинаково, а разнообразие означает, что мы можем эффективно реагировать на вызовы.

Что касается командного духа, мы работаем довольно автономно, и нам рекомендуется:

  • бросить вызов предположениям, которые встроены в наш процесс моделирования
  • изучить гипотезы или новые пакеты, которые могут помочь производительности или продуктивности
  • напишите «широко мыслящие» идеи для решения проблем в форме RFC (запрос комментариев), которые можно будет распространить среди всей компании.

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

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

Обобщить

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