# 7. МОДЕЛИРОВАНИЕ СОЦИАЛЬНЫХ СЕТЕЙ

[назад](README.md)

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

Функция распределения степеней вершин социальной сети, как правило, выглядит как показано на рис. 23. 

![Рис. 23. Пример функции распределения степеней вершин социальной сети](images/2021-09-05_14-54-46.png)  
Рис. 23. Пример функции распределения степеней вершин социальной сети

На рисунке $`f_k`$ – вероятность случайно выбранной вершины, имеющий степень $`k`$. 

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

Для аналитического описания степеней распределения социальных сетей больше всего подходят степенные распределения или распределения с «тяжелым хвостом». 

Общий вид степенного распределения 

```math
f(x) = C x^{-\alpha}
```

где $`С`$ – нормировочная константа.

Данное обстоятельство играет важную роль в моделировании социальных сетей. 

Стоит отметить, что довольно много явлений (как и социальные сети) обладают степенной функцией распределения, например, частота встречаемости слов в тексте или число цитирований научных публикаций. 

Важными отличительными особенностями реальных социальных сетей являются: 
- степенной закон распределения степеней вершин (очень много узлов с малым количеством соседей и в то же время существуют узлы с очень большим количеством соседей); 
- маленький диаметр сетей (небольшое среднее расстояние между вершинами); 
- высокий коэффициент кластеризации; 
- наличие тесно связанного ядра (достаточно удалить из сети 10% вершин самой высокой степени, чтобы она распалась на мелкие компоненты; средний кратчайший путь 3,5 шага делает внутри 10% наиболее активных вершин). 

Как правило, при моделировании социальных сетей необходимо учитывать все эти особенности.

Основной, ставшей в какой-то степени классической, группой моделей социальных сетей являются модели случайных графов, а именно: 
- модель Эрдоша–Реньи (Erdős–Rényi model); 
- модель Барабаши–Альберта (Barabási–Albert model); 
- модель Ваттса–Строгатца (Watts–Strogatz model). 

Рассмотрим данные модели.

## Модель Эрдоша–Реньи (Erdős–Rényi model)

Модель Эрдоша-Реньи - это одна из моделей генерации случайных графов. Пусть $`G = (V, E)`$ - граф с множеством вершин $`V`$ и рёбер $`E`$. Существуют два тесно связанных варианта модели: $`G(n,m)`$ и $`G(n,p)`$. У $`G(n,m)`$ модели два параметра: $`n`$ - число вершин (узлов), $`m`$ - число рёбер. При этом:
- $`n(n-1)/2`$ - количество пар вершин, которые могут быть соединены ребром (количество паросочетаний);
- $`C_{n(n-1)/2}^m`$ - количество способов выбора $`m`$ рёбер из $`n(n-1)/2`$ числа рёбер.

О случайном графе можно думать как об одном графе, выбранном случайным образом из этого множества $`C_{n(n-1)/2}^m`$. 

У модели $`G(n,p)`$ имеются 2 параметра – $`n`$ (число узлов) и $`p`$ – вероятность того, что любая случайно выбранная пара узлов соединена ребром. Если $`p=0`$, то нет рёбер вообще в графе, $`p=1`$, то получаем полный граф, все узлы соединены рёбрами. Тогда число рёбер – это случайное число, которое имеет математическое
ожидание:

```math
\lang m \rang = p \frac{n(n-1)}{2}.
```

При этом средняя степень вершины 

```math
\lang k \rang = \frac{1}{n} \sum_i k_i = \frac{2\lang m \rang}{n} = p (n-1) \approx pn.
```

Для случайных графов легко посчитать функцию распределения степени узлов. Она описывается формулой Бернулли:

```math
P(k_i=k) = P(k) = C_{n-1}^k p^k (1 - p)^{n-k-1}.
```

В случае $`n \rightarrow \infin`$ и фиксированном среднем значении:

```math
\lang k \rang = pn = \lambda.
```

Это распределение дискретно, т.е. $`k`$ имеет целочисленное значение. 

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

Интересное свойство модели – наличие фазового перехода, при котором плавное изменение параметра приводит к скачкообразным изменениям свойств системы.

В модели $`G(n,p)`$ при $`p=0`$, как было сказано выше, связи отсутствуют, а при $`p=1`$ имеет место полный граф. Начнем понемногу увеличивать $`р`$ от значения $`𝑝 = 0`$. В промежутке от $`0`$ до $`1`$ происходит структурное изменение – появляется возможность попасть из одного узла в любой другой за какое-то количество шагов. Другими словами, происходит фазовый переход, который заключается в том, что появляется связность. В какой-то момент времени возникает большая связная компонента. Момент скачка из несвязанного состояния к появлению большой связной компоненты и есть фазовый переход. 

Размер большой связной компоненты можно определить, решая уравнение: 

```math
1 - s = e^{-\lambda s},
```

где $`s`$ - это доля узлов, которые принадлежат большой связной компоненте.

