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



Напомню, что страницы были скачаны в январе 2016-го года, поэтому всё что произошло после (регистрация новых пользователей, удаление старых пользователей, изменения кармы) не учтено. Убрав из списка скачанных пользователей всех read-only и деактивированных, получаем 79870. Насколько я знаю, это число примерно соответствует фактическому числу хабрапользователей (плюс-минус тысяча). Далее, чтобы получить граф без дырок пришлось добавить 955 read-only пользователей и 382 деактивированных (это те пользователи, которые кого-либо приглашали или были приглашены, но были выпилены с хабра или переведены в RO по тем или иным причинам). В итоге получаем граф на 81207 вершинах.

Тут стоит отметить, что получить список пользователей хабра непросто. Большая часть была получена пару лет назад, когда ещё были доступны списки подписчиков хабов. Но сейчас таких списков нет, поэтому имена пользователей за 2015 и 2016 год были извлечены из статей, комментариев, страниц уже известных пользователей, списков подписчиков, списков пользователей из заданных городов, стран, а также я нарезал часто встречаемые префиксы имён пользователей (вида Alex*, admin*, Captain* и т. п.) и сделал несколько тысяч запросов на странице поиска хабра. Ещё я добавил пользователей активных на гиктаймсе и мегамозге, поэтому, если вас нет в моём списке, вы хорошо шифруетесь.

Итак, у нас есть направленый граф с 81207 вершинами и 20195 дугами. Как видим только около 20 тыс. пользователей были зарегистрированы по инвайтам от других пользователей, остальные либо зарегистрировались до инвайтов (более 40 тыс.) или были приглашены НЛО.

Назовём хабракланом компоненту слабой связности этого ориентированного графа. Стоит заметить, что эти компоненты, вообще говоря, не являются деревьями, так как один человек может несколько раз получать инвайты. Поэтому у нас есть циклы: например, @?tangro пригласил @?Milla, а @?Milla пригласила @?tangro; петли: например, @?aavezel пригласил сам себя; вершины, в которую входит несколько дуг: пользователя @?shara приглашали 6 раз (@?Deeman, @?myagi, @?homm, @?Azya, @?veveve, @?shifttstas). Хотя всё это скорее исключения, в целом граф похож на лес.

В нашем графе имеется 61021 хабраклан. Распределение размеров следующее:
Размер компоненты Число компонент
больше 1001 1
101–1000 6
11–100 436
2–10 3110
1 57468
Давайте посмотрим на самые большие компоненты.
Размер «Корневые» вершины
1 1027 @?davekeinz (выслал 412 инвайта — больше, чем кто-либо ещё на хабре, также в этой компоненте @?Mithgol, который выслал 78 инвайтов)
2 584 @?mudhoney (выслал 242 инвайта) @?valemak
3 316 @?XaocCPS (выслал 65 ивайтов)
4 272 @?Alaunquirie (пригласил @?BarsMonster, который пригласил 73 пользователей) @?kip
5 189 @?Deeman @?homm @?DorBer @?myagi @?Azya @?maovrn @?fil9 @?yoihj
6 106 @?rossomachin
7 104 @?Garyan
8 97 @?kukutz (Яндекс.Компонента)
9 90 @?eosunknown
10 85 @?cigulev @?tyr
11 80 @?mdevils
12 80 @?nuzgul
13 77 @?ni404 @?tronix286 @?Rembish
14 77 @?Tigger
15 76 @?gaidar
16 70 @?Auren
17 69 @?saltommeister
18 68 @?Kalan
19 68 @?alisadenisova
20 67 @?horsev
Ниже приведены картинки этих 20 графов. Зелёные кружки — пользователи с положительной кармой, красные — с отрицательной, синие — с нулевой, серые — read-only или деактивированые пользователи. Площадь кружка пропорциональна модулю кармы (если это число больше 1). Все картинки являются ссылками на большую версию.

