Как стать автором
Обновить

Комментарии 22

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

В статье говорится больше в целом про запуск этого направления и приведен пример, объясняющий почему в основе модели Item-Based Collaborative Filtering лежит косинусная мера сходства.

Так это не машинное обучение снова, это просто фильтрация.

… Статистика показала, что покупатели действительно могут быть заинтересованы в совершенно разных продуктах, а не только в напитках… И ???? Результат есть? Такое предположение наши аналитики делают и без ML :)
Моя цель была показать, что нельзя основываться только на экспертном мнении без подкрепления аналитикой данных. Дальше будет внедрение других алгоритмов с более персонализированными для клиента рекомендациями.
Спасибо за статью! Буду ждать продолжения.

Есть вопрос:
Не случится ли так, что акцентируя внимание потребителя на вычисленных по этой методике определенных множествах продуктов и дополнительных товаров, мы загоним его в некий «кокон», в котором он «не увидит» другие предложения, которые система сочтет менее актуальными и/или менее прибыльными?

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

Нормальный старый сайт когда вернёте?

Никогда, уже выпилили его из репозитория :)
Признаться честно, не очень понимаю какой толк в попытке выведения рекомендаций на основе выбора схожих пользователей в условиях достаточно ограниченного предложения номенклатуры. Если речь идёт именно о рекомендациях, не лучше ли попытаться проанализировать состав заказываемых пользователем пицц? Например, если пользователь постоянно берёт пиццу с курицей 1 и иногда пиццу с курицей 2, скорее всего ему будет интересна и третья, а может даже удастся скормить крылышки. Тем более вам всё равно придётся копать в эту сторону для прогнозирования закупок ингредиентов.
Здесь была задача рекомендовать на основе выбранных в корзине продуктов, так как был ориентир на неавторизованных пользователей. Следующим этапом будут как раз решения для рекомендаций на основе истории заказов по пользователям.
Странно, что вы выбрали в качестве пилота нишевое направление кастомизированной пиццы, а не мэйнстрим. Ведь в нише затраты могут попросту не окупиться, а в основном направлении даже небольшая отдача умножится на большое количество продаж. Да и данных на пару порядков больше для обобщений и обучения. Неужели таки в продаже стандартной пиццы вы не нашли места машинному обучению?
Нишевый продукт кастомизированной пиццы был проанализирован еще перед проектом с рекомендациями. Такой анализ был нужен, чтобы быстро и без вывода в продакшн показать, что алгоритмы могут быть полезны. А дальше уже началась история с поиском пилотного проекта и его реализацией.
А экономический эффект от внедрежа можете оценить?
Мы с женой почти каждую пятницу заказываем пиццу в одном и том же месте, в одно и тоже время (±). В меню около 30 пицц, но у нас есть список любимых и мы заказываем одну из них. Однажды я поймал себя на мысли, что не хочу выбирать пиццу, звонить в пиццерию и делать заказ, а хочу подъехать к дому и увидеть, что курьер уже ждет меня с пиццей, которая мне сегодня понравится.Уверен, что я такой не один.
Поэтому предлагаю вам реализовать такую схему: собираете данные о том, что клиент обычно заказывает, по каким дням, в какое время ждет курьера (мы всегда делаем заказ за час до желаемого времени прибытия курьера) и с какой периодичностью -> на основе этих данных делаем прогноз о том когда клиент захочет сделать следующий заказ и что он захочет купить (можно предложить пиццу не из тех, которые клиент брал раньше, но из тех, которые ему должны понравиться) — > в день Х оператор звонит клиенту и говорит «Здравствуйте, Имярек мы готовы доставить вам пиццу „ВамТочноПонравится“ в течение часа, привозим?» Если я даю добро — оператор спрашивает нужно ли еще что-нибудь добавить в заказ и подтверждает доставку, иначе — перезвонит через неделю. Я, например, был бы доволен и не стал думать идти мне за шашлыком, в KFC или заказывать пиццу.
Прогноз когда сделает следующий заказ — интересная тема, думаю, мы до нее доберемся. Но скорее в другой конечной реализации, звонок — достаточно агрессивное продвижение.
Тогда отправляйте смс. Привезти заказ без подтверждения — вот агрессивное продвижение.
СМС — аналогичная звонку жесть, но чуть менее бесящая. Доставку по расписанию лучше тогда делать в приложении. Если человеку надо, то он настроит расписание в приложении/получит пуш.
Посмотрев на ваши вычисления косинусов (у меня первое значение 0,951 ~ 163/(sqrt(534)*sqrt(55))), захотелось подменить их вычислениями коэффициентов корреляции, потому что не очень понятно, как приведенные числа интерпретировать. Коэффициенты корреляции: r_ab ~ 0,894, r_bc ~ -0,0455 r_ac ~ 0,3874. Остается воспользоваться интерпретацией из мат. статистики. Но в каждом случае есть интересные вопросы интерпретации. Например, что можно сказать о зависимости a = (1, 1, 1, 1), b = (3, 3, 3, 3) (и вообще для любых пар векторов такого вида или векторов, у которых значения очень близки к средним), ведь здесь коэффициент корреляции = 0 — зависимости нет, косинус = 1 — зависимость есть?

В данном случае у нас не распределения двух случайных величин, и изменение одной может совсем не влиять на изменение другой, поэтому не считал корреляцию. А косинусное расстояние позволяет не учитывать количество заказов конкретного пользователя, так как считается угол между векторами, без учета длинны. Конечно, в таком случае появляется проблема, когда у нас совсем новый продукт или же не популярный, они могут ранжироваться в топ из-за малой истории, но это решил методом взвешенных сумм и вероятностью покупки одного продукта с другим.
Поздно, конечно, но тем не менее по формуле линейный коэффициент корреляции — это косинус на пространстве векторов с нулевым средним своих координат. По-моему, значения такого косинуса будут более информативными и наглядными.
Внедрение технологий на производство и использование машинного обучения это конечно всё хорошо. Но можно сделать просто вкусную пиццу с доставкой? (пробовал 2 раза заказывать додо-пиццу, ничем не лучше десятка других пиццерий за такие же деньги, а если честно, то вообще не понравилась)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий