Алгоритм предложения продуктов - PullRequest
18 голосов
/ 27 апреля 2009

Какой хороший алгоритм предлагает вещи, которые кому-то могут понравиться, основываясь на их предыдущем выборе? (например, популяризированный Amazon для предложения книг и используемый в таких сервисах, как iRate Radio или YAPE, где вы получаете предложения по рейтингам)

Ответы [ 11 ]

13 голосов
/ 27 апреля 2009

Просто и понятно (корзина заказов):

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

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

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

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

Становится сложнее, когда вы добавляете рейтинги. Вместо дискретной корзины предметов, которые вы приобрели, у вас есть история покупок оценок предметов.

В этот момент вы смотрите на интеллектуальный анализ данных, и сложность огромна.

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

Предлагать товары в других самых высоких списках клиенту.

3 голосов
/ 27 апреля 2009

Нет однозначного ответа, и маловероятно, что для этого есть стандартный алгоритм.

То, как вы это делаете, во многом зависит от того, какие данные вы хотите связать и как они организованы. Это зависит от того, как вы определяете «связанный» в области применения.

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

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

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

Сочетание любого из этих случаев может работать для вас.

Я бы лично порекомендовал подумать о том, как вы хотите, чтобы алгоритм работал и как предлагать соответствующие «продукты». Затем вы можете изучить все варианты: от простого до сложного и сбалансировать свои потребности.

3 голосов
/ 27 апреля 2009

Рассмотрите вопрос " Что такое хороший алгоритм рекомендаций? " и его обсуждение на Hacker News.

1 голос
/ 28 апреля 2009

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

  • Программирование CI: http://oreilly.com/catalog/9780596529321/ довольно нежное введение с образцы в Python.

  • CI в действии: http://www.manning.com/alag выглядит немного глубже (но я только что прочитайте первую главу или 2) и имеет примеры на Java.

1 голос
/ 27 апреля 2009

Рекомендованные продукты алгоритмы являются огромным бизнесом в наши дни. NetFlix для одного предлагает 100 000 для незначительного увеличения точности их алгоритма.

0 голосов
/ 03 ноября 2013

есть рекомендательная платформа, созданная amazon под названием Certona, вы можете найти ее полезной, она используется такими компаниями, как B & Q и Screwfix, для получения дополнительной информации по адресу www.certona.com/

0 голосов
/ 27 апреля 2009

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

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

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

Я знаю, это просто, и, возможно, есть лучшие способы.

Но я надеюсь, что это поможет

0 голосов
/ 27 апреля 2009

CPAN модуль Math :: Preference :: SVD , по-видимому, является "механизмом предпочтений / рекомендаций, основанным на разложении по одному значению"

0 голосов
/ 27 апреля 2009

просто мысли вслух:

вам нужно вычислить корреляцию между всеми и всеми (O ^ 2?) - если ваша модель хороших и плохих рейтингов совпадает с оценкой кого-то другого, то она может предложить вам их высокие оценки

но как это работает, если у вас есть только несколько точек данных?

рейтинги должны быть нормализованы - оценка 2 * кем-то, кто оценивает все остальное как 1 *, явно является голосованием "за", тогда как оценка 2 * кем-то, кто оценивает все остальное как 4 * -5 *, больше похожа голос "против"

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

0 голосов
/ 27 апреля 2009

Я думаю, что регрессия Google на основе метода наименьших средних квадратов (или что-то в этом роде) может дать вам кое-что, что можно пережевать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...