Если $`0 < \lambda < 1`$, то большая связная компонента отсутствует, если $`\lambda > 1`$ то гигантская связная компонента резко возрастает. Выбирая критическое значение $`р`$, мы можем это контролировать. 

У модели $`G(n,p)`$ есть еще ряд свойств. Если $`р`$ ведет себя как степенная функция от $`n`$ в степени, то это отражается на структуре графа. Меняя $`p`$ и $`n`$, можно гарантировать не только то, что возникает гигантская связная компонента, но и то, что возникают определенные структуры (циклы, полные подграфы различных порядков и т.д.). Другими словами, можно определить те моменты, когда в графе появляется определённого типа поведение.  Преимущество модели заключается в том, что эти моменты математически хорошо просчитывается.

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

Модель Эрдоша–Реньи – это модель, впервые предложенная для анализа сетей в 1959 году. Она предусматривает всего два параметра – заданное (зафиксированное изначально) количество узлов и вероятность наличия связи между парами этих узлов. У этой модели есть интересные свойства, такие как, например, наличие большой связанной компоненты и эффект малого диаметра. Однако её недостатками являются нестепенное распределение степеней узлов и маленький кластерный коэффициент.

## Модель Барабаши–Альберта (Barabási–Albert model)

Модель Барабаши–Альберта – модель с предпочтительным присоединением (preferential attachment) генерирующая безмасштабные сети (сети, которые развиваются со временем и имеющие степенное распределение вершин). Примерами безмасштабных сетей могут быть: сети цитирования, сети взаимодействия (коллаборации) и, конечно же, социальные сети. Модель Барабаши–Альберта прежде всего подходит для моделирования сетей цитирования, однако применима и для моделирования остальных вышеназванных примеров. 

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

Модель Барабаши–Альберта характеризуется следующими параметрами: 
- в начальный момент времени $`t= 0`$ есть $`m`$ несвязанных вершин; 
- на каждом шаге $`(t = 1, 2, 3, \ldots )`$ будем добавлять новую вершину с $`m`$ ребрами; 
- количество связей, с которым приходит новая вершина в граф, фиксировано (равно $`m`$), однако к какому именно узлу он присоединяется – выбирается случайным образом, т.е. рост идет случайно. 

При этом степень $`i`$-й вершины равна 

```math
k_i (t) = m(1 + log \frac{t}{i}),
```

где $`i`$ – индекс вершины соответствующий тому времени, когда узел присоединился.

На рис. 24 приводится поведение модели как функцию времени для $`m = 20`$, $`i = 10, 20, 40`$. Вершины, которые присоединились раньше, имеют большую степень с течением времени, чем позже присоединившиеся вершины. Кривые на рисунке не пересекаются, что и означает преимущество присоединившегося ранее. Когда вершина только приходит в систему, у неё конкуренция за новые связи очень небольшая, т.е. любая новая приходящая вершина в любом случае с ней свяжется; когда же сеть (граф) становится большой, то при появлении новой вершины она может установить с другими вершинами только ограниченное количество связей. Другими словами, шанс случайной вершины получить связь становится все меньше и меньше.

![Рис. 24. Поведение модели Барабаши–Альберта как функция времени](images/2021-09-05_15-46-01.png)  
Рис. 24. Поведение модели Барабаши–Альберта как функция времени

Рис. 25 показывает поведение этой же модели как функцию от $`i`$ для $`𝑚 = 20, 𝑡 = 50, 100, 200`$. В данном случае посмотрим на эти вершины (на поведение/степень вершин) как функцию от $`i`$ (от номера вершины). Например, когда нужно найти все те вершины, которые в момент времени $`t`$ имеют степень меньше какой-то данной степени, т.е. в конечном счете посчитать для такого графа функцию распределения степеней узлов. Можно показать, что функция распределения степеней узлов в этом случае равна 

```math
P(k) = \frac{1}{m} e^{-\frac{m-k}{m}}.
```

![Рис. 25. Поведение модели Барабаши–Альберта как функция номер вершины](images/2021-09-05_15-48-06.png)  
Рис. 25. Поведение модели Барабаши–Альберта как функция номер вершины

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

У более ранних вершин и так было преимущество перед новыми вершинами – они с течением времени имели степень большую, чем новые. Добавление предпочтительного присоединения только усилило этот эффект. Наглядно это представлено на рис. 26. 

С введением предпочтительного присоединения функция распределения степеней узлов становится равной

```math
P(k) = \frac{2m^2}{k^3}.
```

![Рис. 26. Работа модели Барабаши–Альберта с предпочтительным присоединением](images/2021-09-05_15-50-31.png)  
Рис. 26. Работа модели Барабаши–Альберта с предпочтительным присоединением

В модели Барабаши–Альберта присутствует больше узлов с малой степенью, чем в модели случайного графа. Эта модель демонстрирует гораздо большую вероятность иметь узлы с высокой степенью, чем модели просто случайно растущего графа. Однако определенным недостатком модели Барабаши-Альберта является маленький коэффициент кластеризации. 

