БЫСТРОЕ БРОНИРОВАНИЕ
Оставьте заявку на бронирование и менеджер свяжется с вами для уточнения деталей
Или вы можете связаться с нами напрямую:
+74993482004
ВЕРНУТЬСЯ В БЛОГ

РЕКОМЕНДАТЕЛЬНЫЙ ДВИЖОК ЗА 2 СТРОЧКИ КОДА



Павел Юркин — один из первых java-разработчик компании Leroy Merlin, рассказал нам о рекомендательном движке, с чем мы с вами спешим поделиться.  

 «ЧТО ТАКОЕ РЕКОМЕНДАЦИИ?»  


Если зайти на любой сайт, на страницу определённого товара, внизу можно увидеть два блока. Первый блок сопутствующих товаров, которые можно дополнительно продать к данному товару. Второй — это похожие товары, которые можно предложить взамен нужного товара. 

«ЗАЧЕМ ВСЕ ЭТО НАДО?»  


Исследование Forrester говорит, что персонализированные рекомендации позволяют увеличить конверсию почти на 100% и это всё может быть прибыльно. Инвестиции имеются шансы окупиться.  

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

Когда клиент приходит в магазин, у него возникает в голове мыслительный процесс «подходит ли этот товар к другому товару или уже приобретенной вещи» или «как ещё можно использовать данный товар». Клиент каждый раз голосует рублём, так как покупает и платит.  

Поэтому нужен аппарат, который решение клиента (чек) переформатирует в Graph, а он уже расскажет к какому товару можно порекомендовать какой товар в зависимости от этого блока. 

Алгоритм, который придумал Google One, называется Word2Vec. Этот алгоритм машинного обучения позволяет переводить любое слово в зависимости от –контекста в котором он находится в вектор. То есть, допустим, есть слово «король» и алгоритм сопоставляет этому слову какой-то вектор. 

Возникает вопрос — «как слово может быть переведено в вектор?» 


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

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

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


WORD2VEC В РЕКОМЕНДАЦИЯХ


Наш текст – это чек, а именно список купленных товаров через пробел. И вот этих строчек чеков, из списка айдишников товара очень много. То есть все чеки, который были когда-нибудь куплены. 

Каким же образом можно получить комплименты субституты? 
Предположим есть два чека, в которых всё одинаково, кроме одной пары товара. Это означает, что с некоторой долей вероятности два человека решали одну и ту же задачу, но они решили ее немного по-разному, и в одном чеке товар был Г, а во втором чеке товар был Д. Товары Г и Д могут быть заменителями с какой-то доли вероятности, потому что в обоих чеках одинаковые задачи, но немного разные. 
С другой стороны есть два чека: чек 1 и чек 2, который полностью чек 1 только плюс ещё какие-то два товара. Из всего этого можно предположить что с некоторой теорией вероятности было два клиента, которые решали одну и ту же задачу, только один клиент решил её более полно, может быть у него было больше денег. Вот эти два товара, которые Д, они товары дополняющие с некоторой доли вероятности товары из чека 1. 

В первой строчке обучающая модель, а во второй строке товар к которому нужно что-то порекомендовать. Следует попросить у модели ближайшие вектора к данному товару, чтобы получить похожие товары. Чтобы из похожих товаров получить товары заменители, их следует отфильтровать. 
«Мы считаем что товары могут быть заменителями один другого, только если они принадлежат к одной категории», — рассказывает нам Павел. 
То есть молоток можно заменить только молотком, а не микроскопом и тд. Исходя из этого, следует фильтровать похожие товары с типом товара, того что спросили получаем аналог. Дополняющие товары наоборот. Они должны быть другого типа, противоположного похожим товарам. 

Чтобы внедрить логику на сайт, следует провести А/Б тест, а именно результат. 
Есть два потока. Поток А на старые аналоги, поток Б на новые аналоги, при этом сопутствующие аналоги везде одинаковые. То есть сейчас цель тестировать только аналоги. А именно сравнение то как пользователь кликнул, то как пользователь покупал и то, сколько он сохранял в корзину. В момент за полторы недели А/Б теста конверсия по аналогам переросла на 10%. Результаты А/Б теста на странице положительные и длительное время будут приносить деньги. 

Блок сопутствующих товаров немного просел и возникает вопрос: почему так? Ведь сопутствующие товары не тестировали, то есть и в А и в Б сопутствующие товары одинаковые. 
Существует много исследований, которые говорят о том, что, чтобы удовлетворить клиента есть ограниченное количество времени. Для мобильных приложений это 30 секунд (средняя сессия), за которые нужно успеть удовлетворить клиента. 
Проблема в том, что если на сайте делается то, что начинает привлекать внимание клиентов, то на все остальные вещи клиент будет обращать внимание меньше, так как у клиента есть ограниченное количество времени на то, чтобы добиться своей цели. 
— «Это товары аналоги и чтобы этот тест прошёл замечательно, мы сразу пустили в продолжение» 

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

Есть категории товара, где этот алгоритм заходит хорошо, а есть где не заходит. И в тех категориях товара, где не заходит, это скорее всего категории для которых была ручная настройка. То есть только в каких-то важных категориях и так как они знают лучше, чем машинное обучение, то у них здесь лучше. 
В результате везде там где алгоритм выиграл, поставлено продолжение, а там где ручная привязка лучше, просто оставлена. 

Рекомендательный движок (2-4 строчки кода) может быть сделан за одну неделю, если есть данные по продажам. Его можно сделать используя алгоритм Word2Vec.  
Мы спросили у Павла, как он пришёл к необходимости создания рекомендательного движка, как это родилось в их корпорации? 

— «Раз в год каждый сотрудник собирается со своим руководителем на 3-х часовую беседу, в которую он разговаривает чего достиг и ставит планы на следующий год. И мне, как разработчику, было интересно машинное обучение. Я поставил себе цель: выполнить хотя бы одну задачу в роли дата-сайентист. А после начал искать куда я могу применить эти навыки. На нашем сайте я подумал как можно применить машинное обучение и вот сделал историю, которая принесла деньги».

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

У нас на сайте есть возможность в ручную ставить рекомендации, а везде где в ручную не успели или ещё что-то, нас спасает машинное обучение и таким образом, все хорошо. 

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


БОЛЬШЕ КЕЙСОВ ОТ ВЕДУЩИХ ПРАКТИКОВ СТРАНЫ