Обычно пользователи сети Интернет имеют аккаунты сразу в нескольких популярных социальных сетях. При этом каждый из них, как правило, контактирует с одними и теми же людьми в
Обычно пользователи сети Интернет имеют аккаунты сразу в нескольких популярных социальных сетях. При этом каждый из них, как правило, контактирует с одними и теми же людьми в различных социальных сетях. Основываясь на гипотезе, что человек состоит в одних и тех же сообществах во всех социальных сетях, которыми пользуется, можно установить связь между профилями разных социальных сетей, находящихся в одном сообществе и с определённой вероятностью предположить, что они принадлежат одному человеку. Данная задача является нетривиальной и имеет немалую практическую ценность.
различных социальных сетях. Основываясь на гипотезе, что человек состоит в одних и тех же сообществах во всех социальныхсетях, которыми пользуется, можно установить связь между
профилями разных социальных сетей, находящихся в одном сообществе и с определённой вероятностью предположить, что они принадлежат одному человеку. Данная задача является
Для решения поставленной задачи можно воспользоваться алгоритмом предварительной обработки данных.
нетривиальной и имеет немалую практическую ценность.
## 1. Предобработка
Для решения поставленной задачи можно воспользоваться
алгоритмом предварительной обработки данных:
Генерация графа на основе имеющихся данных. Вершины представляют собой сущность “человек” и хранят идентификаторы профилей, принадлежащих конкретному пользователю. Связь между вершинами устанавливается по следующему принципу: две вершины смежны, если связны профили соответствующих социальных сетей. Определим вес ребра между вершинами как
1. Генерация графа на основе имеющихся данных. Вершины представляют собой сущность “человек” и хранят идентификаторы профилей, принадлежащих конкретному пользователю. Связь между вершинами устанавливается по следующему принципу: две вершины смежны, если связны профили соответствующих социальных сетей. Определим вес ребра между вершинами как
```math
```math
w (A, B) = |\{i: i \in [0, n-1] \cup \exist A_i, B_i \cup rel(A_i, B_i)\}|,
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).
В качестве отрицательных примеров могут использоваться как случайные пары профилей, так и пары, найденные при помощи полнотекстового поиска по разным параметрам (name, username, email, skype).
### 2. Постобработка
### 3. Постобработка
В сгенерированной графе для каждой пары долей выполняется следующий алгоритм
В сгенерированной графе для каждой пары долей выполняется следующий алгоритм.
1. Рёбра сортируются в порядке убывания весов;
1. Рёбра сортируются в порядке убывания весов;
2. Удаляются рёбра, вес которых меньше порогового значения или одна из инцидентных вершин уже связана с какой-либо вершиной противоположной доли.
2. Удаляются рёбра, вес которых меньше порогового значения или одна из инцидентных вершин уже связана с какой-либо вершиной противоположной доли.
В результате этих преобразований получается граф, в котором каждая компонента связности представляет собой группу аккаунтов из разных социальных сетей, которые принадлежат одному человеку.
В результате этих преобразований получается граф, в котором каждая компонента связности представляет собой группу аккаунтов из разных социальных сетей, которые принадлежат одному человеку.