🔥

Тред #9


Давайте поговорим про рекомендательные системы. Но пока расскажите про сервисы с лучшими на ваш взгляд рекомендациями?

Первая категоризация рекомендаций: персонализированные и неперсонализированные. Давайте начнем с неперсонализированных

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

Частный случай - топ: самые часто просматриваемые фильмы, фильмы с наивысшим рейтингом, часто коммертиоуемые посыт, самые покупаемые товары

В такого типа рекомендации легко добавить "слабую" персонализацию. Например, популярное в вашем регионе, часто покупаемые вашим полом.

Но также не стоить забывать про ручные неперсонализированных рекомендации, например авторские подборки

Неперсонализированных рекомендации - лучший способ проверить гипотезу, нужны ли вам в этом месте рекомендации. Своего рода "proof of concept". Они легче в реализации, легки в проверке, когда сервис новый и еще мало истории

Пример неперсонализированных рекомендаций - похожие товары m.lamoda.ru/cb/43-4035/sho… Это товары заменители: - вам понравился товар, которого нет в наличие, но вы можете выбрать похожий - у товара неподходящая цена, бренд или цвет, тут тоже помогут похожие товары
notion image

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

Но какие еще реки допускают отсутствие персонализации: похожие (о них было выше), кросс (с этим товаром покупают), апсейл (докиньте в корзину еще эти товары, вам не помешает)

Но как делать персонализацию? Можно поделить все на сегменты - каждому сегменту свои подборки. Проблема - что чем меньше куски, на которые делим, тем меньше данных по каждому куску

Далее, для тех, кто много времени потратил на классический ML: можно делать бинарную классификацию - будет клик/не будет клика (или другой таргет) В качестве объекта - user, item, pairwise фичи от user+item. Этот подход легок, если вы хороши в ML, но какие минусы?

если много пользователей =N, если много объектов=M - то тогда объектов будет NxM очень-очень много Также пользователи меняются, они делают клики, делают покупки и прочее: а значит меняются фичи. Пересчитывать каждый раз - не всегда выгодно.

Делают "воронки" моделей, для отборов пользователей и/или товаров: хороший доклад делал мой классный товарищ youtube.com/watch?v=V_KmTq…

Но так: популярные подходы SVD и его развитие, FM и разные реализации. На основе матрицы взаимодействия пользователей с объектами делаются персональные рекомендации.

Различные виды коллаборативный фильтраций. Все это уже работает быстро. И даже параллелится. И даже на кластере

Жопа везде,но есть 2 основных места 1)бизнес-правила, рекомендации иногда думают, что лучше человека, но они не знают какие идеи накладываются на ту или иную полку 2)метрики:а как понять, что старые лучше новых? Ну да, на глаз может быть лучше, да, если клики - вы растите roc-auc

... roc-auc - если вы пошли по классическому пути и прогнозируете клик, при паре user+item

Но все это не гарантия, что новые реки лучше старых. Ведь вы растите скорее всего деньги.

Растить клики - легко, показывайте треш, на него все кликают. Растите покупки - показывайте самые выгодные товары, с большими скидками и прочим.

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

Да, есть NDCG и прочее. Но ее увеличение ничего не гарантирует

#meme
notion image

Мне нравится, что тут все сложно, что я часто чувствую себя тупицей, что нет классического fit-predict-а

Много осталось за скобками, например выбор товаров с помощью FM, фильтрация по бизнес-правилам, а далее ранкинг. Очень много вариантов

Но в этом и кайф. Удачи с реками)