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

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

Отличный, почти академический обзор.
Но есть вопрос.
Вот продаю красные туфли и точно знаю кому, сколько и за сколько продал. А теперь хочу продавать красные кеды. И ни один из методов изложенных выше не даст ответа — выстрелят красные кеды или нет.
Эти методы хороши для изучения прошлого, прошлых привычек, прошлых предпочтений.
Когда появляется новый товар, то не с чем сравнивать. Можно только выдвинуть гипотезу, что, те кто носит красные туфли будут носить красные кеды, можно и любую другую.
Только вот нет инерционности в пристрастиях. Носит и носит чел красные туфли, а тут на работе намекнули и всё, он теперь носит синие. Никакая изложенная выше метода это не сможет предсказать.

Но обзоры классные, полные и подробные. Даже A/B к месту упомянут )))
Эта проблема частично освещена в первой статье в разделе «Проблема холодного старта».

Так же, я думаю, в примере красных кед имеет смысл все товары, в т.ч. новые, экспертным путем пометить некими атрибутами (тип обуви, материал, цвет и т.д.) и сравнивать товары в т.ч. в разрезе данных атрибутов. В таком случае, даже не имея никакой статистики по новому товару, у нас будет статистика по атрибутам, которая уже со старта даст возможность формировать рекомендации, хоть и не такие точные.
Да, по этому принципу как раз работают Content-Based рекомендации. Товар новый, но все понимают как он соотносится с остальными товарами. Не обязательно даже экспертно, по фоткам можно много чего разметить, уж цвет то точно (как тут например).
Пока у нас нет искусственного интеллекта, способного делать обобщения без обучающей выборки, все завязано на данные. Если вы выходите на рынок с новым продуктом и хотите что-то спрогнозировать, то ни один алгоритм вам ничего не гарантирует. Т.е. вы конечно можете его использовать (если уверены что найденные моделью закономерности сохраняются при переходе train -> prod), но будете делать это на свой страх и риск.

В целом, мне кажется это вопрос адекватной оценки рисков. Если от модели зависят ваши финансы, то на нее стоит полагаться только когда вы ее хорошо протестировали, в том числе в целевой среде.
Насчет близости товаров. Можно построить вектор по характеристикам товаров, по одной размерности на фасет, и получить дескриптор, по которому искать соседей. Почему до сих пор нет сервиса, позволяющего этот дескриптор получить по любому товару с характеристиками? Любой интернет-магазин способен упорядочить значения фасетов: ведь все, что нужно сделать владельцу интернет-магазина, это расставить значения характеристик по оси, и выгрузить это в какой-то внешний сервис, который возвращает дескриптор, который сайт сохраняет к себе в базу, и по нему дает рекомендации о ближайших соседях. Альтернативно этот дескриптор может кидаться в другой сервис, который тупо возвращает набор айдишников товаров, близких к этому (при условии, что их дескрипторы тоже отправлялись, конечно). Дополнительно можно еще feature vector от картинки вычислять и обогащать.
Если я Вас правильно понял, то это описание алгоритма Content-Based фильтрации. Честно говоря, не особо слежу за готовыми решениями в этой области, но был уверен, что это много где реализовано. Во всяком случае функционал довольно базовый. Всякие ПО для интернет магазинов, системы индексированного поиска и прочее.
Зря вы картинки с обувью поставили. У обуви есть особенность: она может тупо не подойти (более того — скорее всего, так и будет, поиск «своей колодки» — обычное дело). Именно для обуви хотелось бы видеть в первую очередь классификацию «по анатомии», чтобы сразу выбирать только из подходящих моделей.
Вы правы. Вообще идея интересная, я бы разделил на 2 подзадачи — одну, связанную с подбором оптимального размера одежды — тут и CV, и сенсоры, и вообще есть где развернуться. Но подходящий размер только половина дела, важно чтобы понравился цвет/фасон и прочее (кто-то любит носить посвободнее, кто-то наоборот). На этот вопрос как раз хорошо отвечают рекомендательные алгоритмы. Далее результаты можно объединить в единый pipeline рекомендаций.
Отличный обзор. Жаль, не могу плюсануть.

Спасибо за статью. В формулу Recall закралась ошибка, нужно TP / (TP + FN).

Да, cпасибо, что обратили внимание. Поправил.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий