Чернобровов АлексейАналитик

Как машинное обучение помогает правильно устанавливать правильные цены

В этой статье мы рассмотрим задачу эффективного рыночного ценообразования с помощью машинного обучения (Machine Learning, ML) на примере babadu.ru – отечественного интернет-магазина игрушек, который входит в ТОП-100 крупнейших онлайн-ресейлеров России [1].

Под эффективным ценообразованием далее будем понимать алгоритм установки цен, который удовлетворяет следующим условиям:

  • соответствие стратегии бизнеса;
  • возможность анализировать ситуации («что, если …»);
  • регулярность обновления всех цен;
  • отсутствие увеличения расходов на процесс обновления цен.

В реальности зачастую на совершенно одинаковые товары в разных местах установлены совершенно разные цены.  Это связано с тем, что доля услуги составляет, как правило, более 30% стоимости товара. Классический пример: покупая чашку кофе в ресторане, вы платите не более 3% за непосредственно продукт (зерно + вода), а все остальное – это аренда помещения, красивый вид из окна, логистика по доставке зерен, процессы обжарки и приготовления. А также зарплата официантов, барменов, музыкантов и т.д. Таким образом, «услуга» присутствует в любом товаре. Именно этой составляющей и обусловлена разница в цене одинаковых товаров.

Немного истории

Сегодня большинство товаров и услуг мы покупаем в интернете. Даже при оффлайн-шоппинге мы знаем, по какой стоимости продается интересующий нас продукт в других местах. Однако, сейчас с развитием ИТ вообще и Data Science в частности, цена товара в онлайн-магазинах становится субъективной для каждого конкретного покупателя. Это явление, которое возникло в последние несколько лет, называют динамическим ценообразованием.

Исторически цену определяла экономика. Например, в СНГ 30 лет назад люди привозили товар из Китая и продавали его по цене, превышающей первоначальную в 5 или 10 раз. Небольшую роль играла социология: крупные бренды исследовали ценовые предпочтения различных фокус-групп. Именно отсюда пошли обусловленные психологией традиции про эффективность «неровных» цифр в ценах (например, 999 вместо 1 000), а также желтых ценников, означающих скидку. Статистические подходы практически не использовались, поскольку, по крайней мере, в СНГ рыночная экономика в то время была на стадии формирования: когда рынок растет сумасшедшими темпами, цену на уникальный товар можно ставить абсолютно любую.

Примерно 10 лет назад стал популярным термин «маркетинг», который обобщал накопленный приемы социологии, психологии и статистические знания о ценообразовании. Именно тогда авиакомпании впервые начали заниматься динамическим ценообразованием, играя на рынке ценных бумаг и предсказывая цены на нефть, чтобы определять будущую стоимость полета. Эти попытки прогнозирования цен с помощью ML подхватили ресейлеры, поскольку в стоимость товара закладываются расходы на авиаперевозки. Здесь самым ярким прецедентом стала ценовая дискриминация от Amazon, когда в 2000 году гигант интернет-торговли предлагал различным категориям покупателей одинаковые DVD с фильмами по разным ценам [2]. Ценовая дискриминация, когда, к примеру, всем товар предлагается по 100 рублей, а вам лично – по 110, считается незаконной и неэтичной. Правовой альтернативой этого является динамическое ценообразование, когда всем товар продается по 100 рублей, а вам лично – по 90 за счет скидки.

Динамическая установка цен зависит от какого-то параметра, например, дней недели, времени суток, сезонности, наличия товаров на складе, спроса или цены у конкурентов. Такие простые модели активно используются в продаже билетов, например, на поезда РЖД. В случае Amazon, описанном выше, стоимость товара зависела от времени суток и цены конкурентов (рис. 1).

Рис. 1. Изменение цены на одинаковые товары в интернет-магазинах в зависимости от времени суток [3]

 

Сегодня применяются более сложные модели установки цен, основанные на анализе множества факторов с помощью ML-алгоритмов. Прежде, чем перейти к ним, рассмотрим математическую постановку задачи.

Эффективный маркетинг: психология против математики

С точки зрения математики задача о ценообразовании представляет собой нахождение оптимальной точки на кривой дуге от закупочной стоимости до максимально возможной цены. В экономике эта дуга называется кривой эластичности спроса и предложения, а в математике – опорной траекторией. Опорная траектория представляет собой выпуклую функцию [4], для которой есть множество способов найти оптимум – он находится на вершине параболы и является лучшей ценой (рис. 2).

Рис. 2. Математическая иллюзия о задаче ценообразования

 

