diff --git a/8.connection_of_user_profiles_in_different_social_networks.md b/8.connection_of_user_profiles_in_different_social_networks.md index 1091a48..dd3d1d5 100644 --- a/8.connection_of_user_profiles_in_different_social_networks.md +++ b/8.connection_of_user_profiles_in_different_social_networks.md @@ -2,30 +2,27 @@ [назад](README.md) -Обычно пользователи сети Интернет имеют аккаунты сразу в нескольких популярных социальных сетях. При этом каждый из них, как правило, контактирует с одними и теми же людьми в -различных социальных сетях. Основываясь на гипотезе, что человек состоит в одних и тех же сообществах во всех социальныхсетях, которыми пользуется, можно установить связь между -профилями разных социальных сетей, находящихся в одном сообществе и с определённой вероятностью предположить, что они принадлежат одному человеку. Данная задача является -нетривиальной и имеет немалую практическую ценность. - -Для решения поставленной задачи можно воспользоваться -алгоритмом предварительной обработки данных: -1. Генерация графа на основе имеющихся данных. Вершины представляют собой сущность “человек” и хранят идентификаторы профилей, принадлежащих конкретному пользователю. Связь между вершинами устанавливается по следующему принципу: две вершины смежны, если связны профили соответствующих социальных сетей. Определим вес ребра между вершинами как +Обычно пользователи сети Интернет имеют аккаунты сразу в нескольких популярных социальных сетях. При этом каждый из них, как правило, контактирует с одними и теми же людьми в различных социальных сетях. Основываясь на гипотезе, что человек состоит в одних и тех же сообществах во всех социальных сетях, которыми пользуется, можно установить связь между профилями разных социальных сетей, находящихся в одном сообществе и с определённой вероятностью предположить, что они принадлежат одному человеку. Данная задача является нетривиальной и имеет немалую практическую ценность. + +Для решения поставленной задачи можно воспользоваться алгоритмом предварительной обработки данных. + +## 1. Предобработка + +Генерация графа на основе имеющихся данных. Вершины представляют собой сущность “человек” и хранят идентификаторы профилей, принадлежащих конкретному пользователю. Связь между вершинами устанавливается по следующему принципу: две вершины смежны, если связны профили соответствующих социальных сетей. Определим вес ребра между вершинами как ```math w (A, B) = |\{i: i \in [0, n-1] \cup \exist A_i, B_i \cup rel(A_i, B_i)\}|, ``` -где $`rel(A, B)`$ - функция, которая истина тогда и только тогда, когда профили $`A`$ и $`B`$ взаимосвязаны (установлено отношение дружбы или проявление активности). +где $`rel(A, B)`$ - функция, которая истинна тогда и только тогда, когда профили $`A`$ и $`B`$ взаимосвязаны (установлено отношение дружбы или проявление активности). -2. К полученному графу применяется алгоритм машинного обучения Label Propagation, реализованный внутри программного решения GraphX API, который решает задачу кластеризации и -находит сообщества в графе. +К полученному графу применяется алгоритм машинного обучения Label Propagation, реализованный внутри программного решения GraphX API, который решает задачу кластеризации и находит сообщества в графе. -3. Для каждого сообщества генерируется RDD (resilient distributed dataset, отказоустойчивый распределенный набор данных) с набором профилей ВКонтакте, Facebook, Instagram и Twitter, которые связаны с одним или несколькими членами исходного сообщества +Для каждого сообщества генерируется RDD (resilient distributed dataset, отказоустойчивый распределенный набор данных) с набором профилей ВКонтакте, Facebook, Instagram и Twitter, которые связаны с одним или несколькими членами исходного сообщества -Таким образом, формируется набор данных (dataset), на основе которого мы можем строить предположения о принадлежности группы аккаунтов разных социальных сетей (без явного указания -взаимосвязей) одному человеку. +Таким образом, формируется набор данных (dataset), на основе которого мы можем строить предположения о принадлежности группы аккаунтов разных социальных сетей (без явного указания взаимосвязей) одному человеку. Далее к каждому набору данных из датасета применяется следующая процедура. -### 1. Построение полного многодольного графа +### 2. Построение полного многодольного графа Построение полного многодольного графа, в котором хранится информация о профилях социальных сетей и потенциал, характеризующий вероятность их принадлежности одному человеку. @@ -69,11 +66,12 @@ a \leftrightarrow b = \frac{\sum_{i=1}^{len(a)} d[i, fit(i)]}{\min(len(a), len(b В качестве отрицательных примеров могут использоваться как случайные пары профилей, так и пары, найденные при помощи полнотекстового поиска по разным параметрам (name, username, email, skype). -### 2. Постобработка +### 3. Постобработка -В сгенерированной графе для каждой пары долей выполняется следующий алгоритм +В сгенерированной графе для каждой пары долей выполняется следующий алгоритм. 1. Рёбра сортируются в порядке убывания весов; + 2. Удаляются рёбра, вес которых меньше порогового значения или одна из инцидентных вершин уже связана с какой-либо вершиной противоположной доли. В результате этих преобразований получается граф, в котором каждая компонента связности представляет собой группу аккаунтов из разных социальных сетей, которые принадлежат одному человеку.