2015-02-11 2 views
2

Мне любопытно, какие алгоритмы существуют для рекомендаций на основе рекомендаций. Я имею в виду, что люди могут «любить» что-то, но они не могут «отличить» что-то. Какие алгоритмы рекомендации существуют для такого сценария.Рекомендации по использованию

У меня была одна идея, но я не думаю, что ее масштабируемость. Моя идея заключалась в том, чтобы создать график, в котором каждый симпатичный элемент имеет преимущество друг с другом в симпатичном элементе с пропускной способностью числа пользователей, которым нравятся оба общих элемента. Затем, чтобы давать рекомендации для определенного пользователя, вы увеличиваете график так, чтобы пользователь был исходным узлом с бесконечными краями для всех элементов, которые ему нравятся. Все элементы, которые пользователь не любил, имеют край с бесконечной пропускной способностью для узла назначения. Затем выполните максимальный поток, используя Ford-Fulkerson, и рекомендации можно сортировать на основе граничных потоков в пункте назначения. Однако, подумав об этом, график с 1000 элементами или более может быстро выйти из-под контроля.

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

Буду признателен за любые идеи или ресурсы.

+0

Существует большая разница между «увиденным и не понравившимся» на «did'nt see». есть ли у вас данные, если пользователь видел товар или нет? видел и не любил иногда используется как слабое «неприязнь» – amit

ответ

3

Есть некоторые моменты, вы можете использовать:

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

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

+0

Я вижу. Таким образом, используя сходство с jaccard, каждая рекомендация стоит примерно O (N * M), где N - количество пользователей, а M - количество элементов. Реально, производительность будет равна 2 * M - это среднее количество понравившихся предметов или что-то в этом роде. Теперь, рассматривая, может быть, миллион пользователей и 1000 предметов, которые понравились каждому пользователю, нам может понадобиться что-то немного быстрее. Поэтапный подход будет стоить O (N) для каждого нового «подобного». Полагаю, именно здесь начинает процветать совместная фильтрация. Есть предположения? – Chet

Смежные вопросы