[Перевод] Анализ данных мира Facebook
Перевод поста Стивена Вольфрама (Stephen Wolfram) «Data Science of the Facebook World».
Выражаю огромную благодарность Кириллу Гузенко за помощь в переводе.
alizar написал краткую заметку об этой статье и описанном в ней функционале Wolfram|Alpha и Wolfram Language. В нашем блоге мы приводим её полный перевод.
Миллионы человек в настоящее время пользуются нашим приложением «Wolfram|Alpha персональная аналитика для Facebook». И, как часть нашего последнего обновления, в дополнение к сбору некоторых анонимных статистических данных, мы запустили программу «донорства данных», позволяющую людям поделиться с нами подробными данными, которые мы используем для научно-исследовательских целей.
Несколько недель назад мы решили проанализировать все эти данные. И, должен сказать, что, это было ни чем иным, как потрясающим примером силы Mathematica и Wolfram language в науке о данных (это также хороший материал для курса по науке о данных, который я начал готовить).
Мы всегда планировали использовать собираемые нами данные для улучшения нашей системы персональной аналитики. Но я не мог сопротивляться своим попыткам заодно и рассмотреть всё это с научной точки зрения.
Мне всегда были интересны люди и их жизненные пути. Но у меня никогда не получалось объединить это с моими научными интересами. До этого момента. Последние несколько недель прошли весьма захватывающе в наблюдении тех результатов, которые мы получили. Одни были ожидаемыми, а другие были настолько непредсказуемыми, что я никогда бы и не предположил ничего подобного. И всё это напоминало о феноменах из моего труда A New Kind of Science (Новый вид науки).
Так как же выглядят данные? Ниже приведены социальные сети несколько доноров данных — группы друзей разбиты по цвету (любой может найти свою собственную сеть, используя Wolfram|Alpha или функцию SocialMediaData в Mathematica (в последней версии Wolfram Language эта функция поддерживает работу с Facebook, GooglePlus, Instagram, LinkedIn, Twitter — прим. ред.)).
Первый количественный вопрос: насколько обычно велики эти сети? Другими словами, сколько обычно друзей у людей на Facebook’е? Ну, по крайней мере в отношении пользователей из нашей выборки, на этот вопрос легко ответить. Медиана — 342, а ниже приведена гистограмма, показывающая распределение (график построен на отрезке [0; 5000], потому что это максимальное количество друзей на персональной странице на Facebook’е):
Насколько типичны наши пользователи (другими словами, насколько представительна наша выборка)? Во многих отношениях — насколько мы можем это утверждать — они выглядят довольно типично. Но есть, безусловно, некоторые различия. Вот распределение числа друзей не только для наших пользователей, но и для их друзей (есть математическая тонкость в разделении этих множеств пользователей, о которой я расскажу чуть позже):
Мы видим, что в этой более широкой совокупности пользователей Facebook имеется значительно больше людей, которые почти не имеют друзей на Facebook’е. Нужно ли подобных людей включать в примеры — вопрос спорный. Однако, судя по получаемым результатам, они не оказывают особого влияния (острый выступ на 200 друзьях, вероятно, имеет отношение к системе рекомендации друзей на Facebook’е.)
Так, хорошо. Давайте посмотрим, как меняется типичное количество друзей на Facebook’е с возрастом человека. Конечно, всем нам известно то, как многие люди указывают свои возраста. Однако давайте всё таки построим график зависимости числа друзей пользователей от их возраста. Сплошная линия означает среднее количество друзей; последовательные полосы указывают соответствующие октили выборки.
После быстрого роста наблюдается пик в количестве друзей, который приходится на молодёжь чуть моложе 20 лет, после чего происходит постепенное снижение. Почему так происходит? Подозреваю, что это обусловлено как поведением людей, так и тем, что Facebook существует не так уж и долго. Предположив, что люди не удаляют друзей после того, как они их добавили, можно было бы ожидать, что количество друзей с увеличением возраста должно постоянно расти. И данные согласуются с результатами в отношении молодых людей. Но есть предел роста, потому что ограничено количество лет, в течение которых люди имеют профиль на Facebook’е. И если предположить, что это не зависит от возраста, то из графиков следует, что люди с возрастом добавляют меньше людей.
Но каких друзей они добавляют? Взяв человека определённого возраста, мы можем, к примеру, построить распределение возрастов его друзей. Вот некоторые результаты (скачкообразный характер графиков, особенно для 70 лет — следствие ограниченного количества имеющихся у нас данных):
А вот анимированная версия:
Первое, что бросается в глаза — то, что возраст друзей всегда имеет максимум вблизи возраста самого человека, что, вероятно, отражает тот факт, что в современном обществе большинство друзей появляются в учебных заведениях и являются одногодками. У людей помладше пик возрастов друзей обычно довольно резкий. С возрастом у людей распределение постепенно становится шире.
Мы можем обобщить всё это, построив распределение возрастов друзей в зависимости от возраста самого человека (сплошная линия показывает средний возраст друзей):
Имеется аномалия для самых маленьких возрастов, по-видимому из-за детей младше 13, которые недостоверно указывают свой возраст. Но кроме этого мы видим, что молодые люди, как правило, имеют друзей, которые удивительно близки к ним по возрасту. Увеличение ширины распределения при увеличении возраста человека, вероятно, связано с тем, что на рабочих местах и в сообществах нет столь жёсткой привязки к возрасту, как в учебных заведениях. И, из тех графиков выше получается, что к середине пятого десятка у людей появляется второй пик в младшей возрастной группе, по-видимому из-за их детей, которые начинают использовать Facebook.
Так какие ещё сведения можно почерпнуть о жизни людей? Вот разбивка по указанным в профиле статусам отношений в зависимости от возраста:
(слева направо: «одинокий», «встречается», «помолвлен», «женат», «овдовел», «другое»)
А вот более детально, с выделением мужчин (синяя линия) и женщин (фиолетовая линия) (группа «married +» включает как «женат/замужем», так и «в гражданском браке», «в разводе», «вдовец/вдова», и т. д.):
У детей существует какая-то очевидная нелепость (особенно у девочек) с указанием себя состоящими в браке. Но в целом тенденция ясна. Количество состоящих в браке начинает возрастать на третьем десятке, притом чуть ранее для женщин, и спадает в конце четвёртого десятка, когда уже около 70% людей женаты/замужем. Доля состоящих в отношениях имеет пик в районе 24 лет, а небольшой пик помолвленных приходится на 27 лет. Доля людей, указавших себя состоящими в браке, продолжает довольно линейно увеличиваться с возрастом, достигая около 75% между 40 и 60 годами, а доля людей, указавших свой статус отношений как single (одинок/одинока/отсутствие серьёзных отношений; далее —«не замужем/не женат») продолжает расти для женщин, в то время как для мужчин снижается.
Я должен сказать, что смотря на приведённые выше графики, я поражаюсь их сходством с графиками физических процессов наподобие химических реакций. Как будто люди, не смотря на всю сложность своего поведения, по прежнему в некотором роде подобны молекулам, имеющим скорость реакции для вхождения в отношения, брак и тому подобное.
Конечно, приведённое выше справедливо только для Facebook-мира. И как оно соотносится с миром в целом? Ну, по крайней мере, часть того, что мы можем узнать в Facebook-мире, также можно узнать и из официальных переписей. Вот, пример того, как наши результаты для людей, состоящих в браке в определённых возрастах соотносятся с результатами официальной переписи населения США (US Census — сплошные линии):
Я поражен тем, насколько они сходятся. Хотя, очевидно, есть и некоторые различия. Так как некоторые пользователи младше 20 на Facebook’е недостоверно указывают себя состоящими в браке. А пожилые овдовевшие указывают себя на Facebook’е всё ещё состоящими в браке. Для людей в возрасте от 20 имеется небольшое систематическое различие с людьми на Facebook’е — они в среднем женятся на пару лет позже, чем предполагается в переписи (как и следовало ожидать, если исключить сельское население США, разница станет значительно меньше).
Если уж говорить о переписи, то можно задаться вопросом — как вообще совокупность пользователей Facebook’а соотносится с населением США. И вот, мы получаем довольно ожидаемый крен совокупности пользователей Facebook’а в сторону молодых людей:
Хорошо. Выше мы рассмотрели, как типичное количество друзей у человека зависит от его возраста. А что насчёт пола? Возможно, это несколько удивительно, но если мы посмотрим на графики для мужчин и женщин, то мы не обнаружим заметного различия в распределениях количества друзей. Но если вместо этого мы рассмотрим то же самое в зависимости от возраста, то сможем заметить некоторые различия:
Мальчики-подростки, как правило, имеют больше друзей, чем девочки-подростки, возможно, потому, что они менее избирательны в том, кого принимать в друзья. Однако в начале третьего десятка разница между полами быстро сокращается.
Какое влияние оказывает статус отношений? Вот данные по мужчинам и женщинам в зависимости от возраста:
Для людей постарше семейное положение, пожалуй, не оказывает большого влияния. Но для молодых людей оказывает. У подростков, которые (не)корректно указывают себя состоящими в браке, в среднем имеется больше друзей. А у девочек из младшей подростковой группы, которые указывают себя «помолвленными» (возможно, чтобы иметь возможность указать в статусе своих лучших друзей), как правило, имеется больше друзей, чем у тех, кто указывает свой статус как «не замужем», или просто «в отношениях».
Совсем другая история с указанием своего местоположения на Facebook’е — эти данные являются значительно более надёжными. И часто можно увидеть довольно сильные различия в зависимости от местоположения. Как на этом сравнении среднего числа друзей в странах по всему миру (серым указаны страны с недостаточным количеством данных) и для штатов США:
Есть некоторые любопытные моменты. В таких странах, как Россия и Китай среднее количество друзей не особенно высоко, потому что Facebook в них не имеет широкого распространения. И, возможно, меньшее количество друзей в западной части США обусловлено низкой плотностью населения. Но я не могу понять, почему в Исландии, Бразилии, Филиппинах и Миссисипи более высокие показатели среднего количества друзей (существует, конечно, некоторая погрешность из-за людей, которые недостоверно указывают своё положение, но с учётом объёмов нашей выборки я не думаю, что они оказывают большое влияние).
В Facebook, люди могут указывать как «родной город», так и «город текущего проживания». Вот как меняется с возрастом вероятность того, что эти пункты будут различны:
То, что мы увидели — довольно ожидаемо. Для некоторой части населения имеется определённый уровень движений случайного характера, заметный для меньших возрастов. Около 18 лет наблюдается скачок, когда люди покидают родной дом, отправляясь в учебное заведение. Некоторые в последствие возвращаются и в дальнейшем решают, что будет считаться их родным городом.
Можно задаться вопросом — откуда и куда люди переезжают. Вот график, показывающий количество людей в нашей совокупности пользователей Facebook, движущихся между различными штатами США и различными странами:
Есть ещё огромное количество демографических вопросов, которые можно рассмотреть. Но давайте вернемся к социальным сетям. Имеется общее наблюдение, что люди склонны дружить с похожими на себя людьми. Таким образом, чтобы это проверить, мы могли бы, например, узнать, склонны ли люди с большим количеством друзей иметь в друзьях людей столь же «дружелюбных». Вот график среднего количества друзей, которые имеют наши пользователи, как функции от «дружелюбности» их друзей:
И результат заключается в том, «дружелюбность» людей положительно коррелирует с «дружелюбностью» их друзей. Хотя так же можно заметить, что обычно у «дружелюбных» людей друзья несколько менее «дружелюбны».
И на основе этого можно обсудить некоторые тонкости, которые я упоминал ранее. Самый первый график в этом посте показывает распределение количества имеющихся у наших пользователей друзей. Но что о количестве друзей, которые есть у их друзей? Если мы просто возьмём данные по всем друзьям всех наших пользователей, то мы таким образом сможем сравнить распределение количества друзей наших пользователей с таковым распределением у их друзей:
Похоже, друзья наших пользователей всегда имеют больше друзей, чем сами наши пользователи. Но на самом деле, учитывая данные с прошлого графика, мы знаем, что это не так. Так что происходит? Это несколько тонкий, однако общий феномен социальных сетей, известный как «парадокс дружбы». Важный момент заключается в том, что, когда мы рассмотрели друзей наших пользователей, мы неизбежно выбрали пространство всех пользователей Facebook весьма неоднородном образом. В частности, если наши пользователи представляют однородную выборку, то частота выбора какого-то друга будет находится в зависимости от того, как много друзей у них имеется, в результате чего люди с большим количеством друзей будут выбираться чаще, так что среднее количество друзей будет возрастать.
С этой проблемой легко можно справиться, беря друзей взвешено в зависимости от того, сколько у них имеется друзей — это то, что мы ранее уже проделывали в этом посте. И если так сделать, то мы узнаем, что на самом деле друзья наших пользователей не имеют тенденцию иметь больше друзей, чем у самих рассматриваемых пользователей; получается, что среднее количество друзей у них — 229 вместо 342.
Стоит отметить, что если мы посмотрим на распределение числа друзей, которое мы получили для совокупности пользователей Facebook, то заметим, что оно весьма неплохо аппроксимируется степенным законом с показателем -2,8. И это обычная форма для сетей самых разных видов, которое можно понимать как следствие эффекта предпочтительной принадлежности (preferential attachment), в котором при росте сети узлы, у которых уже много связей, имеют бОльшие преимущества для получения новых связей, что приводит к ограничениям безмасштабных сетей со степенными параметрами.
Так, хорошо. Давайте теперь более подробно рассмотрим социальные сети отдельных пользователей. Я не особо активно пользуюсь Facebook’ом, так что не думаю, что моя сеть будет достаточно интересна. Однако моя 15-летняя дочь Катерина была достаточно любезна, предоставив для рассмотрения свою собственную сеть:
Каждому узлу сети соответствует Катеринин друг на Facebook’е, а связи соответствует наличие человека в друзьях (нет такого узла в сети, который бы соответствовал Катерине, потому что она и так со всеми связана). Сеть построена (с помощью функции Wolfram language FindGraphCommunities) так, чтобы выделить группы или сообщества друзей. И весьма удивительно то, как эта сеть «рассказывает историю». Каждая группа соответствует какой-то части жизни Катерины или её прошлого.
Вот полная подборка сетей наших доноров данных:
Нет сомнений в том, что каждая из этих сетей рассказывает какую-то свою историю. Однако мы можем произвести общую статистику. Как, например, вот график того, как количество групп друзей изменяется с возрастом (с большим количеством данных у нас было бы меньше шума):
Даже в возрасте 13 лет, у людей имеется примерно три группы друзей (вероятно, друзья со школы, с района и семья). Когда они становятся старше, они переходят в другие школы, устраиваются на работу, ну и так далее, в результате чего образуются другие группы. Сейчас максимальное количество наблюдается в районе 30-ти, вероятно, в значительной степени именно из-за ограниченного времени существования Facebook’а.
Насколько в среднем велики эти группы? Самая большая группа обычно содержит около ста друзей; график ниже показывает зависимость размера от возраста:
А вот как с возрастом меняется доля самой большой группы по отношению ко всей сети:
Что насчёт более детальных свойств сетей? Имеется ли некая «периодическая таблица» структур сетей? Или классификационная схема наподобие той, которую я давным-давно разработал для клеточных автоматов?
Первый шаг для поиска чего-то отличительного в каждой сети, который мы можем сделать — рассмотреть их кластерную структуру, игнорируя подструктуры. Вот, к примеру, таким образом мы можем упростить сеть Катерины (которая и предложила эту идею) до уровня кластерной диаграммы:
Ниже показано то, что мы получим, проделав то же самое для сетей доноров данных:
При создании этих диаграмм мы принимаем за кластер ту группу, в которой как минимум два друга. Однако для получения более общей структуры мы можем убрать из рассмотрения те кластеры, в которых содержится менее 10% от общего числа друзей. Вот так, к примеру, будет тогда выглядеть сеть Катерины:
А теперь, к примеру, можем рассчитать относительные количества различных типов структур, которые появляются во всех сетях доноров данных:
И мы можем рассмотреть то, как доля каждой из структур изменяется с возрастом:
Что мы из этого узнали? Наиболее распространенные структуры состоят из двух или трех основных и связанных между собой кластеров. Но есть также структуры, в которых основные кластеры не имеют между собой никаких связей — по-видимому, это является отражением наличия у человека таких аспектов жизни, которые не имеют связи между собой из-за географических причин или их содержания.
У каждого человека за структурой его кластерной диаграммы стоит какая-то своя история. И можно подумать, что всё это не может быть обобщено какой-то единой теорией. В каком-то смысле это немного похоже на попытку разработать общую теорию истории человечества или путей биологической эволюции. Но интересно то, что Facebook-мир даёт нам гораздо больше данных для формирования подобных теорий.
И мы не просто должны рассматривать вещи наподобие кластерных диаграмм, или даже дружеских сетей — мы можем копать как угодно глубоко. Например, мы можем проанализировать множество постов людей, которые они размещают на своих стенах в Facebook и отсортировать их по темам (для этого использовался классификатор естественно-языкового контента, написанный на Wolfram language и обученный на большой выборке):
Каждая из этих тем характеризуется определенными, часто встречающимися словами:
И для каждой темы мы можем выяснить, как её популярность зависит от возраста (указанного на Facebook’е):
Просто потрясает, как много информации можно почерпнуть из этого об эволюции типичных интересов людей. С возрастом люди начинают меньше говорить о видеоиграх и больше о политике и погоде. Мужчины, как правило, больше говорят о спорте и технологиях, чем женщины, и, что меня несколько удивило, они также начинают больше говорить о кино, телевидении и музыке. Женщины говорят больше о животных, семье, друзьях, отношениях, и, по крайней мере после того, как они достигнут детородного возраста, о здоровье. Не особо удивительно, что пиковый возраст разговоров о школе и университете — 20 лет. Люди менее заинтересованы говорить об «особых случаях» (в основном о днях рождения) в подростковом возрасте, но затем интерес к этой теме повышается. А на третьем десятке люди начинают гораздо больше говорить о карьере и деньгах. И так далее, и так далее.
Некоторые вещи удручающе стереотипны. И большинство из них не особо удивительны для тех, кому известны естественные различия людей разных возрастов. Однако для меня примечательно то, насколько ясно и детально мы можем увидеть на этих графиках отражения мышления людей по ходу их жизни.
Конечно, приведенные выше графики основываются на собранных нами полностью анонимных данных. Но если мы начинаем смотреть на отдельных людей, мы увидим множество других интересных вещей. К примеру, лично мне весьма любопытно анализировать свой архив электронной почты за 25 лет, и, возможно, предсказывать вещи в отношении себя на основе сравнения с тем, что происходит с людьми в целом.
На протяжении десятилетий я постоянно накапливал бесчисленные тематические исследования о траекториях жизней людей, из которых я почерпнул ряд общих закономерностей. Но то, что было для меня поразительным в отношении того, что мы делали в последние несколько недель — то, насколько много за раз возможно получить систематической информации. Что всё это значит, и какие общие теории из всего этого можно построить — я пока что не знаю.
Однако это похоже на начало создания некого мощного «вычислительного телескопа», исследующего «социальную вселенную». И это позволяет нам исследовать и открывать самые разнообразные явления. В этом есть потенциал, который поможет нам узнать больше об обществе и самих себе. И это, кстати, даёт нам прекрасные примеры того, чего можно достичь с наукой о данных и с теми технологиями, которые я так долго разрабатывал.