Хабр, привет! Мы взяли интервью у Сергея Чеканского, выпускника программы «Специалист по большим данным», руководителя проекта по машинному обучению и большим данным в QIWI, в ходе которого Сергей рассказал о своем опыте разработки и внедрения кластеров больших данных, типичного дня Data Scientist, а также дал практические советы начинающим аналитикам.
- Здравствуйте, Сергей! Приятно видеть, что ваша карьера в области Data Science складывается хорошо.
Расскажи, почему ты решил развиваться в сфере анализа данных и как оказался в QIWI? — Все началось с моего поступления в магистратуру MIT, где я решил добавить в программу несколько предметов, связанных с анализом данных и алгоритмами, в частности Data Science в маркетинге, финансах и здравоохранении.
Первый практический опыт анализа данных я получил во время написания дипломной работы: изучал влияние постов в Твиттере об экономиках Греции, Португалии, Италии и Испании на котировки кредитно-дефолтных свопов, то есть на вероятность дефолта той или иной страны.
.
Имея доступ к огромному количеству твитов через базу данных MIT, я смог построить модель, которая выполняла анализ тональности твитов, присваивая им значения от -5 до 5, в зависимости от эмоционального тона твита.
После окончания магистратуры я понял, что Data Science — это область, которая меня интересует. Я прошел большинство онлайн-курсов по науке о данных, например классический курс Эндрю Нга.
Год спустя я получил приглашение от бывшего одноклассника присоединиться к работе над Pay Later — стартапом, который разработал систему онлайн-платежей, с помощью которой пользователи могли совершать покупки с отсрочкой платежа.
Основное отличие от обычного кредита заключалось в том, что мы не требовали паспортных данных, а только номер телефона и подтверждение авторизации в социальной сети.
Таким образом, необходимо было разработать систему скоринга, использующую данные из социальной сети, номер телефона и косвенные признаки, которые можно получить по IP, из localStorage, то есть все, что можно «вытянуть» с компьютера.
Если до этого я практиковался только в моделировании на Kaggle, то в «Pay Later» нужно было внедрить в производство систему скоринга Data Science. Особенностью проекта было то, что скоринг должен был быть онлайн, главное требование было максимум 5 секунд на одно приложение — это время, в течение которого нужно было не только собрать данные из всех источников, но и «забить» клиент. В течение года я писал систему один, затем штат стал расширяться, мы работали над повышением точности скоринга, подключали новые сервисы.
Параллельно мы пытались развивать и другие проекты, в частности, вышли на рынок электронной коммерции.
Проблема здесь в том, что если пользователь размещает заказ на физические товары и хочет оплатить его наличными, он может в конечном итоге отказаться от товара.
Затем мы решили использовать наши навыки оценки, чтобы оценить вероятность непокупки в момент размещения заказа пользователем.
Заключив партнерское соглашение с одной из компаний-агрегаторов служб доставки, мы интегрировались в их интерфейс, чтобы собрать необходимые данные: как человек делал заказ, что делал на сайте и т.д. Таким образом, появилась новая скоринговая модель.
был построен и запущен в производство.
Вскоре на нас обратила внимание компания QIWI, с которой мы начали сотрудничать сначала в рамках некоторых проектов их R&D-отдела, развивающего преимущественно направление электронной коммерции, а затем, летом 2016 года, решили приобретение наш стартап.
— Чем отличается работа в QIWI от «Плати позже»? На каком этапе развития находилась инфраструктура больших данных, когда вы пришли в компанию? — У «Плати позже» было много продуктов, но в QIWI мы решили сосредоточиться на двух направлениях: решениях для электронной коммерции, которые мы разрабатывали в рамках стартапа, и непосредственной разработке и внедрении систем, управляемых данными, например, мы принесли свои решения компании по кредитному скорингу.
Несколько месяцев мы разбирались с аналитическими системами и базами данных компании и поняли, что необходимо построить кластер больших данных, поскольку единого хранилища для масштабных вычислений не существует. Вся аналитика в основном выполнялась в реляционных базах данных в Oracle, а для некоторых целей их использовали Вертика — полезная СУБД, но хранение в ней десятков терабайт данных обходится дорого.
Наконец, мы начали тестировать различные технологии и в итоге остановили свой выбор на Апач Спарк .
— Почему вы решили выбрать «Спарк»? Какие альтернативы вы рассматривали? — Как раз в это время я пошел учиться в Лабораторию новых профессий и вдохновился тем, как хорошо работает Spark и что с ним можно делать.
Мы рассматривали Vertica как альтернативу; позволяет довольно быстро работать с форматом столбчатых данных, имеет множество расширений, в принципе его можно назвать облегченной версией Spark. Однако, сравнив, что можно сделать на Вертике и Спарке, мы поняли, что на Спарке можно сделать то же самое, только дешевле.
Причём в нём мы не ограничены в формате хранения данных; мы можем использовать различные варианты: от текстовых файлов и файлов последовательностей до Storage Engine. Также мы уделили внимание технологиям Апач Куду и решил попробовать использовать его в качестве механизма хранения некоторых данных.
В итоге архитектура больших данных выглядит так: часть данных мы храним в HDFS, часть — в Kudu и обрабатываем все это с помощью Spark. — Какие данные и из каких источников использует компания для аналитики? Какие проблемы, помимо подсчета очков, возникают? — В основе — данные о транзакциях из социальных сетей, а также поток кликов из 3-х источников: сайта, мобильных приложений и QIWI-кошелька вместе с терминалами.
Что касается задач, то помимо скоринга это выявление предпочтений пользователей для повышения CTR (кликабельности), выявление слабых мест на сайте, оценка эффективности коммуникаций, поведенческая аналитика, анализ соцсетей, а в нашем случае - это анализ транзакционных сетей, образующихся в процессе денежных переводов между пользователями, для выявления мошенничества.
— Какие алгоритмы используются для решения задач? Есть ли у вас любимые методы или для каждой задачи нужно найти свой? — В первую очередь мы стараемся использовать новые технологии, но основное направление экспериментов — не в построении моделей, а в обработке данных, откуда собственно и возникла идея использовать Spark. Конечно, мы используем множество традиционно любимых методов, как и большинство задач на Kaggle, не связанных с обработкой аудио или изображений: повышение градиента, деревья решений.
Случайный лес в основном используется для получения первоначального результата, выяснения, какие переменные являются ключевыми, а какие нужно отбросить, затем мы обычно смотрим, как градиентный бустинг будет работать в данной задаче, пытаемся объединить несколько моделей, но, конечно, все ограничено скоростью работы модели.
Мы не можем позволить себе, как на Kaggle, составить сумасшедший ансамбль из 130 разных моделей; на самом деле более важной задачей является поиск новых функций и новых зависимостей между функциями.
В свою очередь, решая задачу сегментации пользователей, мы сначала выполняем ручное извлечение признаков, а затем используем, например, изолирующие леса, и смотрим, как работает простой метод k-средних.
Также недавно перед нами стояла задача выявить пользователей, которые совершают действия, не являющиеся чистым мошенничеством, но потенциально это что-то недопустимое.
Таким образом, необходимо было сегментировать эти несколько тысяч подходящих пользователей и понять, каковы цели этих транзакций.
Для решения этой проблемы мы использовали матричную факторизацию, чтобы выявить основные факторы и сегментировать их на их основе; мы также попробовали новый алгоритм - БигАРТМ , который используется для определения тематики текстов.
Мы представляли каждую транзакцию как слово, а набор транзакций как предложение и с помощью модели пытались определить тему набора предложений для каждого пользователя.
Построенная модель показала неплохие результаты.
— Какую прибыль получила компания от внедрения кластера больших данных? — Фактически производственная версия кластера стартовала только в конце марта, поэтому пока сложно оценить бизнес-эффект, но результат может быть заметен с точки зрения повышения производительности: мы увеличили скорость расчета параметров в несколько раз.
сто раз, мы можем себе позволить обрабатывать сразу несколько лет транзакционных данных, а также моментально анализировать терабайты кликстрима, поступающие ежесекундно с сайта и приложений, то есть пока ценность внедрения больших данных заключается в значительной экономии времени и, соответственно, затраты.
— Расскажите, как проходит типичный день Data Scientist? — Если говорить о моем обычном дне, то 50% времени уходит на решение технических задач: проверка чистоты данных, задачи по загрузке и выгрузке данных, проверка достоверности данных, где хранить «витрину» и т. д. .
, 30% в свою очередь тратится на различные внутрикорпоративные вопросы и только оставшиеся 20% времени занимает аналитика: построение моделей, проверка гипотез, тестирование.
Причем подготовка данных в первую очередь включает в себя решение проблем других сотрудников: почему не работает какой-то модуль, почему неправильно преобразуется тип данных и т. д., поэтому, чтобы сделать это быстро и безболезненно, нужно выйти из « Я парадигма «математик-аналитик».
и быть хакером-программистом.
— Какой язык программирования, по вашему мнению, лучше всего подходит для анализа данных? — Есть несколько языков для анализа данных, которые на данный момент наиболее популярны: R, Python, кто-то может сказать Scala или Julia. «Экзотические варианты – это, конечно, хорошо, но только если вы изначально хорошо в них разбираетесь.
Если человек начинает с нуля, то, конечно, лучше выбрать тот язык, по которому больше всего информации в Интернете, и на данный момент это Python. Поскольку первый год новичка в области науки о данных будет включать в себя поиск в Google того, как что-то сделать, Python — это самый простой способ.
Далее, после освоения Python, я бы обратил внимание на Scala, потому что она позволяет многие вещи делать по-другому, например, использовать расширенный Spark API. — Какими навыками должен обладать Data Scientist? — Из инструментов, которые я выбрал для себя, я выбрал Python; Я выполняю некоторые задачи в Scala. Естественно, в процессе работы я не могу обойтись без таких библиотек, как Pandas и Scikit-Learn, и требуется пакет Pandas, некоторые пытаются его игнорировать и использовать циклы, но такой подход отнимает время, а функции, написанные вручную, часто работают гораздо медленнее.
чем то, что написано для вас и проверено много раз.
Таким образом, вам обязательно стоит использовать Pandas и просмотреть всю его обширную документацию, ведь он умеет практически все: от преобразования данных до записи в базы данных.
Еще одним преимуществом библиотеки является то, что в последних версиях Spark ее API практически полностью копирует API Pandas, а переход с библиотеки на Spark происходит практически безболезненно.
Также, если человек планирует не только решать задачи на Kaggle, но и разрабатывать продукты Data Science в производственной среде, то ему необходимо научиться использовать модули для работы с базами данных из pyodbc до SQLАлхимия .
— Вы сказали, что прошли много курсов по машинному обучению.
Какой из них вы бы порекомендовали новичкам? — Я бы рекомендовал начать с курса Эндрю Нг , имеет достаточно хорошую структуру и простым языком объясняет логику работы алгоритмов, что очень важно.
Необходимо понять, почему один алгоритм хорошо работает в одной задаче, но плохо в другой, почему нужно много оперативной памяти для применения SVD, что такое локальный максимум и т. д. Эти вещи очень хорошо объясняются в этом курсе, создавая прочную базу, а затем вам нужно выбрать курсы по той теме, которая вас больше всего интересует, будь то анализ текста или анализ социальных сетей, чтобы получить специализированные знания.
Также сейчас появляется большое количество курсов на русском языке, например от Яндекс И МФТИ , правда, в отличие от курса Эндрю, они больше уходят в математику и меньше в логику алгоритмов, однако в их курсе прекрасно освещаются методы оценки моделей, и неплохо рассказывается о кривых ROC-AUC. Стоит отметить, что большинство курсов не уделяют много времени созданию функций, потому что это тема, основанная на данных, и именно здесь у многих людей возникают проблемы.
Я бы предложил пройти несколько различных курсов, чтобы развить ваши творческие способности и способность применять разные подходы к преобразованию данных.
- Что я тебе дал? программа «Специалист по большим данным» из «Лаборатории новых профессий»? — Прежде всего программа познакомила меня с огромным набором различных инструментов, принципами их работы, расширив мой технический кругозор, а также я получил понимание того, что приложив небольшие усилия, можно добиться многого, если у тебя есть необходимые инструменты.
.
Благодаря программе я смог выбрать правильные технологии для наилучшего внедрения и настройки системы, в частности я понял на что способен Spark, хотя до этого у меня было заблуждение, что внедрение Spark будет сложнее и дороже, чем делаю то же самое, работая старыми методами.
В результате я понял, что большие данные — это понятно и просто, и научился использовать эти технологии для извлечения максимальной выгоды с минимальными затратами.
— И наконец: в каком направлении будут развиваться машинное обучение и технологии больших данных в ближайшие годы? — Я думаю, что уклон будет в сторону нейронных сетей, а с технологической стороны инструменты для работы с нейронными сетями для распределенных вычислений уже появляются и будут появляться в стеке Hadoop. Данных становится все больше, и как следствие эффективность нейронных сетей возрастает. Также появляется всё больше курсов, огромное количество инструментов, позволяющих познакомиться с нейросетями, и в Tensorflow, в частности, есть отличные туториалы.
Таким образом, нейронные сети становятся более доступными, а вычислительная техника и оборудование значительно дешевле.
Теги: #Big Data #apache spark #apache spark #Qiwi #apache kudu #kaggle #bigartm #andrewng #наука о данных #ученый по данным #Интеллектуальный анализ данных #большие данные #машинное обучение
-
Берлинер, Эмиль
19 Oct, 24 -
Mein Config: Обзор Точечных Файлов
19 Oct, 24