Однако, практика расходится с теорией. Рассмотрим упрощенный пример, почему в реальности зависимость прибыли от цены – не всегда выпуклая функция. Классический кейс, подтверждающий это, был про крупные цветочные магазины: эксперимент ставился на двух букетах. Есть 2 букета цветов: первый стоит 2 000 рублей, а его закупочная цена составляет 1 500. Второй продается по 3 500 рублей, а закуплен по 3 000. За день было продано 3 экземпляра первого букета и 8 экземпляров второго. Далее цена 1-го букета была увеличена до 2 500 рублей. Продажи 1-го букета упали: была продана всего лишь 1 штука. Продажи 2-го, цена на которой не менялась, остались на прежнем уровне: 8 штук за день. Общая прибыль снизилась. Когда цену 1-го букета подняли до 3 300 рублей, его купили 3 человека. При этом продажи 2-го букета упали до 5 штук, хотя его цена оставалась неизменна – 3 500 рублей. Таким образом, общая прибыль достигла максимума из этих 3-х вариантов: 7 900 рублей (рис. 3).

Рис. 3. Статистика продаж по разным ценам: поиск эластичности

 

Причиной таких результатов является психология потребителей. У данного флористического магазина была определенная покупательская аудитория: 8 человек, которые покупали букеты в районе 3 000, и небольшая группа, которая покупала до 2 000. После перемещения 1-го букета из одного ценового диапазона в другой, эти товары стали конкурировать между собой.

Поэтому, при поиске наиболее выгодной цены стоит не просто искать оптимальную точку на кривой эластичности, но учитывать дополнительные сведения о товарах. Для рассматриваемого примера это бюджет потенциального покупателя и количество букетов каждого вида. По этим двум параметрам была построена модель, которая достаточно точно описывает вероятность покупки. Как правило, закупочная цена неизвестна клиенту. Таким образом, дешевый по закупке товар можно очень выгодно продать.

Существует другой способ увеличения общей прибыли за счет изменения цен на товары. Он называется «якорный», поскольку основан на товарах-якорях. Якорь – это главный товар, за которым пришел покупатель, а остальную сумму в потребительской корзине составляют дополнения к нему. Классическая иллюстрация этого – сотовый телефон и аксессуары: чехлы, защитные пленки, наклейки и т.д. Рассмотрим пример, когда интернет-магазин продавал телефоны по 10 500 рублей, немного зарабатывая на самом устройстве и аксессуарах. В рамках акции цена на телефон была снижена на 5% и стала самой низкой на рынке. При этом заказы выросли, и, соответственно общая прибыль тоже, хотя главный товар продавался «в ноль», по закупочной цене (рис. 4).

Рис. 4. Пример увеличения общей выручки за счет снижения цены якоря

Таким образом, с точки зрения бизнеса не нужно искать оптимальную математически цену, нам нужно построить такой ценовой ряд, чтобы в целом повысить прибыль (рис. 5).

Рис. 5. Математическая постановка задачи о ценообразовании (максимизации общей прибыли) с точки зрения бизнеса

 

Необходимо определить функцию зависимости количества продаж от цен, учитывая контекст задачи и стоимость экспериментов. При этом искомая ценовая последовательность может быть, очень долго сходиться к оптимуму. С математической точки зрения, это может быть очень медленный алгоритм, а сама искомая функция не является марковской, т.е. ее значение зависит от предшествующих состояний, а не только от текущего значения независимых переменных [5]. Таким образом, в реальности следует одновременно оптимизировать функционал и искать функцию эластичности. В данной статье мы рассматриваем один из таких возможных подходов.

Подготовка к моделированию

Прежде всего необходимо подготовиться к моделированию, в том числе тщательно продумав все бизнес-моменты, в частности:

  • не следует часто менять цены, чтобы не смутить потребителей;
  • не стоит в несколько раз изменять стоимость товара.

Итак, мы приступили к ценообразованию в интернет-магазине с помощью ML. В первую очередь был сделан матчинг товара. Это был очень долгий и трудоемкий процесс, поскольку для каждого продукта необходимо учитывать его предысторию. Например, если раньше продавалась зубная щетка А, и позже вышла А1 (ее новая версия), следует учесть историю продаж щетки А в истории А1, т.к. оба товара принадлежат к одно категории, находятся одном ценовом диапазоне для той же целевой аудитории.

Но, например, в случае телефонов Apple нужно менять сегмент товара: при выходе 5-ой модели 4-я не перестала продаваться, а перешла из люксовой группы в класс более дешевых товаров. Такую сложную задачу не получилось полностью автоматизировать, приходилось сопоставлять и прописывать некоторые правила вручную.

Далее была определена специальная метрика, которая характеризовала товары в каждой группе и пересчитывалась автоматически для кластеризации по ценовой эластичности. Например, в категорию «подарки» могут попасть зубная щетка, коробка конфет и мягкие игрушки. Изменение цен касается сразу всего кластера, чтобы товары внутри одной категории не конкурировали друг с другом. Также были определены якоря и дополнения. К примеру, якорь – это букет цветов, а дополнение – коробка конфет или небольшая мягкая игрушка. А вот такая же мягкая игрушка больших размеров – это уже не дополнение, а отдельная покупка.

