Геоаналитика помогает бизнесу принимать решения: где открыть магазин, построить отель или возвести новостройку с учетом доступности и популярности локации, наличия конкурентов и сотен других факторов. Решать подобные аналитические задачи с большим количеством значимых признаков помогает машинное обучение. В этой статье мы рассмотрим примеры работы сервисов геоаналитики VK Predict. Выясним, какие модели машинного обучения используются при построении таких систем и из каких этапов состоит разработка продукта с возможностями геоаналитики.
Статья подготовлена на основе вебинара команд VK Predict и VK Cloud.
Сервисы геоаналитики на примере кейсов VK Predict
Геоаналитика VK Predict — это сервисы клиентской аналитики и системы поддержки принятия решений на основе анализа массивов данных, технологий машинного обучения и искусственного интеллекта. Среди ключевых решений:
- «ГеоКурсор» для анализа локаций,
- «Телеком Радар» для оценки качества связи телеком-операторов,
- «Девелопер» для определения оптимальной квартирографии жилых комплексов.
В статье мы рассмотрим «Девелопер» и «ГеоКурсор».
«Девелопер». Сервис для моментального расчета оптимальной квартирографии и стоимости квадратного метра в заданной локации. Помогает застройщику получить параметры ЖК, на которые можно опираться при разработке нового инвестпроекта: типы и количество квартир в ЖК, цену реализации каждого лота при заданных темпах продаж. Сервис «Девелопер» работает на основе трех интерпретируемых Real-time ML-моделей.
«ГеоКурсор». Сервис для выбора лучших локаций для бизнеса, поиска мест с преобладанием целевой аудитории, анализа факторов, влияющих на выручку, прогнозирования товарооборота, анализа конкурентной среды и развития территорий. Ритейлерам сервис позволяет понять, где открыть новую точку для бизнеса. Решение основано на моделях транспортных потоков и кастомных ML-моделях, геопространственном анализе, городском моделировании и обработке больших массивов геоданных.
Владельцам отелей и управляющим компаниям «ГеоКурсор» позволяет мониторить состояние своих отелей и объектов конкурентов, отслеживать название, тип, расположение, звездность и оценки и на основе этих данных принимать решение об открытии новых точек или оптимизации собственного бизнеса. В этом случае сервис работает на основе геопространственного анализа, большого количества источников данных и линейных моделей машинного обучения.
Разработка сервиса
Разработка любой системы геоаналитики с применением ML делится на три этапа:
-
Proof of concept. Разработка ML-моделей и доказательство их практической применимости.
-
MVP. Разработка продукта, удовлетворяющего минимальным пользовательским требованиям.
-
Промышленная эксплуатация и развитие. Чистка «хвостов» с MPV, оптимизация моделей, поддержка и развитие продукта.
Отдельно можно выделить «нулевой этап» — детальную проработку ТЗ заказчика. Он нужен, поскольку часто предпосылкой к разработке сервисов геоаналитики является запрос бизнеса, который нужно формализовать, выделив ключевые бизнес-метрики и их целевые значения, пользовательские, функциональные и нефункциональные требования к продукту с участием технического специалиста.
Рассмотрим каждый этап подробнее.
Proof of Concept
Этот этап обычно разбивается на две части:
-
Работа с данными. Поиск данных, обработка геоданных, разведывательный анализ данных.
-
Построение и валидация моделей. ML-модели и моделирование трафика.
На этапе Proof of concept обычно достаточно 1–2 дата-сайентистов, но размер команды напрямую зависит от количества моделей, которые станут ядром продукта.
Работа с данными
Для работы с геоданными нужен особый подход, потому что хранить пары «широта» — «долгота» в таблице неудобно. Поэтому существуют разные варианты кодирования. Например, мы используем геохеши — систему кодирования координат в одну строку. Идея построения геохешей простая:
- Делим поверхность Земли по нулевому меридиану пополам. Левой части присваиваем значение 0, правой — 1.
- Делим поверхность горизонтально пополам. Верхней части присваиваем значение 1, нижней — 0.
Такой алгоритм позволяет закодировать двоичной строкой каждый участок Земли.
Полученную строку значений дальше можно перевести в любую систему счисления, например в систему с базой 32 с помощью специального алфавита или в любую другую.
Важно, что точность определения координат напрямую зависит от длины геохеша. Так, отклонение в коде из 5 символов — 2,4 км, а в коде из 6 — в 100 раз меньше.
Тут возникает вопрос о поиске соседей по геохешам. Дело в том, что поиск по координатам сложен, а жадный поиск дорогой. Поиск алгоритмом N3 не подходит из-за логарифмической сложности и низкой скорости. Объединение геохешей по общему префиксу тоже не подходит: у соседних геохешей могут быть различные префиксы. Поэтому оптимально использовать алгоритм обхода, он позволяет найти соседей в любом радиусе на основе данных о расположении геохеша, его размерах и центре. Например, аналогично реализовано в нашем сервисе: вся карта покрыта небольшими геоячейками с данными.
Построение и валидация моделей
Важным моментом при построении модели является забота о ее стабильности во времени. Любая статистическая модель работает с массовыми явлениями, протекающими в неизменных условиях. Стабильными должны быть распределения признаков, на основе которых модель принимает решение, и макрофакторы, напрямую не учитывающиеся в модели. В нашей задаче изменение макрофакторов среды ведет к нестабильности целевой переменной — постоянному росту цен на жилье. Если не учесть их изменения, у модели будет низкая точность. Для исключения влияния макрофакторов есть два подхода:
- определение коэффициентов среднего изменения для каждого месяца тренировочной выборки;
- ограничение размера тренировочной выборки.
Стоит понимать, что качество модели зависит от наличия коррекции и размера тренировочной выборки. Так, в нашем кейсе ошибка без коррекции росла при увеличении тренировочной выборки (синий график). С коррекцией она снижалась (оранжевый график), но все равно оставалась высокой. Достичь наименьшей ошибки в предсказаниях даже без коррекции нам позволило уменьшение тренировочной выборки до четырех месяцев.
Теперь о моделировании трафика. Один из основных алгоритмов моделирования — гравитационные модели. Они мотивированы законом всемирного тяготения Исаака Ньютона, который гласит, что сила притяжения между двумя объектами прямо пропорциональна произведению масс, деленному на квадрат расстояния.
Этот закон можно применить к моделированию потоков:
- тело становится потоком;
- вместо масс — емкость точки отправки и емкость точки прибытия;
- будет зависимость, обратно пропорциональная расстоянию между двумя точками, которую мы всегда можем определить.
В данном случае основная задача — определить поток между двумя точками. При этом емкости места отправки и прибытия часто можно оценить с помощью данных из открытых источников. Например, открытые базы, в которых указано количество квартир во всех домах Москвы или сколько людей ездят в метро и проходят через станции в разное время. На основе этих данных можно понять, сколько людей идет по конкретной улице и стоит ли там открывать магазин.
В этой модели возникают два ограничения вида суммы:
- сумма всех потоков, вышедших из точки i, должна равняться емкости точки отправки i;
- емкость места прибытия должна равняться сумме потоков, которые в него приходят.
Решить такую систему можно следующим образом:
- Берем ограничения в виде равенства и ставим вместо Tij значения из самой гравитационной модели.
- Выражаем нормировочные коэффициенты bj и ai. Они нужны, поскольку часто ограничения вида суммы не будут выполняться из-за неточных оценок в точках отправки и прибытия. Нормировочные коэффициенты можно найти из ограничений самой задачи и дальше с помощью итеративного алгоритма определить их значение.
Еще один способ моделирования трафика — модель Хаффа. Ее рационально использовать, например, в задачах, где нужно определить вероятность посещения клиентами одного из двух торговых центров, чтобы понять зону влияния каждого из них. Идея простая: учитываем привлекательность торговой локации (например, площадь ТЦ, отзывы, количество магазинов), ее расстояние до покупателей и параметр влияния расстояния. Значение, с которым человек пойдет в этот торговый центр, прямо пропорционально привлекательности и обратно пропорционально расстоянию.
Используя такую функцию, можно легко определить вероятность посещения одного из ТЦ. Так, если покупателю до одного ТЦ 3 км, а до другого 21 км, то даже несмотря на разницу в привлекательности (200 000 против 50 000), он пойдет в первый ТЦ (с меньшей привлекательностью) с вероятностью 7/11.
MVP
Этап MVP состоит из:
- разработки первой архитектуры;
- создания веб-приложения;
- продуктивизации моделей и сбора их в целые ML-пайплайны.
Как правило, состав команды, отвечающей за техническую реализацию проекта, на этапе MVP следующий:
- два дата-сайентиста, которые занимаются данными, продуктивизацией, написанием всего бэкенда или его части, связанной с ML;
- два разработчика: фронтендер и бэкендер.
Классически архитектура на этапе MPV простая и включает:
-
базы данных. Зачастую в виде подложных .csv-файлов, потому что они небольшие, а на развертывание базы данных уходит много времени;
-
бизнес-логику. API, написанный на Python с помощью библиотеки FastAPI;
-
веб-интерфейс. Как правило, на TypeScript.
Основная задача на этапе MVP — построение ML-пайплайнов. Вариантов несколько. Рассмотрим основные из них на примере ML-пайплайнов для задач квартирографии: необходимо на основе данных о локации строительства ответить застройщику, сколько квартир и какого типа он должен построить, а также по какой цене их продавать.
Первый вариант пайплайна. Берем координаты, подтягиваем к ним различные геопризнаки локаций и строим на них модель класса. Затем прогнозируем цену для каждого лота с учетом класса и локации. После этого идет модель, которая предсказывает темпы. На выходе получаем таблицу с типом лота, темпами и ценой.
Стоит отметить, что иногда темпы, умноженные на срок реализации, не соответствуют площади строительства. Чтобы нивелировать отклонения, можно использовать алгоритм оптимизации с кривой эластичности — в таком случае чем дольше строительство и выше издержки на него, тем выше цена на квартиры.
Второй вариант пайплайна. Берем данные на вход, прогнозируем класс, но дальше используем модель KNN для предсказания самой квартирографии: она находит несколько схожих ЖК, усредняет их квартирографию с определенными весами, к результату применяется модель цены, которая сама в качестве признака учитывает темпы продаж, появившиеся после модели квартирографии. В итоге решаем задачу, получив и квартирографию, и цену.
Промышленная эксплуатация и развитие
Этап промышленной эксплуатации и развития — один из самых объемных, ресурсоемких и важных. Он подразумевает:
- внедрение AutoML;
- автоматизацию обработки и поставки данных ETL;
- исследования по улучшению проекта;
- оптимизацию работы сервиса.
Также на этом этапе изменяется архитектура продукта — она усложняется. Например, у сервиса появляется база данных, а также настраиваются ETL-пайплайны данных из хранилища данных (в нашем случае Hadoop) в витрины и далее в базы данных сервиса.
Важный компонент геопроектов — AutoML. Его использование позволяет не перестраивать ML-модель вручную при подключении новых городов и появлении новых задач.
AutoML
AutoML — инструмент, который позволяет автоматизировать один из этапов пайплайна машинного обучения. В широком смысле AutoML представляет собой систему, которая полностью решает бизнес-задачи с помощью ML. AutoML решает задачу снижения трудоемкости ML-решения, позволяя внедрить его там, где раньше это было невыгодно из-за необходимости привлечения дата-сайентистов.
Обычно выделяют несколько уровней автоматизации.
-
API к параметрическим семействам алгоритмов. Библиотеки и фреймворки, которые выступают в роли строительных блоков и абстракций для построения библиотек более высокого уровня.
-
Методы автоматического подбора гиперпараметров и ансамблирования, автоматизация выбора методов. Автоматические подборки параметров — байесовская оптимизация и различные пакеты. Реализация байесовских подходов — Hyperopt, Optuna.
-
EDA (Exploratory Data Analysis), препроцессинг, детекция проблем в данных. Контроль стабильности переменных, их автоматическая типизация, обработка категорий, выделение признаков и предпроцессинг.
-
Методы автоматической генерации и отбора признаков, а также аугментации данных, специфичные для домена (текстов, картинок) и конкретной задачи. Типичные подходы для всех задач типа Target Encoding или объединения редких категорий в категориальном признаке, а также подходы, которые генерируют признаки, типичные для бизнес-домена нашей задачи или для конкретного набора данных.
-
Стратегии обучения и управления бюджетом (время, вычислительные ресурсы). Помогают автоматизировать работу с машинным обучением, когда увеличивается количество моделей и подходов к решению.
-
AutoDL: NLP, CV, Time Series и Signal Processing. Методы поиска архитектур.
Есть несколько популярных AutoML-решений:
- AutoGluon,
- AutoSklearn,
- TPOT (Tree-based Pipeline Optimization Tool),
- H2O,
- FEDOT,
- LAMA.
Но на практике не обязательно использовать готовый фреймворк. Мы в своих проектах используем собственную реализацию AutoML. Наше решение покрывает:
- автоматизацию сбора дата-сета;
- генерацию специфичных доменно-ориентированных признаков;
- контроль качества данных;
- автоматический подбор гиперпараметров;
- фиксированное параметрическое семейство алгоритмов;
- модуль генерации отчетности по модели, который позволяет быстро проконтролировать по выбранной схеме валидации интересующие метрики.
Надо отметить, что построение качественной модели с помощью AutoML-фреймворка — очень ресурсоемкий с точки зрения вычислительных мощностей процесс.
ETL
ETL-процессы в каждой системе геоаналитики могут быть реализованы по-своему, в зависимости от стека и требований к сервису. Например, в своих геопродуктах мы используем Airflow. В нем есть DAG (Direct Acyclic Graph) — набор задач, которые позволяют выразить отношения и зависимости.
DAG может связывать между собой большое количество задач, таких как чтение таблиц, построение и применение ML-моделей.
Сейчас для каждой задачи «выгрузить — преобразовать — загрузить» мы пишем отдельные DAG. Их соединяем через сенсоры, которые зависят не от статуса задачи в Airflow, а от наличия данных. Такая реализация обусловлена тем, что мы сейчас на этапе построения ETL-пайплайнов и архитектура сильно меняется.
Рекомендации на основе нашего опыта
- ML можно использовать для широкого спектра задач геоаналитики.
- Разработка любой системы геоаналитики с применением машинного обучения делится на три этапа: Proof of concept, MVP и промышленная эксплуатация. Путь от этапа к этапу сложный, поэтому оптимально, чтобы запрос на Proof of concept исходил от бизнеса: это определяет востребованность проекта.
- Для построения системы геоаналитики с применением ML нужны дата-сайентисты, дата-инженеры, бэкенд- и фронтенд-разработчики. Кроме технических специалистов также нужны бизнес-аналитики, Delivery Manager, Product Owner и другой менеджерский состав, который будет координировать работу технарей.
- Для работы с ML и построения сервисов на его основе нужна масштабируемая инфраструктура. Поэтому многие команды разворачивают проекты в облачной среде: это позволяет использовать любые инструменты с оплатой по модели Pay-as-you-go, гибко масштабировать инфраструктуру и не заботиться об администрировании, которое остается на стороне вендора.
- Построить систему машинного обучения поможет Cloud ML Platform от VK Cloud — платформа для полного цикла ML-разработки и совместной работы Data-команд. Новым пользователям для тестирования мы начисляем 3000 бонусных рублей.