Форум
Читайте нас также:

об электронной торговле - для интернет-магазинов и ритейла. портал и сообщество

Форум
Сколько стоит A/B-тест стороннего сервиса?
АВТОРЫ:

Сколько стоит A/B-тест стороннего сервиса?

АВТОРЫ: Михаил Кечинов, CEO Центр управления конверсией REES46

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

Маркетологи интернет-магазинов принимают решение по принципу "Этот сервис с крупными клиентами работает, а там не дураки, свое дело знают, так что и мне подойдет". А те, которые крупные, в свою очередь делали точно так же.

Хотя, казалось бы, проведи A/B-тест, пойми, сколько тебе этот сервис приносит, и тогда решай, нужен он тебе или нет.

Я недавно с некоторым недоумением узнал, что A/B-тесты сторонних сервисов не практикуются почти совсем. Потому что игроки рынка рассказывают, что проведение теста — это очень дорого. Конкретизируя в цифрах, провести A/B-тест двух сервисов товарных рекомендаций стоит от 300 000 рублей. Трижды пересчитав нули, я спросил: откуда дровишки?

Мне ответили (цитата):

  1. Необходимо настроить серверное разделение трафика и передать нужные dimensions в Google Analytics через Measurement Protocol.
  2. Учитывая то, что экспериментальные сессии должны делиться/считаться начиная с первой страницы даже для новых пользователей — придется отказаться от стандартного Google cid (который генерится на клиенте) и использовать свой собственный идентификатор клиента.
  3. Необходимо настроить трекинг статуса заказов в Google Analytics через Measurement Protocol (полную синхронизацию с CRM/ERP).
  4. По прошествии предполагаемого периода теста необходимо выгрузить информацию обо всех заказах и сессиях из Google Analytics при помощи API.
  5. Необходимо соединить полученные данные с маржинальностью каждого заказа, чтобы посчитать EBITDA от каждого заказа.
  6. Нужно загрузить все полученные цифры по EBITDA в R/Python/Excel и оценить распределение выборки.
  7. Также надо отсечь все аномалии (95/99-percentile) и рассчитать среднеквадратическое отклонение.
  8. И еще рассчитать доверительные интервалы и статистическую значимость для полученной выборки.
  9. Продолжить тест, если доверительные интервалы слишком большие и не достигнута значимость.

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

Учитывая то, что 90% магазинов даже транзакции не умеют собирать Server-to-Server — о каком тесте на прибыль вообще идет речь?

Моя реакция:

Если бы я был маркетологом без опыта программирования, чтобы я увидел бы из этого текста? Я бы увидел слова "серверное разделение", "measurement protocol", "percentile", "доверительные интервалы" и подумал: "Жесть какая, слишком сложно и требует времени на то, чтобы разобраться, займет у нас полгода, нереально".

К сожалению, я полжизни занимаюсь программированием, и половину от этой половины — управлением программистами. Я знаю, что говорят программисты менеджерам, когда не хотят делать какую-то задачу: они говорят, что это невообразимо сложно и используют для этого множество технических слов, типа "legacy", "рефакторить надо", "архитектура не позволяет". Кстати, если слышите от своих программистов такие слова, скажите, чтобы перестали ныть.

В нашем примере с A/B-тестом то же самое.

Я постараюсь перевести его на человеческий язык, дать куски готового кода для программистов и показать, сколько это действительно стоит. Прежде чем начнем, давайте определимся со стоимостью: в среднем час работы хорошего программиста на аутсорсе стоит 2500 рублей. Исходя из оценки в 300К, подразумевается, что для проведения A/B-теста потребуется 120 часов работы специалистов. В переводе на человеческие дни — 4 недели непрерывного программирования (да, мы считаем, что программисты работают 6 часов в день, а в остальное время ходят в туалет, за кофе и покурить).

A/B-тест длится 1 месяц. Высококвалифицированный программист работает непрерывно 1 месяц. Этот программист что, держит руками сервер, чтобы тот не упал во время теста? Или все входящие заказы распределяет по сегментам вручную по мере их появления?

Теперь вернемся к нашим пунктам невероятного объема работ, перечисленного выше.

Первое, на что стоит обратить внимание в этих пунктах: в них говорится, что Google Analytics доверия нет, поэтому пользователей на сегменты нужно разделять на сервере своими силами, потом загружать все в GA, а потом, в конце, выгружать из GA и сопоставлять со своей базой. Сложновато получилось. И непонятно. В основном непонятно — зачем. Если доверия Гуглу нет, значит не нужно его использовать.

В принципе, я согласен с автором комментария: если цель A/B-теста в том, чтобы измерить чистую прибыль, то Google Analytics или Google Optimize не очень подходят. Ведь нам нужны только оплаченные заказы, только чистая прибыль, а не общий оборот, и полностью весь объем данных, а не частичная выборка, как это делает Google Analytics:

В общем, отмечаем всех посетителей по сегментам на своем сервере и записываем в заказ сегмент посетителя своими силами.

Пример кода на PHP, который выполняет пункты 1, 2, 3 и 4:

 

