Как бы ни гремели скандалы про PRISM, про персональные данные и их утечки, социальные сети так и манят поведать о себе всё: какие котята нравятся, с кем ты дружишь и почему с утра такой не выспавшийся.
Целая энциклопедия о поведении большинства интернет-активной публики лежит совсем рядом, и мне всегда хотелось её пощупать. С одной стороны, эти данные лежат вроде бы в открытом доступе, но просто взять и проанализировать их не так легко — всё слишком неструктурировано и разрозненно. К тому же, насколько я знаю, пригодных для машинного анализа наборов данных о соцсетях практически не существует. А для России — так и подавно.
Выбора не оставалось, и пришлось, зловеще хохоча по ночам, писать простеньких пауков для соцсетей ВКонтакте, Одноклассники, МойМир и русского сегмента Фейсбук, которые за несколько месяцев неспешно собрали более или менее статистически-корректный семпл данных. Собиралась только та информация, которую люди сами о себе рассказали. А рассказали они много.

О том, что удалось выудить из таких данных, и пойдет рассказ.

Как же так?


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

Сбор данных


Это наш не первый опыт сбора больших данных под покровом ночи. Так что в быстром темпе в пять рук на Qt/C++ и Python были написаны четыре паука, которые, неспешно прогуливаясь по отдельным соцсетям, записывали в базу все, что они встретили.
Разные соцсети по-разному относятся к парсингу. Проблемы возникали с Одноклассниками и Фейсбуком, у которых, как оказалось, есть довольно хитрая система детекта подозрительных ботов. К счастью, она по большей части нацелена на спамеров, а наши боты с этой точки зрения выглядят розовыми и пушистыми, и нам кое-как удалось настроить более-менее стабильный, хоть и очень медленный сбор.

Аналитика


Выкачать много данных — легко, всего лишь два месяца сбора. Но паранойя шагает по планете, и у большинства людей открытый профиль в соцсети выглядит очень скудно. Львиная доля информации доступна только лишь для друзей. Но дело в том, что сами-то друзья чаще всего открыты!
И на основании их можно вычислить довольно много интересного. К примеру, город, возраст и ВУЗ. Да и еще много чего. Для затравки покажу график зависимости реального возраста от медианы возрастов друзей:
image
Как можно догадаться, реальный возраст по большей части весьма связан с медианой возрастов друзей. Так что даже если вы параноик, то ваши друзья выдадут многое о вас просто своим наличием.

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

Возраст


Для начала, было бы интересно узнать возрастную структуру разных социальных сетей.
В качестве возраста использовался либо сам возраст, если человек не постеснялся указать свой год рождения, либо его аппроксимация на основе даты окончания школы/ВУЗа. Подобный маневр был необходим по большей части из-за Вконтакте и Фейсбука, у которых точный возраст известен для 40% и 20% пользователей соответственно.
Получилась примерно такая картина.
image

Забавно. Увидев это, можно определенно заметить следующие особенности:
  • В Одноклассниках сидит публика постарше.
  • Те, кто помоложе, почти полным составом сидят ВКонтакте. Странный выброс в районе 14 лет объясняется тем, что самый последний год рождения, который возможно выбрать в профиле — 1999. Вот все, кто моложе, его и выбирают. Защита детей и маркировка 14+ в действии.
  • В Фейсбук люди идут уже в сознательном возрасте, младше 18 там почти никого нет.

А как дела обстоят с половозрастной структурой? Пол был либо взят как есть, если в соцсети вообще есть возможность его указать, либо рассчитан на основании имени следующим образом. Если большинство людей, носящих имя “Александр” — мужчины, то будем всех Александров с неизвестным полом считать мужчинами. Подобный подход работает для подавляющего количества имен, но имеет некоторые проблемы с Женями и Сашами.


