Рекомендатор: регистрируйте действия пользователя и datamine it - хорошее решение

Я планирую регистрировать все действия пользователя, такие как просматриваемая страница, тег и т.д.

Что будет хорошим решением для data-mine для получения рекомендаций?

Скажем:

  • Настройте все интересы из просматриваемого URL (если я знаю, что связанные теги)
  • Узнайте людей, которые имеют схожие интересы. Например. Джон и Джейн просмотренных URL-адресов, связанных с автомобилями и т.д.

Edit:
Его действительно отсутствие знаний в этой области является ограничивающим фактором для начала работы.

Позвольте мне перефразировать.
Предположим, что сайт похож на stackoverflow или Quora. Вся моя история просмотра, проходящая по разным вопросам, записывается, и Quora выполняет работу по анализу данных, просматривая ее и заполняя мой поток связанными вопросами. Я просматриваю вопросы, касающиеся воспитания, и в следующий раз, когда я вхожу в систему, я вижу потоки вопросов о воспитании детей. То же самое с покупкой Amazon. Я просматриваю часы и микшеры, а через два дня они присылают мне почту связанных товаров, которые мне интересны.

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

Ответ 1

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

Я приведу вам пример:

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

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

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

Итак, у вас есть огромное количество данных о покупке. И у вас много разных продуктов. Допустим, вы продаете 10.000 различных продуктов в своих магазинах. Каждый продукт может быть сопряжен с другими. Это составляет 10 000 * 10 000/2 = 50 000 000 (50 миллионов) пар. И для каждой из этих возможных пар вы должны узнать, если она содержится в покупке. Но, может быть, вы думаете, что у вас разные клиенты в субботу днем, чем в среду поздним утром. Таким образом, вы также должны хранить время покупки. Maybee вы определяете 20 временных фрагментов в неделю. Это составляет 50 М * 20 = 1 млрд записей. И поскольку люди в Мемфисе могут покупать разные вещи, чем люди в Беверли-Хиллз, вам тоже нужно место в ваших данных. Скажем, вы определяете 50 регионов, поэтому вы получаете 50 миллиардов записей в своей базе данных.

И затем вы обрабатываете все свои данные. Если клиент купил 20 продуктов в одной покупке, у вас есть 20 * 19/2 = 190 пар. Для каждой из этих пар вы увеличиваете счетчик на время и место этой покупки в вашей базе данных. Но чем вы должны увеличить счетчик? Всего 1? Или по количеству купленных продуктов? Но у вас есть пара двух продуктов. Должны ли вы взять сумму обоих? Или максимум? Лучше вы используете более одного счетчика, чтобы иметь возможность считать это всеми возможными способами.

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

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

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

И помните: затраты на процесс обработки данных покрываются только дополнительными сделками ваших клиентов!

Вывод:

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

Ответ 2

Храните каждую транзакцию как вектор тегов (например, посещенные страницы, содержащие эти теги). Затем выполните анализ ассоциации (я могу рекомендовать Weka) по этим данным, чтобы найти ассоциации, использующие доступные алгоритмы "Associate". Эффективность зависит, конечно, от разных вещей.

Одна вещь, которую сказал мне парень в моей уни, - это то, что часто вы можете просто создать вектор всех продуктов, которые купил один человек, и сравнить это с другими векторами людей и получить достойные рекомендации. Это представление пользователей как продуктов, которые они покупают, или страниц, которые они посещают, и, например, Расчеты по сходству Jaccard. Если "люди" похожи, посмотрите на продукты, которые они купили, что этот человек этого не сделал. (Вероятно, те, которые наиболее распространены в популяции подобных людей)

Хранение - это совершенно другая игра с мячом, есть много хороших индексов для векторных данных, таких как деревья KD, реализованные в разных RDBM.

Возьмите курс по сбору данных:) или просто прочитайте один из превосходных доступных учебников (я прочитал "Введение в интеллектуальный анализ данных" Pang-Ning tan et al и его хорошее.)

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

Ответ 3

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