2009-04-27 2 views
18

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

ответ

12

Простой и прямая (порядок телега):

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

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

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

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

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

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

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

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

+2

Затем вы можете продолжить это, только проверив поиск продукта, выполненный людьми с одной и той же демографической информацией (например, среди кавказских мужчин в возрасте 18-24 лет). – TheTXI

+1

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

1

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

0

Анализ рынка корзины является областью исследования, что вы ищете:

Microsoft предлагает два подходящих алгоритмов их анализа сервера: Microsoft Ассоциация Алгоритм Microsoft Decision Trees Алгоритм

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

link text

3

Существует не окончательный ответ, и это очень маловероятно, есть стандартный алгоритм для этого.

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

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

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

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

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

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

0

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

0

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

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

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

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

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

0

CPAN модуль Math::Preference::SVD кажущийся «Preference/Рекомендация двигателя на основе единого Значение декомпозиции»

0

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

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

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

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

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

1

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

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

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

+0

+1. Я предпочитаю программировать CI, который, как я чувствую, имеет больший баланс между теорией и практикой, CI в действии, который, кажется, полностью посвящен рецептам использования библиотек Java. Но они оба заслуживают внимания. –

0

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