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

12

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

User A performs Action P
User B performs Action Q
User C performs Action R
...
User C performs Action X
User A performs Action Y
User B performs Action Z
...

Где каждое действие имеет определенные характеристики (дата, время, клиент и т. Д.). Нас около 300, а у нас около 20 000 акций.

Вопрос :

Я хочу выяснить, есть ли какая-либо причинно-следственная связь между действиями пользователя. Например, «каждый раз, когда пользователь E выполняет действие T, через 2 дня пользователь G выполняет действие V». Но между ними может быть много других пользователей, выполняющих много других действий, и возможно, что никакой корреляции не будет найдено. Также возможно, что некоторые пользователи коррелированы, но другие полностью независимы. Это то, что машинное обучение сможет найти для меня? Есть ли определенный алгоритм или набор алгоритмов, которые могут мне помочь?

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

Matt
источник
1
G=(V,E)P(i,j)ij

Ответы:

1

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

Смотрите таблицу транзакций в этой статье: анализ рыночной корзины

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

UserA,transactionP |UserB,transaction Z| UserB, transaction F | [...]
cesko80
источник
Это действительно полезно, спасибо! Так я бы запустил алгоритм по одному разу для каждого пользователя, спросив его, связан ли какой-либо другой пользователь с этим пользователем, или можно запустить его только один раз и спросить «показать мне наборы пользователей, которые связаны»?
Мэтт
Следуя моему подходу, вы можете протестировать только «шаблон», запущенный парой пользователь + традиция. Какие пользователи и действия должны быть выбраны, зависит от ваших знаний о возможной корреляции.
cesko80
Три предложения. 1. Сузьте свой запрос. Не быть неуважительным, но не существует единой, поразительно всеобъемлющей статистической процедуры, которая могла бы рассказать вам обо всех значимых ассоциациях из множества, многих возможных, присущих вашим данным. 2. Ознакомьтесь с анализом временных рядов. 3. Читайте о методах отличия причинно-следственной связи от простой взаимосвязи. К сожалению, я не могу предложить быстрое решение проблемы!
rolando2
1

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

Затем вы можете исследовать, влияет ли предыдущее действие на следующее. Если нет, то ваши пользователи не имеют статуса.

Другое возможное упрощение - игнорировать идентификаторы пользователей и спрашивать, одинакова ли частота каждого действия во времени или варьируется; и если изменяется, является ли это циклическим или показывает тенденцию.

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

Хью Моррис
источник
1

Это интересный вопрос. Наилучший подход - изучить весь набор данных и создать таблицу частот. Например: Пользователь A выполняет Действие P, а Y Пользователь B выполняет Действие Q и Z, Пользователь C выполняет Действие R и X Итак, аналогичным образом, есть больше пользователей, выполняющих больше действий. Таким образом, существует несколько подходов для работы с этим набором данных. 1) Алгоритм кластеризации, чтобы сгруппировать подобные элементы в разные сегменты. 2) Анализ корзины рынка, чтобы идентифицировать пользователей в сравнении с отображением действий и частотой.

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

Вишва Дхарма
источник