Далее был выполнен анализ поискового траффика с целью предсказания спроса на товары. Эта достаточно простая задача решена с помощью счетчиков сайта: Google Analytics, Яндекс.Метрика. После была построена опорная функция спроса – прогноз продаж с пересчетом каждого товарного кластера. Для аппроксимации эластичности использовался регрессионный подход, случайные деревья (Random Forest) и градиентный бустинг (Gradient Boosting). Для каждого кластера применялась отдельная модель: усреднение, взвешенное голосование и т.д.

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

Реализация ML-моделей и алгоритмов

Разработанная ML-модель на выходе отдает идентификатор товара и маржу в процентах, поскольку так клиенту проще устанавливать цены. Если поменялась цена закупки, новая стоимость рассчитывается автоматически.  Алгоритм способен за 3 часа пересчитать 60 тысяч цен. Такая скорость достигается за счет кластеризации. Например, если необходимо обновить стоимость в 10 кластерах, это будет сделано всего за 5 минут за счет якорей и их связей между собой и аксессуарами.

Отметим, что понятие якоря для бизнеса и для потребителя различно. Например, на целую категорию «Игрушки» может быть всего 1 или 2 больших якоря, которые нужны, в том числе для того, чтобы разместить похожие товары в максимально далекие друг от друга кластеры. Таким образом, наша модель ищет эластичность по кластерам, в отличии от типичной рекомендательной системы.

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

Иерархическая кластеризация достигается за счет подробного описания товаров, т.е. полного набора их характеристик. Например, в категории «мягкие игрушки», «медведь» - это характеристика, 16 сантиметров (длина медведя) – это тоже характеристика. Необходимо выделять метрики-характеристики так, чтобы товары с близкими значениями по ней были максимально близки по ценовой эластичности. Если товар является якорем, его следует размножить и добавить в другой кластер, поскольку он тянет за собой продажи дополнений (рис. 6).

Рис. 6. Простейший пример кластерной классификации по якорям

Кроме того, наш взвешенный алгоритм бустинга учитывает влияние сезонности на ценообразование. Например, 9 мая продажи падают, поскольку люди ходят на парады и в парки, а не в магазины. Поэтому в ML-модель были вручную добавлены эти признаки: праздник, день перед праздником и т.д., все, что можно получить из временного ряда – календаря. Благодаря этому модель учитывает сезонное падение поискового траффика, конверсии и, соответственно, продаж.

Результаты применения ML для ценообразования

Вышеописанный подход и ML-модели были внедрены в babadu.ru, крупный отечественный интернет-магазин игрушек [1], который входит в топ-100 Рунета и имеет годовой оборот более миллиарда рублей.

Были поставлены цели увеличить выручку и маржинальный доход. Данные показатели удалось увеличить на 7% за счет динамического ценообразования с помощью ML всего за несколько недель (рис. 7).

Рис. 7. Результаты тестирования ML-системы ценообразования в реальном интернет-магазине

 

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

Тем не менее, наш алгоритм нашел некоторую скрытую закономерность продаж товаров с МРЦ. Она показала, что можно поднять стоимость этих товаров, увеличив таким образом целевые показатели (общую выручку и маржинальный доход). Сначала заказчик опасался сделать это, но в качестве эксперимента после 1-ой недели успешной работы ML-системы было решено повысить стоимость товаров с МРЦ на 1 500 рублей. Согласно ML-прогнозу и вопреки негативным ожиданиям заказчика, продажи этих товаров не упали, а сохранились примерно на прежнем уровне. Это обусловлено каналом трафика: данные товары, в основном, приобретали через e-mail рассылки. Покупатели были лояльны к магазину и практически безразличны к стоимости продукта. Так ML-система за неделю заработала магазину 200 000 рублей (рис. 8).

Рис. 8. Результаты продаж товаров по стоимости существенно выше МРЦ

Заключение

Итак, технологии ML в очередной раз доказали свою состоятельность в сфере интернет-торговли. Однако, прежде чем внедрять данный подход, необходимо выполнить следующие условия:

  • объемы бизнеса требуют автоматизированной обработки данных, например, установка цен вручную на 10-100 наименований – это вопрос пары часов. А в случае ассортимента из нескольких тысяч товаров, с учетом их взаимосвязей, человеку практически нереально самостоятельно обновить стоимость каждого продукта.
  • имеются средства дополнительной аналитики (метрики подсчета посетителей сайта, статистика продаж, деление товаров по категориям и т.д.);
  • ожидаемый эффект от внедрения ML превышает совокупные расходы на подготовительные работы (матчинг товаров, разработка гипотез, реализация системы и трудозатраты специалистов).

При соблюдении этих условий, слаженной работе ML-специалистов с бизнесом и готовности к изменениям, положительные результаты не заставят себя долго ждать.

 

Источники:

  1. Рейтинг ТОП-100 крупнейших интернет-магазинов России 
  2. Справедлива ли ценовая дискриминация?
  3. How Does Dynamic Pricing Work? Examples, Strategies, and Models
  4. Выпуклая функция
  5. Марковский процесс

 

Контакты