if( !$_SESSION[`abc_test_segments`] ) {

      $segments = [`A`, `B`, `C`];

      $segment = $segments[random_int(0, count($segments))];

      $_SESSION[`abc_test_segments`] = $segment;

      mysql_query(`INSERT INTO segments (segment) VALUES ("` . $segment . `")`);

}

На человеческом языке это означает: если пользователь еще не помещен в сегмент, поместить его туда и записать визит посетителя в базу данных.

И если этот пользователь оформил заказ, отметить сегмент этого заказа:

mysql_query(`UPDATE orders SET segment = "` . $segment . `" WHERE id = ` . $order_id);

Пример кода, который реализует пункты 5, 6 и 7:

SELECT (order_items.amount * items.price * items.price_margin) AS net_profit_segment_A FROM order_items LEFT JOIN items ON items.id = order_items.item_id WHERE order_items.order_id IN (SELECT id FROM orders WHERE date BETWEEN (…) AND segment = `A` AND status = `complete` AND order_sum <= (SELECT MAX(order_sum) * 0.95 FROM orders WHERE date BETWEEN(…) AND status = `complete` ) AND order_sum >= (SELECT MAX(order_sum) * 0.05 FROM orders WHERE date BETWEEN(…) AND status = `complete` ) );

Выглядит сложновато, но любой программист разберет его за пару минут. Смысл кода — получить чистую прибыль от всех исполненных заказов сегмента `A`, исключив 5% самых дорогих и самых дешевых аномальных заказов. Чтобы получить чистую прибыль сегментов `B` и `C`, достаточно просто заменить в этом запросе букву `A`.

Дальше пункт 8 — рассчитать доверительные интервалы. Что такое "доверительный интервал"? Это разница между выручкой разных сегментов, при превышении которой можно сказать, что разница имеет значение, а не является случайной. Например, сегмент A с суммой 100 000 рублей и сегмент B с суммой 100 500 рублей имеют слишком малую разницу в 500 рублей, чтобы считать, что сегмент B стабильно всегда будет на 0,5% лучше, чем сегмент A.

А вот разница в 20 000 уже имеет значение. Имеет ли значение разница в 4500 рублей? Это покажет доверительный интервал, который может рассчитать любой студент экономического или математического факультета типового ВУЗа.

Считается он так (закройте глаза, если вы не программист):

SELECT ( 1.96 * SQRT( ( (SELECT COUNT() FROM orders WHERE segment = `A`)/(SELECT COUNT() FROM segments WHERE segment = `A`) * (1 – (SELECT COUNT() FROM orders WHERE segment = `A`) / (SELECT COUNT() FROM segments WHERE segment = `A`) ) ) / SELECT COUNT(*) FROM segments WHERE segment = `A`) ) AS confidence_interval_for_A

Подобный запрос выполняете для каждого сегмента и получаете доверительный интервал для каждого из них.

Обратите внимание: решение уместилось 1147 букв. А описание проблемы и её стоимости потребовало 1429 букв.

Если разделить сумму в 300 тысяч рублей на 1147 букв, то получим стоимость одной буквы — 261 рубль 50 копеек. Даже юристы меньше зарабатывают.

При всем уважении к коллегам по рынку: я потратил на написание этого кода 15 минут, еще около 30 минут я потратил на запрос в гугле "confidence interval mysql". В итоге не больше часа. Даже если поставить такую задачу начинающему программисту и платить ему как высококвалифицированному программисту 2500 рублей в час, сделать эту задачу можно часов за 20. И её стоимость составит не более 50 000 рублей. В шесть раз меньше заявленной цены.

Выводы

Я вот о чем: проводите A/B-тесты любого сервиса, который планируете использовать. Не ведитесь на "я лидер, гарантирую прирост", "A/B-тест стоит очень дорого" и "миллионы мух не могут ошибаться". Иначе ваш магазин ждет та же участь, что и Enter, Доставка.ру и Уютерра.

 

Об авторе: Михаил Кечинов, CEO Центр управления конверсией REES46




Прокомментировать



:D
:)
:(
:o
:shock:
:?
8)
:lol:
:x
:P
:oops:
:cry:
:evil:
:twisted:
:roll:
:wink:
:!:
:?:
:idea:
:arrow:
:|
:mrgreen:
.

Читайте также
Personalization
Дать покупателю позитивный опыт (исследование "Reimagining Commerce" )

Как меняются представления о "правильной" персонализации и какие ошибки в общении с клиентом могут стать для вас роковыми. Мы перевели исследование "Reimagining Commerce", показывающее, как…

Коллеги, кто пользуется бонусными системами?

Подскажите, кто-нибудь использует в работе (и доволен при этом) бонусные системы? Видел уже рекламу нескольких разработчиков, но пока терзают смутные сомнения. У кого-то все отзывы…
Мобильные покупки: ноутбук под рукой, но со смартфона удобнее
Мобильные покупки: ноутбук под рукой, но со смартфона удобнее

"Яндекс.Маркет" и GfK Rus изучили, как меняется поведение мобильных покупателей. Если вкратце: со смартфона покупают там, где уже привычно и комфортно, а гендерная разница постепенно…









2001 - 2017 © Оборот.ру. Все права защищены