VK плачет, Social Graph смеется, Telegram наблюдает

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Скажи мне кто твой друг, и я скажу кто ты

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

Портрет Группы: общие друзья/подписчики Влада и Кости
Портрет Группы: общие друзья/подписчики Влада и Кости
Один из графов по комментариям и лайкам на 35к профилей (общение под постами за некую неделю)
Один из графов по комментариям и лайкам на 35к профилей (общение под постами за некую неделю)

Зачем всё это? Изначально по приколу, но надеюсь, вы тут с благими намерениями.


Оглавление

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*) фамилии выделены жирным)

Источник: https://habr.com/ru/articles/784912/


Интересные статьи

Интересные статьи

Всем привет, в этой статье я хотел бы рассказать о создании бота для мониторинга систем (сайтов) и внутренних сервисов – их доступность/недоступность.Кому данный бот будет полезен 100%?Абсолютно всем!...
Эту статью также можно было бы назвать «Чего по науке нельзя делать с GraphQL».Читая различные посты в блогах и руководства, мы узнаем, что существует некий правильный способ работы с GraphQL. Но вдру...
Прошлая статья оказалась провальной, именно поэтому хочу улучшить ситуацию путем написания продолжения. Ну буду отвлекаться на самые простые вещи, приступим! Давайте продолжим? Всего голосов 3: ↑0 и ...
Мессенджер Telegram получил признание многих пользователей. Он стремительно набирает популярность, благодаря гибкости и удобству в использовании, а также хорошей защите личной информации юзеров. В э...
Все привыкли считать телеграм надежной и безопасной средой для передачи сообщений любого сорта. Однако, под капотом у него крутится совершенно обычная комбинация а- и симметричного шифрований, а ...