Скажи мне кто твой друг, и я скажу кто ты
Вы наткнулись на необычный проектик, который изучает дружеские коллективы, группы конкретного пользователя или группы профилей с помощью социального графа связей. Умею строить Портрет Пользователя, Портрет Группы, Карту Нетворкинга для соцсети ВК.
Зачем всё это? Изначально по приколу, но надеюсь, вы тут с благими намерениями.
Оглавление
1. Как читать свой граф или друга: построение графа
2. Портрет Пользователя
3. Портрет Группы
4. Карта Нетворкинга
5. Послесловие
1. Как читать свой граф или друга: построение графа
Как изучить граф:
Если вы построили граф на свою страницу, то достаточно посмотреть на имена в каждом кластере, тогда будет понятно, где друзья с вуза/школы/работы/секции/родной деревни и тд. Вот пример "моего" графа.
Но если решили узнать другого пользователя поближе, то имена не помогут, а наш "ультра-мега Портрет Пользователя 3000" раскроет все карты. Подробнее в главе Портрет Пользователя, где анализируется информация со страниц и подписки всех друзей и подписчиков.
Немного теории, понятной всем:
Модулярность - это мера крутизны того, как мы разбиваем граф на группы. Чем сильнее кучкуются вершины внутри группы и меньше связей между группами, тем круче модулярность (ближе к 1)
Разбиваем на кластеры (группы друзей/подписчиков): чтобы найти группы друзей/подписчиков, используем алгоритм Лувена и очень-очень-очень много оптимизаций (работа с большими графами – это не работа с малыми графами; банально, но факт). Общий алгоритм Лувена оценивает разбиение по модулярности и старается сделать её максимальной. По-простому: ищет такое разделение, где связей внутри групп много, а между группами мало
Размещаем точки-ноды:
Изначально граф - это каша точек-пикч. Тут работает алгоритм, который считает вершины графа как частицы, которые тянутся и отталкиваются друг от друга (как магнит и металлические скрепки). Если вершины связаны, они тянутся друг к другу, а если нет - отталкиваются. Происходит постоянное обновление положения вершин, пока не найдется расположение, где все ноды будут в равновесии
2. Портрет Пользователя
Если для графа достаточно получить список друзей и подписчиков, то в Портрете Пользователя достаются страницы целиком вместе с подписками и другими открытыми данными, это занимает в среднем в 6 раз больше времени. Так вот, помимо графа, в Портрете Пользователя есть:
1) Граф
Ещё пару слов об оном. Граф разбит на группы близости друзей и подписчиков пользователя. У каждой группы есть свой цвет. Связи внутри группы имеют цвет этой группы, связи с другими группами – серые. Круги – друзья, квадраты – подписчики пользователя, самого пользователя на графе нет. Сплошная линия – дружеская связь. Пунктирная со стрелкой показывает "кто на кого подписан".
Функциональность. Все точки-пикчи можно перемещать. При нажатии (наведении) на ноду (точка-пикча) - подробная информация и подсветка всех его связей. При поиске - подсветка связей. Можно подсветить несколько человек, выбирая их на графе и в поиске. Поиск работает по любой части имени или ID. Рядом с легендой есть кнопка «Физика включена» - при перемещении ноды, связанной с другими, оные будут или не будут перемещаться вслед за перетаскиваемой нодой. Позволяет сделать кастомное расположение нод на свой вкус.
Подробная информация ноды включает в себя: имя (+ ссылка на профиль), номер группы на графе, статус страницы (публичная, приватная, забаненная, заблокированная, удалённая), ID, с кем дружит/на кого подписан, возраст, число друзей и подписчиков, город, родной город, образование, популярность в группе графа (работает примерно так: чем больше связей, тем больше популярность), связи (число связей с другими нодами графа), работу (+ ссылка на место работы), связи с другими группами (номера групп: процент связей с этими группами; выделенная группа – группа с которой больше всего связей, выделенная группа не всегда является группой, в которой находится оный профиль), активность (+ ссылка на активность).
2) Таблица коллективов
Мега таблица всего обо всём. Столбцы:
Коллектив – номер и цвет группы, которая на графе (одиночки – сборная солянка всех профилей, которые являются друзьями/подписчиками исследуемого профиля и у которых нет дружеской/подписочной связи с другими друзьями/подписчиками исследуемого).
Людей – количество профилей в группе
Из них подписчики – количество подписчиков исследуемого в оной группе (процент подписчиков от числа профилей (столбец Людей))
Общие друзья – см. главу про Портрет Группы
Связей: Внутри/Вне группы – внутри (суммарное число связей нод в этой группе между собой)/ вне группы (суммарное число связей нод этой группы с другими группами)
Возраст: Средний/Медиана/std – среднее/медиана/стандартное отклонение возраста группы
Пол: Ж/М – процент женских/мужских профилей в группе (преобладающий (≥80%* скорее всего) процент профилей выделяется жирным)
Друзей: Среднее/Медиана/std – среднее/медиана/стандартное отклонение друзей профилей группы
Подписчиков: Среднее/Медиана/std – среднее/медиана/стандартное отклонение подписчиков профилей группы
Страниц: Open/Privat/Ban – открытые/приватные/забаненные(удаленные, заблокированные) профили группы
Общие города – общие города профилей группы (отсортированы по убыванию, «преобладающие» (≥5*) города выделены жирным)
Общие ВУЗы – общие вузы профилей группы (отсортированы по убыванию, «преобладающие» (≥3*) вузы выделены жирным)
Общие школы – общие школы профилей группы (отсортированы по убыванию, «преобладающие» (≥2*) школы выделены жирным)
Общее место работы – общие места работы профилей группы (отсортированы по убыванию, «преобладающие» (≥2*) места работы выделены жирным, + ссылки на места работы)
Колич. подписок: Среднее/Медиана/std – среднее/медиана/стандартное отклонение количества подписок профилей оной группы
Совпадение фамилий – совпадающие фамилии (однофамильцы и родственники) профилей группы (отсортированы по убыванию, «преобладающие» (≥3*) фамилии выделены жирным)