Прекрасно. Я всегда это подозревал:
  • В Одноклассниках большая часть аудитории — женщины. Предлагаю администрации переименовать сеть в Одноклассницы, это будет ближе к правде.
  • В остальных соцсетях тоже чувствуется общий перевес в сторону женщин, но уже не такой фатальный.
  • Общий провал в количестве мужчин до 1976 года можно объяснить тем грустным фактом, что мужчины в среднем возрасте умирают раньше и чаще женщин. Полагаю, подобная зависимость отражает общую демографическую ситуацию для этой группы людей. Берегите мужчин.

Далее был рассчитан некий абстрактный показатель активности человек в соцсетях в виде набора нескольких правил: “есть аватарка”, “друзей более 50”, “недавно был в сети” и т.п. За срабатывание каждого такого правила в общую копилку профиля падало несколько баллов. И вот так выглядит распределение этого показателя по разным соцсетям:


Удивительно, но ВКонтакте просто фонтанирует молодыми и гиперактивными пользователями, запал которых угасает (или чутко перенаправляется в семейное русло) только к 35 годам. В Одноклассниках основная активность начинается аж в 30 лет. А в МойМир и Фейсбук в этом плане ситуация более плачевная — там болото.

Нецензурная лексика


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

Очевидно, что лет с 15 молодые люди смелеют настолько, что могут невозбранно материться прямо у себя на странице. Лично я свой первый “Х*Й” на школьном дворе написал еще в 12, но правда анонимно. Излияние нецензурной лексики продолжается эдак годов до 23-х. Потом, видимо, наступает серьезность и пора уже стать взрослым. Весьма капитанское утверждение, но теперь оно хотя бы доказано фактами.

Популярность имен


Теперь пришла пора препарировать имена. Мне всегда казалось, что им��на имеют разную популярность во времени. Иногда прямо-таки чувствуется своеобразная мода называть детей как-то необычно. И теперь это можно увидеть своими глазами.

Тенденция налицо: популярные ранее имена стремительным домкратом теряют свою былую популярность.
  • К примеру, Александром в старые-добрые времена называли каждого восьмого мальчика, а теперь всего лишь каждого 50-го. Перевелись Александры нынче.
  • Популяция Владимиров стабильно сокращается вот уже 50 лет.
  • Заметны волны моды на имена Алексей и Игорь.

С женскими именами ситуация выглядит похожим образом:

В общем, тот же стремительный домкрат, но внимание стоит обратить на следующие особенности:
  • Популярные женские имена еще сильнее растеряли свою популярность, нежели мужские. Видимо, если рождается девочка, родители изо всех сил напрягают свою фантазию и изрыгают на свет Изольду, Мальвину или Даздраперму. Но если появляется мальчик, то чего напрягаться-то: и Александр сойдет.
  • Переломный момент с падением популярности приходится на конец 70-х и начало 80-х. Повеяло западом, оттепелью и вот результат: каждый родитель теперь соревнуется в оригинальности имен своих детей.

Модели телефонов


Идем далее. У всех постов на стене ВКонтакте есть забавная метка, если этот пост сделан с телефона под управлением iOS/Android. И это тоже можно (и даже нужно) проанализировать. Хочу отметить тот факт, что на графике по оси Y указана доля мужчин. Доля женщин, как вы можете догадаться, имеет очень простую зависимость от доли мужчин.

Интересно, но у iPhone явный перекос в сторону прекрасного пола, что неудивительно. “Папа, купи мне айфон, что я как дура тут хожу” — пожалуй, довольно популярная фраза, снящаяся в кошмарах многим молодым папам. А Андроид начинает пользоваться повышенным спросом у суровых мужиков за 30.

Семейное положение


Бабушка всегда говорила мне, что вот в ее времена быть холостым (или, что еще хуже, незамужней) в 25 было равносильно катастрофе. Что в дальнейшем, обычно, приводило к лекции на тему “жениться тебе надо, барин” и “все уже переженились, а ты один как сыч”. Мне всегда хотелось аргументов в этом споре, и теперь их есть у меня.
Хочу отметить, что семейное положение было проанализировано только среди тех, кто его указал.

