![Захватывают объекты, ищут инфлюенсеров и породистых перспективных скакунов. InData Labs: от сервисов к продуктам Захватывают объекты, ищут инфлюенсеров и породистых перспективных скакунов. InData Labs: от сервисов к продуктам](/storage/images/25/60/17/20/derived/3dfd57b0f67c60552d49de17d2f498a5.jpg)
Data Science-отдел компании InData Labs за 3,5 года работы выполнил большое количество краткосрочных проектов в сфере анализа данных, машинного обучения и искусственного интеллекта и теперь переходит к реализации «длинных» проектов от британских и американских заказчиков. Открыли представительство в США. В перспективе — выпуск собственных продуктов.
За два года в InData Labs сформировались четыре основных направления.
Обработка естественных языков, или Natural Language Processing (NLP). На алгоритмах из этой области строятся как внутренние наработки компании, так и некоторые клиентские проекты.
Компьютерное зрение. В компании работают специалисты, разбирающиеся и в классических методах Computer Vision, и в алгоритмах, базирующихся на нейронных сетях. Одна из задач, которую приходится решать в клиентских проектах, — обработка 3D-изображений в формате Point Cloud. Например, обработка 3D-снимков земной поверхности, сделанных с помощью дрона: на них нужно сегментировать разные объекты.
— Сейчас в работе два проекта от американских компаний, — говорит СТО InData Labs Алексей Циунчик. — Первый — отслеживать объекты, попадающие в кузов микроавтобуса. Как только человек с коробкой появляется в кузове, надо захватить объект, сопровождать его и отслеживать. Заказ поступил от R&D центра автопроизводителя. Там пока не раскрывают, как будут использовать эти наработки: возможно, для наблюдения за состоянием груза в процессе перевозки.
![](https://uploads.dev.by/resources/4bdc49a0-af30-4698-a046-e0ee49b38a6b/optimized/75984b4e1e.jpg)
Алексей Циунчик, СТО InData Labs.
Другой проект — от компании, разводящей лошадей для скачек. Они хотят выявлять лошадей-чемпионов в «детском возрасте». Для этого у заводчика есть большая база данных, вплоть до УЗИ внутренних органов и ДНК. Идея — в том, чтобы 3D-камерами снимать жеребят и взрослых животных, анализировать их пропорции и на основе этих данных, а также УЗИ сердца и генетики определять будущих победителей забегов.
Мы уже подготовили продукт, который снимает и сохраняет снимки, формирует датасет. Сейчас подошли ко второму этапу — собственно предсказанию потенциальных чемпионов.
Предиктивная аналитика. Включает в себя моделирование оттока клиентов, сегментацию клиентской базы, прогнозирование времени наступления событий.
— Например, была задача предсказать для рекрутинговой компании наиболее перспективные каналы коммуникации при поиске кандидатов, — говорит Алексей. — Компании было интересно, для какой вакансии какие типы каналов наиболее эффективны. Другой востребованный бизнесом продукт — модель оттока клиентов. Если в бизнесе есть постоянные клиенты и есть данные об их поведении, то можно строить модель, которая предскажет их уход. Это особенно актуально для телеком-операторов или, например, онлайн-игр.
Работа с большими данными, в том числе построение хранилищ данных Data Lake и Data Warehouse.
— Мы сейчас проходим этап активной работы над клиентскими проектами, назовём это «сервисным направлением», — говорит Алексей Циунчик. — Стараемся брать проекты, максимально релевантные Data Science, машинному обучению и большим данным. Принципиально не берём проекты, которые с этим не связаны. Выполняя внешние заказы, нарабатываем экспертизу и вникаем в проблематику рынка, а дальше аккумулируем опыт и реализуем его в собственных продуктах.
— Так как потенциальных клиентов становится больше, чем мы можем переварить, у нас появляется право выбора. И естественно, мы выбираем самые интересные, продолжительные, стабильные проекты, — добавляет директор по развитию бизнеса InData Labs Сергей Работай.
![](https://uploads.dev.by/resources/4bdc49a0-af30-4698-a046-e0ee49b38a6b/optimized/b1a75404aa.jpg)
«При обычном полнотекстовом подходе между автомобилем и машиной — нулевое сходство»
Первые два направления — NLP и компьютерное зрение — у компании в приоритете. Собственный продукт из области обработки естественных языков сейчас проходит клиентское тестирование.
— Идея проста. Это платформа для поиска и валидации англоязычных лидеров мнений в соцсетях, — рассказывает о проекте ведущий инженер по машинному обучению InData Labs Роман Меркулов. — Рекламодатель обычно хорошо представляет свой продукт и свою аудиторию, но не знает, как найти людей, которые могут этот продукт продвинуть. На данный момент мы ищем их в Instagram, Twitter, Youtube и Twitch — несколько миллионов аккаунтов.
Мы предлагаем полнотекстовый поиск с элементами семантики с богатым набором фильтров: по геолокации, половозрастному составу аудитории, упоминаемости брендов, наличию спонсорского контента и т. д. Этот набор фильтров и другие показатели аналитики профиля инфлюенсера формируются на основе применения моделей машинного обучения. Это классические задачи обучения с учителем. Для них у нас есть возможность собрать выборку размеченных данных, обучить дискриминативную модель и распространить ее на множество неразмеченных объектов.
С поиском ситуация другая. Тут мы можем ориентироваться только на методы обучения без учителя, что значительно усложняет задачу. Мы пытаемся идти дальше TF-IDF-векторизации и производных от неё алгоритмов вроде BM25. Минус традиционного подхода в том, что если в документе не содержится конкретное слово из поискового запроса, то документ не попадёт в поисковую выдачу. Так, у фраз «Я веду блог об автомобилях» и «Здесь постят видео про машины» сходство будем нулевым.
Мы поняли, что нужно делать поиск умнее. С одной стороны, мы не можем позволить себе показывать «слаборелевантные» документы, помещая их на дальние страницы поисковой выдачи, как часто происходит в классических поисковых системах. Маркетолог применяет к выборке различные сортировки, например, по количеству подписчиков инфлюенсера, из-за этого нерелевантный документ может легко взлететь в топ и там мозолить глаза. С другой стороны, мы не можем себе позволить отсечь большое количество документов, так как рекламодатели применяют суперселективные фильтры, вплоть до конкретного города, и выдача получается совсем небольшой.
![](https://uploads.dev.by/resources/4bdc49a0-af30-4698-a046-e0ee49b38a6b/optimized/21200c55dd.jpg)
Наивный подход — это использование лексических баз вроде WordNet, в которых слова связаны отношениями синонимии и подмножества-надмножества. Другой подход основан на векторных представлениях слов. Одна из идей проста и не нова: слово в предложении хорошо описывается своим контекстом, так давайте учить модель, которая будет для заданного слова предсказывать контекст.
Мы обучаем модель для построения векторных представлений слов на общеязыковой лексике (например, из Википедии) и специфичной из соцсетей. Это позволяет нам расширять запросы в том числе синонимами из нашей модели и делать выдачу более богатой.
Но мы решили пойти дальше — строить векторные представления для самого запроса и добавлять в выдачу документы, чьё векторное представление похоже на вектор запроса. Как уже было сказано, оценок асессоров у нас нет, мы оперируем только сходством.
Наконец, когда мы применили все способы и получили поисковую выдачу, оцениваем средний вектор всех инфлюенсеров, которые в неё попали. Обычно остаётся ещё много пользователей, которые не попали, но чьё векторное представление близко среднему векторному представлению поисковой выдачи. Их мы тоже подмешиваем в выборку, чтобы обеспечить её полноту. Затем, основываясь на виде распределения показателей релевантности, отсекаем хвост с потенциально менее релевантными документами.
«Идея рекомендовать зрителю фильм, похожий на тот, что понравился раньше, работает плохо»
Ещё один важный реализованный проект в InData Labs — рекомендательная система для крупного онлайн-кинотеатра, который предоставляет платный контент. Задача была конкурсной: InData Labs соперничал с двумя другими командами, искавшими решение в области AI, а также с группой редакторов.
— До сих пор список рекомендаций составляли редакторы вручную, и у всех пользователей он был одинаковым, — рассказывает о проекте инженер по машинному обучению Захар Ермак. — Задача была построить персонализированные рекомендации для каждого пользователя.
Сначала мы получили сэмпл для ознакомления, чтобы понять, подходят ли данные клиента для решения поставленной задачи. Потом — данные за всю историю существования сервиса, более 500 Гб файлов в формате csv. Это были данные о всех действиях пользователей в системе: простые клики, просмотры, покупки, оценки. Также была информация о фильмах: режиссёры, страна-производитель и т. д.
![](https://uploads.dev.by/resources/4bdc49a0-af30-4698-a046-e0ee49b38a6b/optimized/3120777522.jpg)
Проблема была в том, что заказчик не собирал данные о том, что видел на экране пользователь, когда выбирал фильм. То есть те фильмы, от которых человек отказался. Это сильно усложнило задачу. Простая идея «а давайте рекомендовать что-то аналогичное тому, что человеку понравилось» работает плохо.
Во-первых, далеко не все пользователи ставят оценки после просмотров. Во-вторых, мы не можем утверждать, что непросмотренный фильм ему не понравился. Скорее всего, большинства из них пользователь даже не видел в системе.
Для персонализированных рекомендаций мы пробовали различные варианты: разложение матрицы с оценками пользователей, факторизационные машины, градиентный бустинг. Конечно, можно было пробовать и более сложные подходы, например, с использованием глубоких нейронных сетей, но сроки проекта нас ограничивали.
При тестировании моделей мы вычисляли метрики ранжирования, используя восстановленные нами списки того, что предположительно видел пользователь. В итоге лучший результат показала факторизационная машина, использующая признаки пользователя (средняя выставляемая оценка, с какого устройства используется сервис, время, прошедшее с последней покупки, средняя цена покупки и др.) и признаки контента (средняя оценка, рейтинг на кинопоиске, рейтинг на imdb, бюджет, время выхода на платформе, время мирового релиза, актёры, режиссёры, студии, страны, язык оригинала).
![](https://uploads.dev.by/resources/4bdc49a0-af30-4698-a046-e0ee49b38a6b/optimized/fa2155678d.jpg)
Целевой метрикой клиента был нормированный по пользователям доход, и по ней мы уступили только рекомендациям редакторов (так как наша модель не учитывала стоимость фильма при ранжировании — мы не отдавали предпочтение более дорогим фильмам), однако некоторые важные для рекомендательной системы метрики у нас оказались лучше. Например, среднее количество уникальных проскроленных карточек фильмов: чем релевантнее контент, тем меньше действий пользователь тратит на поиск подходящего фильма.
«Главное — человек должен иметь интерес к машинному обучению»
Среднесрочная цель InData Labs, лежащая на отрезке между сервисами и продуктом, — это Product development services (PDS).
— Об идее PDS я услышал в 2014 году на конференции EPAM SEC, — вспоминает Алексей Циунчик. — Аркадий Добкин рассказывал о том, что это следующий шаг в эволюции аутсорсеров. Идеей я был очарован, но оказалось, что реализовать её очень сложно. Это процесс, который требует не только активной работы продаж в одной области. Надо собрать и сохранить команду, которая активно работает в одной вертикали индустрии: это не только технические специалисты, но и продуктовые менеджеры, и Subject Matter эксперты, и бизнес-аналитики, и нетехнические консультанты. Двигаться в эту сторону непросто, но мы понимаем, что это направление — правильное.
— PDS на длинной дистанции эффективней классической сервисной модели, — говорит Product Manager InData Labs Илья Шустерман. — Разработку не надо каждый раз создавать заново на пустом месте. Пользуясь накопленным опытом, ты делаешь небольшую надбавку к тому, что у тебя уже есть, соответственно затраты уменьшаются. Если хочется получать прибыль прямо сейчас, надо делать аутсорс-проект. PDS-проект не даст моментальной финансовой отдачи. Но чтобы в долгосрочной перспективе стать более эффективной компанией, стоит выбрать этот не очень простой путь.
![](https://uploads.dev.by/resources/4bdc49a0-af30-4698-a046-e0ee49b38a6b/optimized/cb5aeabe6a.jpg)
Сергей Работай, директор по развитию бизнеса в InData Labs.
Движение по направлению к продукту требует больше талантливых специалистов, поэтому InData Labs активно комплектует штат новыми специалистами.
— Любой наш дата-сайентист может прочитать лекцию о том, как устроены алгоритмы машинного обучения, — говорит Алексей Циунчик. — Но продукт — больше, чем алгоритм. В нём есть инженерная, коммуникационная, маркетинговая составляющие, которые должны быть учтены. Поэтому сейчас мы ищем людей с хорошим инженерным бэкграундом (Java, C++, Python), которые поработали на клиентских проектах и понимают, как устроена эта работа. Но самое главное — они должны иметь интерес к машинному обучению. Ведь всё, что мы делаем, так и иначе вращается вокруг ML.
Важно, чтобы люди из инженерии могли общаться с дата-сайентистами на одном языке. Я это вижу как некий симбиоз: в одной команде работают ребята, которые могут заглянуть под капот любого алгоритма, и те, кто знает, как общаться с клиентом, как разрулить технические задачи в проекте, как правильно построить архитектуру и расставить приоритеты.
— Важно, чтобы эти люди были проактивными, — добавляет Илья Шустерман, — чтобы они хотели разбираться в бизнесе заказчика и понимать, зачем они делают всю эту магию. Мы ищем людей, которые понимают: с помощью кода они решают задачи бизнеса. Это то, к чему мы идём.
![](https://uploads.dev.by/resources/4bdc49a0-af30-4698-a046-e0ee49b38a6b/optimized/d6cdadbe40.jpg)
InData Labs рекомендует, что читать и смотреть по теме:
- Курс Natural Language Processing with Deep Learning от Стенфордского университета.
- Курс Practical Deep Learning For Coders.
- Курс OpenDataScience и Mail.ru Group по машинному обучению.
- Вводная книга в тему информационного поиска:
Christopher D. Manning, Prabhakar Raghavan and Hinrich Schütze. Introduction to Information Retrieval. Cambridge University Press, 2008. - Книга The Elements of Statistical Learning. Data Mining, Inference, and Prediction. Trevor Hastie, Robert Tibshirani, Jerome Friedman. 2009.
- Статьи на тему построения векторных представлений слов и языковых моделей: Efficient Estimation of Word Representations in Vector Space, word2vec Explained: Deriving Mikolov et al.’s Negative-Sampling Word-Embedding Method, Universal Language Model Fine-tuning for Text Classification.
Статьи в блоге InData Labs:
- Using Multilevel Modeling for Secure and Effective Dam Operation and Floods Prediction.
- Building Image Classification Models Based on Pre-Trained Neural Networks.
- Converting Spark RDD to DataFrame and Dataset. Expert Opinion.
- Superset: benefits and limitations of the open source data visualization tool by Airbnb.
- Which Brands Reign over London Instagram in 2016?
- Interactive Map: Hong-Kong through The Lense of Instagram.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.