## Модель Ваттса–Строгатца (Watts–Strogatz model)

Модель Ваттса–Строгатца или модель «малого мира» – модель с маленьким диаметром и большим коэффициентом кластеризации. Модель достаточно простая, но аналитически просчитывается только в очень простом случае. 

Рассмотрим пример, изображенный на рис. 27. 

![Рис. 27 – построение модели «малого мира»: а – исходный граф; б, в – добавление длинных связей ](images/2021-09-05_15-53-26.png)  
Рис. 27 – построение модели «малого мира»: а – исходный граф; б, в – добавление длинных связей 

В графе (в форме круга) изображенном на рис. 27 (в случае а) связи в форме треугольников создают высокий кластерный коэффициент. В данном случае у произвольного узла на графе $`4`$ соседа. Максимальное количество связей между ними равно $`4×3/2=6`$, а реальное число связей между соседями – $`3`$, т.е. кластерный коэффициент для произвольного узла равен $`3/6=1/2`$. Так как граф абсолютно симметричен, то полный кластерный коэффициент для него также равен $`1/2`$. Диаметр этого графа при этом высокий. Поэтому необходимо его уменьшить. Для этого достаточно в этот граф добавить некоторые длинные связи – например, как показано на рис. 27 (в случаях б и в). При наличии нескольких таких связей резко уменьшается диаметр графа. 

Однако, при увеличении таких длинных связей, изменяется средняя степень узла в графе (добавляются новые связи). Можно попробовать сохранить эту среднюю степень узла фиксированной. Для этого, вместо того, чтобы просто добавлять какие-то связи, можно попробовать взять одну связь, локально оторвать её и перенаправить в другое место. Тогда полное количество связей не меняется, поэтому средняя степень узла сохраняется, но получатся связи на большом расстоянии. 

Рассмотрим этапы построения модели Ваттса–Строгатса. 
- имеется граф, представляющий собой регулярную решетку с некоторым количеством ближайших соседей; 
- введем параметр $`p`$, при котором модель становится однопараметрической; 
- когда $`p = 0`$ имеет место регулярная решетка (идеальное кольцо), а когда $`p = 1`$ – получается случайный граф. 

Параметр $`p`$ отображает долю добавленных рёбер. Наглядный пример приводится на рис. 28. 

Если пересоединить все рёбра, то получится случайный граф. 

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

![Рис. 28. Эволюция модели с добавлением ребер](images/2021-09-05_15-58-15.png)  
Рис. 28. Эволюция модели с добавлением ребер

В модели Ваттса–Строгатца виден переход от регулярного мира к случайному состоянию через состояние малого мира. Иначе говоря, одним параметром (параметром добавления случайных  связей) можно регулярную решетку превратить в малый мир. Авторы модели провели численные расчёты характеристик: 
- распределение степеней вершин Пуассоновское; 
- средняя длина пути $`\lang L(p) \rang`$: 
  - $`p \rightarrow \lang L(0) \rang = 2 n/k`$ – круговая решетка; 
  - $`p \rightarrow \lang L(1) \rang = log(n)/log(k)`$ – случайный граф; 
- кластерный коэффициент $`C(p)`$: 
  - $`p \rightarrow 0, C(0) = 3/4 = const`$ – круговая решетка; 
  - $`p \rightarrow 1, C(1) = k/n`$ – случайный граф. 

В модели Ваттса–Строгатца не заложен никакой контроль над функцией распределения степеней узлов. Эта функция изменяется от пуассоновской для случайного графа к отдельной точке (значению степени узла) для регулярной решетки. Ни тот, ни другой крайний случай не соответствует эмпирическим распределениям степенного закона, наблюдаемым на практике, поэтому не стоит ожидать, что, смешав их, можно получить степенной закон. Поэтому функцию распределения по этой модели не вычисляют, а основное внимание уделяют вычислению средней длины пути и кластерного коэффициента.

Интересно, что существует некоторый интервал значений $`p`$, в котором уже кластерный коэффициент не нулевой (недостаточно упал), а в то же время средняя длина пути уже становится достаточно маленькой. То есть можно с помощью одного параметра перейти из полного порядка к случайности и пройти через некоторую зону, где появляются эффекты малого мира.

Запишем основные особенности рассмотренных моделей (табл. 1). 

**Таблица 1**

| Модель | Особенности |
| ----  | ----  |
| Эрдоша–Реньи | Функция распределения является распределением Бернулли. Коэффициент  кластеризации низкий.
| Барабаши–Альберта | Степенной закон функции распределения. Коэффициент кластеризации низкий. |
| Ваттса–Строгатца | Функция распределения близка к распределению Пуассона. Коэффициент  кластеризации может быть большим. |

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

Авторы моделей в соцсетях:
- https://twitter.com/stevenstrogatz
- https://twitter.com/barabasi


[назад](README.md)