Посмотрим также на «высоты» хабракланов. Если выбросить пренебрежимое число графов с циклами, то dag_longest_path_length(G) даёт следующий результат.
Длина самой длинной цепи Число компонент
9 1
7 2
6 11
5 39
4 125
3 479
2 2888
1 57468
Самая длинная цепь такова: @?Garyan пригласил @?Andrey_Rogovsky, который пригласил @?DmitryGushin, который пригласил @?Uncle_Sam, который заинвайтил @?RootHell, который прислал инвайт @?alexey_qwe, который пригласил @?Doom2, который позвал на хабр @?Odnoklassniki_ru и который, наконец, пригласил @?DarkDefender.

Анализ совпадает с ожиданием, что в большинство хабракланов небольшие и с небольшой «высотой».

Теперь вспомним, что у пользователей есть карма. Насложное суммирование даёт, что всего на хабре как минимум 450323.4 единиц положительной кармы. (Кстати, у 10579 хабрапользователей карма больше или равна 10, поэтому теоретически эта статья может набрать 10578 плюсов.)

Посмотрим какие хабракланы обладают самым наибольшими запасами кармы.
Суммарная карма «Корневые» вершины
1 6184.4 @?mudhoney @?valemak
2 5333.7 @?davekeinz
3 4720.8 @?XaocCPS
4 3587.1 @?Alaunquirie @?kip (@?BarsMonster здесь)
5 2464.5 @?Deeman @?homm @?DorBer @?myagi @?Azya @?maovrn @?fil9 @?yoihj
6 2390.1 @?horsev (@?PapaBubaDiop и @?Milfgard здесь)
7 1984.9 @?cigulev @?tyr (@?Zelenyikot здесь)
8 1780.2 @?ni404 @?tronix286 @?Rembish
9 1606.1 @?eosunknown
10 1526.9 Здесь нет корня, и всё начинается с цикла @?tangro — @?Milla
11 1319.3 @?kit
12 1304.1 @?Ocelot
13 1299.5, @?Auren
14 1104.5 @?Kalan
15 1009.1 @?rossomachin
16 985.5 @?easy_john
17 932.3 @?Assuri
18 871.7 @?sourcerer
19 845.2 @?LukaSafonov
20 838.6 @?mdevils
Ниже приведены картинки графов, которые не встретились ранее.


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

Сначала я хотел построить т. н. chord diagram, но не нашёл простого способа сделать это на питоне, поэтому привожу левых верхний угол соответсвующей матрицы. (Если кто-то подскажет как всё-таки построить диаграмму буду признателен.) Чем синее клетка на картинке, тем больше логарифм числа инвайтов из страны 1 в страну 2.

Заметным является связность России, Украины, Беларусии, США и Германии.

Ещё одним кусочком информации, который не связан с инвайтами, но легко извлекается из страниц пользователей — это дата регистрации и дата последнего появления. Следующая таблица показывает сколько пользователей зарегистрировалось в данный год и сколько из них появлялось на хабре с 1 января 2015 года (иначе считаем, что пользователь перестал быть хабраактивным).
2006 3091 909
2007 19433 5511
2008 22031 6348
2009 6032 3094
2010 6826 3345
2011 9341 6355
2012 5841 4160
2013 4029 2819
2014 2684 2100
2015 1473 1473
Всего 80781 36114
То же самое в виде диаграммы.


Видим, что половина пользователей зарегистрировалась в 2007 и 2008 годах, а также много старожилов являются активными.

На этом всё. Таблица с исходными данными и скрипт для рисования графов доступны на гитхабе. Архив с сырыми данными доступен по запросу.