Очень интересны следующие факты:
  • В 27 лет женаты только половина из тех, кто указал свое семейное положение. А вы-то говорили.
  • Молодежь чаще ходит в статусе “холост/не-замужем”, чем “встречается”. Ходит-ходит, а потом хлоп — и “женат/замужем”.

Вредные привычки


Теперь можно перейти к вредным привычкам: курению и употреблению алкоголя. Этот параметр есть только ВКонтакте, но многие его старательно заполняют, чем мы и воспользуемся.

Прискорбно, но любовь к алкоголю и курению только усиливается с возрастом. Некоторое плато наступает только аж к 30 годам, что несколько меня удивило. Где-то к 40 некоторые одумываются и пытаются исправить ситуацию, но уже поздно пить Боржоми.

Рост и вес


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

Я предполагал увидеть менее контрастный график. Но получилось именно так. Полагаю, объяснить эту странность можно тем, что женщины чаще гордятся своим небольшим ростом, а большой рост скрывают. У мужчин ситуация выглядит ровным счетом наоборот: стыдно на весь интернет признаться, что в тебе всего 150см, но если в тебе под два метра, то это должны узнать обязательно все.
С другой стороны, женщины в среднем ниже мужчин и все может быть гораздо проще.

С весом ситуация примерно такая же, как и с ростом. Женщины после 60кг резко перестают упоминать о своем весе. Зато мужчины — всегда пожалуйста. Сто двадцать? Да не проблема, хорошего человека должно быть много.

Вообще, взаимосвязь роста и веса описана во многих медицинских источниках. И на этом графике она налицо. Забавно отметить то, что низкорослые девочки обычно тяжелее мальчиков.

Пол


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

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

Лайки


Лайки — удивительная вещь. Еще шесть лет назад их не существовало, а теперь это неотъемлемый атрибут любой социальной сети.

Всегда подозревал, что прекрасный пол лайкают значительно чаще. И этот тренд продолжается чуть ли не до 30 лет, но потом потихоньку сходит на нет. С возрастом, к счастью, ценности меняются.
Лайк это феномен нынешних времен. Девушки нервно считают, сколько людей полайкало их новую аватарку с осенними листочками. а этим временем в голове моей звучит диалог: “Папа, а как ты познакомился с мамой?” — “Ну я полайкал ее аву, и тут понеслось”.

Политика


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

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

На этом красивые графики закончились. Но веселье — еще нет.

Данные


Создать такой чудесный набор данных для анализа и не поделиться им — преступление против человечества. Поэтому было решено выложить его в открытый доступ, но так, чтобы не задеть права и приватность людей, попавших в этот набор данных:
  • Профили анонимизированы, нет имени, фамилии, даты рождения, ВУЗа и адреса профиля. Теоретически некоторые из профилей возможно деанонимизировать, но это будет сделать довольно сложно.
  • Набор данных является семплом, объем которого ровно 4 млн. профилей, по 1 млн. для каждой соцсети.
  • Сбор и анализ этого добра, как мне кажется, удовлетворяет закону о персональных данных. Ключевые слова: общедоступные данные (пользователи это выложили сами), анонимизация (нет ФИО, даты рождения и т.п.), использование в научных некоммерческих целях.
  • Лицензия на данные: Creative Commons Attribution Shake-alike Noncommercial (CC-BY-NC-SA).
  • Данные в формате дампа для MySQL. В комплекте идет описание всех имеющихся полей.
  • В данных могут быть баги, я в этом просто уверен. Если вы нашли баг, то можете гордо поделиться им со мной в приватном сообщении.

Архив с данными, 7z, 135Mb в архиве, 1Gb в распакованном виде.

Вместо послесловия


Будьте аккуратнее с данными, которые выкладываете в сеть. То, что туда было однажды закачано, останется там на века. Так что берегите себя и свою приватность смолоду.