Вопрос
Предположим, у меня есть определенное количество событий разных типов.У меня нет пользовательских данных в моих данных, только события.Каждый тип события имеет информацию о самом событии и некоторые uids , которые являются идентификаторами пользователя, которые вызвали или являются целью такого события.
Задача состоит в том, чтобы создать пользователей из группы разгруппированных событий.Чтобы сказать это иначе - мы должны сгруппировать события по uids.
Для простоты мы можем описать пользователя как набор uids, который идентифицирует группу событий.
Чтобы иметь возможность выполнять такое пересечение- для соответствия нам потребуется, чтобы у некоторых наших событий было более одного идентификатора пользователя .Это необходимо для возможности группировки событий разных типов.
Какие алгоритмы лучше всего известны для выполнения этой задачи?Я думаю, что это довольно распространенная задача для больших проектов, которые связаны с различными источниками информации о своих пользователях и хотят отслеживать действия пользователя в такой большой распределенной системе, которая не имеет общей базы данных.
Пример
events = [
{uid1:1,uid2:'uid2'},
{uid1:1},
{uid3:'uid3'}
]
После применения алгоритма к этим данным, я ожидаю, что он выдаст следующий вывод
users = {
{1, 'uid2', None}: [{uid1:1,uid2:'uid2'}, {uid1:1}],
{None, None, 'uid3'}: [{uid3:'uid3'}]
}
Мои мысли Пространство событий может быть представлено как дискретное линейное пространство, и алгоритм будет представлять факторизацию этого пространства на подмножествах.Все элементы одного подмножества должны иметь ненулевую проекцию на вектор пользователя.
Это звучит как излишнее решение этой проблемы, но я действительно не нашел примеров того, как люди решают такие задачи.