Комментарии (40)


  1. bobkov
    03.04.2016 23:10

    Под «кланами» ожидал увидеть анализ распределения кармы внутри самих кланов силами их же участников и влияние кланов на карму других пользователей Хабра. Но предполагаю, что эти данные недоступны в API. Данные в статье и без того интересные, правда для начала надо понять как они могут пригодиться)


    1. steff
      04.04.2016 00:18
      +4

      Вот увидеть бы анализ от самого Хабрахабра. У них-то данных побольше будет)
      Можно что-нибудь такое ожидать, deniskin, Shoohurt? :)


      1. Shoohurt
        04.04.2016 13:07
        +3

        Мы с огромным интересом читаем, изучаем и складываем все подобные аналитические публикации + делаем некоторые срезы сами. Другой вопрос, что извлечь пользу из всех этих данных сложнее, чем их собрать. Так что если и выложим что-то подобное, то только когда найдем этим данным достойное применение.


        1. munghauzen
          05.04.2016 13:46

          Был опыт комментирования одного околополитического проекта. Все кто высказывал сомнение в проекте, нахватали охапку минусов. Это первое. Второе, и оно подтверждает первое — журналисты в пабликах пишут, что написание статьи на Хабре нужно снабжать поддержкой местных пользователей. Так что, применение — борьба с манипуляцией кармой и рейтингом.


          1. varagian
            05.04.2016 19:20

            Интересно, а применим ли здесь опыт других площадок (e.g., reddit) против «бригадного голосования»? Или этим вопросом никто особо не занимался?


  1. 1win1
    03.04.2016 23:10
    +4

    Судя по участившимся, на мой взгляд, статьям о самом Хабре, развивающееся Хабрасообщество начинает формулировать «Я-концепцию» :)
    Было бы интересно узнать, каким Хабр видит своё «Я-идеальное».


    1. Tufed
      04.04.2016 12:09
      +1

      Коллективный разум начинает задаваться вопросом «кто я» и пытается найти на него ответ.


    1. Maccimo
      05.04.2016 09:21
      +2

      >> Судя по участившимся, на мой взгляд, статьям о самом Хабре, развивающееся Хабрасообщество начинает формулировать «Я-концепцию»

      Больше похоже на барахтанье человека, сброшенного в реку, но не умеющего плавать.

      >> Было бы интересно узнать, каким Хабр видит своё «Я-идеальное».

      Хабр определённо был ближе к идеалу в период до разделения на три ресурса и кармического ограбления.


  1. PapaBubaDiop
    03.04.2016 23:11
    +6

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


  1. Defff
    03.04.2016 23:11

    1. Интересен график статистической активности юзера на Хабре(число сообщений и комментариев) от числа минусов ему в карму и в коментарии, налицо явная зависимость и избыточное использование её хабре. Явно видная в активности новичков, стухающих после пары-тройки статей.

    2. Пожелание: Логично бы давать ограниченный месячный кредит минусов(независимый от кармы, ибо интересна общая активность, а не активность самых активных). При превышении кредита минусы вычитаются из собственной кармы проставляющего, к примеру одна единичка собственной кармы за два проставленных минуса, тогда бы отсутствовала огульная незадумчивая простановка оных

    3. Возможно на Хабрахабр нужен снова объединяющий топ-дайжест наиболее интересных статей: из Хабрахабр, Мегамозг, Geektimes,
      Поскольку и посещаемость упала и бегать по нескольким ресурсам менее удобно


    1. atomlib
      04.04.2016 11:24
      +1

      Возможно на Хабрахабр нужен снова объединяющий топ-дайжест наиболее интересных статей
      tmfeed.ru/#/posts/top/daily?


      1. Defff
        04.04.2016 17:02

        Хабрахабр, Мегамозг, Geektimes, — ссылки вверху, по ним намного легче перейти чем искать в закладках эту ссылку (хотя вставил её в закладки, спасибо)
        Имелось ввиду данный топ аналогично хотя бы в левом-правом сайдбаре, именно переход по перекресным ссылкам и носил бы объединяющую роль.
        2. Данный топ: tmfeed.ru/#/posts/top/daily — невзрачный, можно было б при наведении выдавать всплывающее окно типичного начала темки с картинками(до ката). Само название тем редко в полноте отражает содержание, а вот авторский текст до ката именно максимально желает привлечь под кат и раскрывает направление


        1. atomlib
          04.04.2016 17:07
          +1

          Хабрахабр, Мегамозг, Geektimes, — ссылки вверху, по ним намного легче перейти чем искать в закладках эту ссылку (хотя вставил её в закладки, спасибо)
          Ссылка на TM Feed тоже сверху, слева от ссылки «Хабрахабр».
          2. Данный топ: tmfeed.ru/#/posts/top/daily — невзрачный, можно было б при наведении выдавать всплывающее окно типичного начала темки с картинками(до ката).
          Ну, видимо, там такой формат. Что же, повод делать более ёмкие заголовки.


          1. Defff
            04.04.2016 17:26

            Видимо я еще не привык к разделению,
            Удобнее, как мне кажется, это псевдоразделение можно было бы сделать тремя горизонтальными слайдерами на единой странице: Хабрахабр, Мегамозг, Geektimes, в которых темы бы прокручивались горизонтально по наведению на правый левый край, значительно сократилось число переходов с ожиданием прогрузки-рендинга и прокруток мышью


  1. navion
    04.04.2016 00:05
    +1

    А нет статистики получения инвайтов по годам?
    Есть подозрение, что новые хабраюзеры перестали появляться вместе со спадом в рейтинге после отделения ГТ и банов. "Лучшие публикации" обрываются на рейтинге 162, но там всего 25 статей от 2015 года и ни одной от 2016.


    1. mkot
      04.04.2016 00:24
      +2

      На странице пользователя есть дата приглашения, но я её не извлекал. Но мне кажется что статистика будет примерно такой (из косвенных соображений):
      2008 — 0.5K
      2009 — 4.5K
      2010 — 6K
      2011 — 4K
      2012 — 2K
      2013 — 1.5K
      2014 — 1K
      2015 — 0.7K


  1. varagian
    04.04.2016 00:25

    А почему не выложить все данные на github? Например, список всех "физических" пользователей вполне себе полезный датасет.


    1. mkot
      04.04.2016 00:29

      А я выложил. По ссылке в статье есть файл karma.txt, в котором следующие поля: NAME; KARMA; COUNTRY; REGION; CITY; FIRST_DATE; LAST_DATE; INVITED_BY; INVITED. Если кто-то хочет распарсить ещё другой информации, как и сказал, могу выслать архив с html-ками.


      1. varagian
        04.04.2016 00:30

        А, ок! Почему-то подумал, что по какой-то причине часть собранных данных "только по запросу", что показалось странным.


        1. mkot
          04.04.2016 00:32

          Есть ещё список из 530K пользователей, в котором over-много read-only. Могу и его выложить.


  1. quantum
    04.04.2016 02:53

    Надо же, только на прошлой неделе ходил по длинной цепочке приглашенных и думал, что еще никто не выкладывал подобный анализ..


  1. gena_glot
    04.04.2016 08:31
    +1

    Список подписчиков я нашел по ссылке
    habrahabr.ru/users/mkot/subscription/followers
    так что он есть.
    теперь давай заимпрувим алгоритм — заходим на эту страницу и смотрим какой респонс присылает сервер.
    так рекурсивно обходим подписчиков.
    точки входа нарезать статьи и авторов по страницам по новее постарше.
    Далее фильтруем на свежак. То есть тех кто оставил комментарий в 2016 году. Хотя бы комментарий.
    Вот теперь переделываем кластеризацию хабрабабр-юзеров и ищем самые часто упоминаемые слова в каждом кластере.
    Лучше даже в ближнем круге по центроиду. Тупой map/reduce анализ терминов.
    Дальше еще круче. Допустим, некий кластер упоминает некую компания А или еще какую бяку — значит это мафия компании А
    например.
    В жж была такая проблема резкий всплеск рекламный статей от кластера юзеров. Эта та же проблема в обратную сторону — берем всплеск слова на хабре и ищем какой кластер зарядил и возможно находим промоутеров.


  1. LoadRunner
    04.04.2016 09:29
    +2

    С таким заголовком ожидал ещё одного графика: количество хабракотов в каждом клане.


  1. ComodoHacker
    04.04.2016 10:08
    +4

    Главный вывод, который я сделал из этих данных.
    Инвайты — инструмент, работающий на этапе первоначального роста аудитории ресурса. В дальнейшем его значение постепенно сходит к нулю.


    1. mkot
      04.04.2016 11:38
      +1

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


    1. Shoohurt
      04.04.2016 13:15

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


  1. tangro
    04.04.2016 10:55
    +4

    При всём этом какой-то внутренней войны кланов на Хабре или влияния некоторого хабровского клана на внешний мир как-то не видно. Т.е. люди из "клана", вероятно, общаются и следят на публикациями друг друга, но такого чтобы "сегодня в 15:00 клан davekeinz захватил хаб Python, выдавив оттуда давно засевший там клан kukutz. В данный момент по заявлениям пресс-службы последнего происходит перегруппировка сил с целью контр-атаки. Возможен временный альянс с кланом XaocCPS, за что ему обещано 10 инвайтов и поддержка пяти следующих статей голосованием и комментариями. Мы следим за развитием событий." — такого нету (а жаль!).


    1. dmitry_dvm
      04.04.2016 11:39
      +1

      Когда я получил инвайт на старом, ныне почившем аккаунте (года 3 назад), примерно так и было. Мне писали какие-то личности с предложением подкинуть кармы и дальнейшего «крышевания» в обмен на плюсование или сливание тех, на кого укажут. Подполье прям.


      1. merlin-vrn
        04.04.2016 19:11
        +1

        Прямое нарушение правил, между прочим..


        1. navion
          07.04.2016 14:04

          В самом начале даже была тема в Q&A, где делились кармой.


    1. Aksiom
      04.04.2016 12:34

      Новость о разделении Хабра:
      «Сегодня Администрация сделала предложение, от которого сообщество не смогло отказаться.»


    1. ComodoHacker
      04.04.2016 14:08
      +1

      такого нету (а жаль!) и слава богу!


  1. PavelMSTU
    04.04.2016 11:26

    Огонь!
    Попытка — не пытка: mkot, может выложите саму БД, чтобы мы тоже поисследовали? :))


    1. mkot
      04.04.2016 11:36

      См. комментарий выше: https://github.com/mkotov/habran, файл karma.txt.


  1. mdevils
    04.04.2016 15:43
    +1

    forgotten, мы с тобой теперь знамениты!


    1. forgotten
      09.04.2016 00:13
      +1

      А чо, раньше не были?


  1. Koshelenok
    04.04.2016 20:42

    хабр любит статьи о хабре)


  1. Alaunquirie
    05.04.2016 09:56
    +2

    Охохо, да я, благодаря BarsMonster, аж на четвёртое место вылез. :D Спасибо, хабрасынок, я горжусь тобой!


    1. BarsMonster
      05.04.2016 10:36
      +1


  1. valemak
    05.04.2016 11:59
    +1

    Прикольно, что я оказался в двух топах, хотя пригласил только alrusdi, который пригласил только 3-х человек, каждый из которых вообще никого не пригласил. То есть, от меня отпочковалось только 4 "потомка".

    Дело в том, что мой инвайт для alrusdi был для него повторным (его в своё время переводили в readonly и я позвал его на сайт снова). А впервые его пригласил mudhoney, который действительно стоит на вершине второй по величине сетевой пирамиды. Собственно, с ним я и соседствую на одной строчке в этих рейтингах.

    Благодаря тому, что и я и mudhoney пригласили на сайт одного и того же человека, вес mudhoney присвоился и мне.