Прогнозирование цен
для сервиса аренды авто
Клиент
Сеть проката автомобилей в Японии. По сравнению с конкурентами – компания среднего масштаба, но работает по всей стране и имеет собственный сервис онлайн-бронирования.
Главный фактор при выборе проката – цена. Чтобы реагировать на изменение спроса и предложения в реальном времени, сервисы проката автомобилей применяют динамическое ценообразование.
Владелец понимал: в этой индустрии побеждает тот, кто держит цену релевантной рынку – чуть ниже, чем у конкурентов, но достаточной, чтобы покрыть целый ряд бизнес-расходов и приносить стабильную прибыль сверху.
Как найти этот тонкий баланс и верно рассчитать цену? Как это автоматизировать? Ведь пользователи сравнивают стоимость буквально в несколько кликов, поэтому у бизнеса нет запаса времени для ручных корректировок. Оптимальный подход — использовать искусственный интеллект.
Вызовы
В 2020 году владелец обратился к нам. На старте у клиента не было четкого понимания, какие методы анализа данных подойдут для задачи, но было ясно, что решение лежит в области машинного обучения.
Какие метрики предсказывать?
С этим было сложнее. Базовая цена на аренду авто складывается из цели поездки, класса машины, сезонности, географии, сроков бронирования. Причем факторы коррелируют друг с другом.
Если учитывать их все, понадобится обработать очень много данных. Стоимость разработки такого алгоритма улетит в космос. Как решить?

Вариант #1
Привязать расчеты к конкретным машинам и собирать телеметрию в реальном времени. Но у клиента – десятки филиалов плюс автопарк постоянно меняется. Поддерживать такую систему оказалось бы слишком дорого и сложно.

Вариант #2
Построить прогноз на основе истории спроса и внешних факторов – погоды, праздников, сезона. Такой подход дешевле, а его точности хватит, чтобы принимать взвешенные решения.
Остановились на этом варианте и выбрали две модели: первая – история спроса и цен для разных типов автомобилей, вторая – история погоды в Японии.
Как обучали ML-модель:
Шаг 1. Данные компании клиента
Сначала проанализировали, что происходило у клиента в последние 12 месяцев: когда и какая машина простаивала, когда ее брали в аренду, какая была базовая цена и итоговая стоимость. Обработали все в формате .csv и записали в таблицы MySQL. От них будем отталкиваться при формировании прогнозов.
Для записи данных добавили вспомогательные таблицы, чтобы сопоставить японские названия с теми, которые используются в MySQL.
Шаг 2. Исторические данные конкурентов
Владелец предложил ориентироваться на двух агрегаторов японского рынка: Orix и Niconico. Мы согласились: обе базы крупные, они покажут точное отражение рыночной ситуации плюс дадут переменные (сезонность, экономическая составляющая, характеристики разных типов машин).
– Сравнили исторические данные агрегаторов с данными о сервисах аренды авто в PostgreSQL: цены, расстояние и прогнозы других обученных моделей. Использование двух БД – частая практика для ML-проектов (в первом шаге мы упоминали MySQL). Так мы разделили потоковые и аналитические нагрузки, чтобы ускорить расчеты.
– Информацию брали за те же последние 12 месяцев, потому что устаревшие данные исказят картину и сделают прогноз неточным.
– Синхронизировали данные клиента, агрегаторов и внутренние аналитические таблицы. Это и будет нашей обучающей выборкой для тренировки моделей.
Шаг 3. Обучение и тестирование алгоритма
– Очистили данные от статистических шумов – например, всплесков, связанных с праздниками, или ночным временем, когда спрос резко падает. Не убирали классы и типы машин, даже если таких марок у клиента пока не было: получился запас на случай, если клиент решит разнообразить автопарк.
– Для обучения использовали модель XGBoost, свойства подбирали методом перекрестной проверки:
• Для моделей «цена» и «спрос» – по компании, типу автомобиля, продолжительности брони, состоянию рынка на момент аренды.
• Для модели «погода» – по локации, погоде, сезонности. На этапе обучения брали исторические погодные данные, а в рабочей версии система подставляет свежие прогнозы из внешнего API, чтобы рассчитать ожидаемый спрос на ближайшие дни.
– Для обучения взяли 80% данных, остальное оставили для проверки качества прогнозов. Проанализировали результаты, сравнили с фактическими цифрами. Выявили причины отклонений в прогнозах и скорректировали модель, повысив ее точность.
Технологии
Бэкенд
Python
База данных
MySQL
База данных
PostgreSQL
Библиотека
XGBoost
Библиотека
Scikit-Learn
Брокер сообщений
NATS
Мониторинг
Grafana
Инфраструктура
Docker
Результат
Мы обучили модель, которая прогнозирует спрос и рекомендует цену для каждого класса машин и локации. Менеджер видит рекомендации в панели и применяет их одной кнопкой.
Мы смогли обеспечить высокую точность модели, потому что правильно подобрали метрики, объемы исходных данных, методы анализа и обучения.
На работу ушло 11,5 месяцев:
- В первые два месяца собирали исторические данные, проводили анализ. Получили подготовленный набор данных и список ключевых факторов, влияющих на цену.
- Следующие четыре с половиной месяца потратили на обучение модели динамического ценообразования, разработку MVP и запуск пилотных тестов на трех филиалах в Токио.
- Пять месяцев ушло на внедрение модуля и адаптацию под все филиалы.
Проект потребовал времени, но результат оправдал ожидания владельца бизнеса: пользователи отмечают удобство и справедливость цен. В результате парк простаивает реже, а бронирования растут.
увеличилась выручка за счет оптимизации цен.
снизился простой автопарка.
Что происходит дальше:
Мы получаем запрос, обрабатываем его в течение 24 часов и связываемся по указанным вами e‑mail или телефону для уточнения деталей.
Подключаем аналитиков и разработчиков. Совместно они составляют проектное предложение с указанием объемов работ, сроков, стоимости и размера команды.
Договариваемся с вами о следующей встрече, чтобы согласовать предложение.
Когда все детали улажены, мы подписываем договор и сразу же приступаем к работе.