Data Science: Про любовь, имена и не только

в 11:42, , рубрики: big data, data mining, data science, love, sna, Большие данные, дата-майнинг, машинное обучение

Что значит имя? Роза пахнет розой,
Хоть розой назови ее, хоть нет.

  • Шекспир "Ромео и Джульетта" (пер. Пастернака)

Ромео и Джульетта

Данная статья не может служить поводом для выражения нетолерантности или дискриминации по какому-либо признаку.

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

Это примерно все равно, что сказать: вероятность быть сбитым машиной, если тебя зовут Сережа, выше, чем если бы тебя звали Костя! Звучит довольно дико, не правда ли? Ну, как минимум, ненаучно. Однако социальные сети сделали возможным сравнительно просто проверить приведенное выше утверждение.

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

История

Все началось с того, что я поставил себе Тиндер и пролистал его до конца в солидном радиусе. То есть просмотрел довольно много профилей девушек. Через какое-то время я заметил, что среди всех имен девушек, некоторые встречаются несколько чаще, чем другие, но примерно в одинаковом объеме. Конкретно речь об именах Даша и Ксюша, причем я ни разу на тот момент не сделал ни один свайп вправо (то есть лайк) для девушек с таким именем. Я еще мог как-то себе объяснить, почему обратил внимание на девушек с именем Ксюша (допустим, припоминая свой собственный опыт), но про девушек с именем Даша я не знал практически ничего. Я также не очень много знал про распределение имен, но интуиция мне подсказывала, что что-то тут не так. Сама идея, как уже заметил, показалась мне крайне странной и ненаучной, но я ее запомнил. Когда на следующий раз я заметил аналогичный результат, то уже не выдержал. Подумал, что либо Тиндер знает что-то, чего не знаю я или мое предположение не так абсурдно и решил обратиться к статистике. Доступа к данным Тиндера у меня нет, и я решил заглянуть в те ресурсы, который мне доступны — а это Одноклассники (где я, собственно, и работаю) и открытые данные ВКонтакте.

Для начала нужна была хотя бы какая-то гипотеза, объясняющая неравномерность распределения имен в Тиндере (с поправкой на естественную частотность). Я предположил, что по каким-то причинам Даши и Ксюши более одиноки, чем другие девушки. Это звучит совершенно невероятно, и адекватный человек ожидает, что вопрос одиночества, как и любой подобный показатель, совершенно одинаково распределен среди людей независимо от их имени, знака зодиака и другой подобной ерунды. Для меня сама мысль о том, что может быть иначе, все еще казалась крамольной, сродни гомеопатии или астрологии.

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

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

Анализ на основе данных ВК

Для начала зафиксируем список имен, он может быть произвольный. Но мы обязательно возьмем высокочастотные имена, такие как Анастасия, Екатерина, Елена, Мария и Наталья (более одного миллиона, по данным ВК). Чуть менее распространенные, такие как Дарья, Алина, Ксения и Александра (около 800 тыс). Также нужно взять что-то более экзотическое, пусть это будут Кира и Инесса. Ну и в качестве очень большой экзотики — Лейла.

Более того, есть известная проблема, что частотность имен меняется, какие-то имена всегда сравнительно популярны, а какие-то становятся популярными в небольшом диапазоне в несколько лет. Чтобы оценить влияние этого вопроса, мы рассмотрим три случая. Возьмем девушек в возрасте 20-35 и отдельно рассмотрим (интересный мне лично) возраст 28 и совсем юных 22 лет от роду. Я сознательно не стал работать со статусом "гражданский брак" (потому что его редко проставляют) и "все сложно" (потому что его смысл для меня все еще очень туманный), ну или "помолвлена" (все-таки мы не в той стране живем, где это имеет какой-то вес), поэтому ограничился только рассмотрением наиболее употребительных вариантов, которые выступают в качестве названия колонок в нашем небольшом датасете: married, relationship, love, single и searching. Также мы найдем сколько их всего — all. В каждой колонке будет находится количество девушек с нужным именем в таком статусе. Разумеется, мы тут сразу должны сделать оговорку, связанную с именем Ксения. Дело в том, что Ксюшами зовут также и девушек с именем Оксана, так что этот вопрос требует более кропотливой работы и мы вернемся к нему потом.

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

v = (single + searching) / all

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

u = 1 - (married + love + relationship) / all

таким образом это доля тех, кто не состоит в отношениях, и она включает в себя долю, которую характеризует число v.

Вот тут я поступлю немного нечестно, но это позволит сократить объем статьи существенным образом. Оказывается, что куда интереснее рассматривать некоторую функцию q = f(v, u) или даже от большего числа параметров в качестве интегрального показателя одиночества. Из соображений простоты и здравого смысла в качестве такой функции мы просто возьмем среднее арифметическое:

q = (u + v) / 2

Еще интересно, насколько девушки с данным именем вообще склонны что-либо писать о своих отношениях – назовем эту величину w:

w = (single + searching + married + love + relationship) / all

И еще надо бы отнормировать активно ищущих (это примерно то же, что и v, только мы не учитываем тех, кто имеет статус незамужем):

a = searching / all

Давайте посмотрим, что у нас получилось.

Девушки 20-35

Ниже представлена таблица с вычисленными значениями для данных ВК.

Девушки 20-35

Любой здравый человек предполагает увидеть примерно одно и то же значение v и u в пределах какой-то небольшой погрешности, но никак не шкалу от 0.125 до 0.226 для случая с v! В таблице строки отсортированы по q (на самом деле, все потому, что сортировка по q дает более стабильные результаты, чем по v и u). Если более конкретно, то девушки с именем Кира статистически существенно более одиноки, чем девушки с именем Наталья. Таким образом, чем выше значение v, u или q — тем более одиноки девушки с данным именем.

Вообще такое наблюдение контринтуитивно, так быть не должно, и можно подумать, что мы сделали что-то настолько неверно, что ожидаемые примерно одинаковые значения v разошлись так сильно.
Существенное различие между верхней частью таблицы и нижней очевидно. Первое, что приходит на ум, – наверное, распределение имен в таком большом возрастном диапазоне имеет какие-то существенные пики, и они повлияли на общую картину — все-таки 15 лет. То есть можно было бы предположить, что если бы мы взяли какой-то один возраст, то ситуация была бы принципиально другой. Давайте так и поступим, и посмотрим, что же будет, если мы возьмем только девушек 28 лет.

Девушки 28 лет

Девушки 28

Надо сказать, что ситуация не изменилась в качественном смысле по сравнению с выборкой 20-35 лет, т.е. здесь мы также видим существенное различие между верхней и нижней частью таблицы. Структура верхней и нижней части таблицы по больше части совпадают, лишь средняя часть изменилась значительно.

Таким образом мы можем констатировать, что девушки 20-35 лет в совокупности и девушки 28 лет в отношениях ведут себя похожим образом в пределах своего имени!

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

Ну это же девушки 28 лет, т.е. примерно средний возраст в нашем изначальном диапазоне, скажите вы! А что же собственно происходит с более молодыми особами, ну, скажем, в 22 года? Давайте посмотрим.

Очень юные особы 22 лет

Девушки 22

Вот это уже интереснее, здесь все тоже самое, что в случае 28 лет, только лишь поменялись местами Екатерина и Анастасия. Вся остальная структура таблицы оказалась прежней (напоминаю, мы сортируем по показателю q).

Статистика по регионам

Следующее, что нужно проверить — это что происходит с регионами. Вдруг там все иначе? В данном случае нужен был какой-то компромисс в виду того, что есть редкие имена, и я предпочел произвести расчет для возрастов 20-35, чтобы точно хватило данных.

Начнем с Санкт-Петербурга:

Статистика по Санкт-Петербургу

Как можно было ожидать, в Москве ситуация очень похожая за одним существенным исключением – девушки с именем Инесса куда более одиноки, чем девушки с именем Анастасия, тогда как в Санкт-Петербурге ситуация ровно обратная:

Статистика по Москве

Теперь заглянем на Урал в город Екатеринбург. Как видно, верхняя и нижняя часть также совпадают с Москвой, причем, если поменять местами Марию и Инессу — то будет просто тоже самое:

Статистика по Екатеринбургу

Напоследок посмотрим на Новосибирск. Причем, если, как мы уже видели, Екатеринбург больше похож на Москву, то Новосибирск – на Санкт-Петербург, также с небольшими отличиями. К сожалению, статистики по имени Лейла явно не хватает, но сейчас мы не будем обращать на это внимание, нам достаточно иметь качественную картину:

Статистика по Новосибирску

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

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

Анализ на основе данных Одноклассников

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

Мы убедились в том, что можем спокойно использовать выборку за 20-35 лет как репрезентативную, потому что она практически неотличима от среза по конкретному возрасту и существенно не зависит от региона. Для всех таблиц мы берем только пользователей, у которых более 15 друзей, хотя это не оказывает какого-то существенного влияния на порядок имен после сортировки, однако существенно для вычисления количества друзей "в среднем".

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

Нормализованные и ненормализованные имена

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

Data Science: Про любовь, имена и не только - 9

Общая структура таблицы соответствует данным из ВК с небольшими изменениями. Значение u здесь — аналог нашего u из данных ВК (это значение всегда велико, потому что статус в отношениях в ОК проставляют куда меньше людей). Более того, здесь нам удобно посчитать значение возраста "в среднем" в группе и количество друзей "в среднем". Возможно, что среднее значение возраста и влияет на сортировку, например, если нижняя часть таблицы старше. Тогда количество одиноких должно быть меньше. Но мы с вами лишь знаем, по данным ВК, что срезы по одному возрасту примерно одинаковы. На самом деле тех данных, что мы видели, явно не хватает. Хотелось бы удостовериться, что средний возраст в группе и частота имени не оказывают сильного действия.

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

Для этого давайте добавим несколько низкочастотных имен, например, Лия и Ася (очень редкие), Снежана, Анжела, Диана и Лилия (просто низкочастотные), а также несколько недостающих высокочастотных (Анна, Ольга) и денормализуем имена (но уменьшительные варианты пока брать не будем), разделив таким образом девушек с именем Ксения и Оксана, а также Инесса и Инна, хотя последнее и используется часто как сокращенный вариант для Инессы:

Data Science: Про любовь, имена и не только - 10

Видно, что имена Ксения и Оксана ведут себя примерно одинаково, находясь очень близко в таблице. А вот с именами Инна и Инесса все иначе. Несмотря на то, что имя Инна часто используется вместо имени Инесса и наоборот (что портит нам статистику по нормализованным именам), статистика по этим именам совершенно разная. Инна — это все-таки совершенно другое имя и для того, чтобы увидеть это в деталях зададимся вопросом, а что же будет происходить с уменьшительными именами и как будет выглядеть наша таблица.

Уменьшительные имена

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

Data Science: Про любовь, имена и не только - 11

Сразу видно, что девушки с уменьшительными именами всегда, кроме случая Инна/Инесса, более одиноки. Собственно и ожидалось, что эта пара должна вести себя принципиально иначе. Из нашего предыдущего опыта нам известно, что имена Ксения и Оксана ведут себя одинаково, поэтому нам не важно, куда относить имя Ксюша. Наиболее близки со своими уменьшительными вариантами имена Елена и Дарья, все остальные очень далеко, особенно Екатерина и Мария. Кроме того, видно, что Маша, Саша, Ксюша и Катя оказались на самом верху таблицы.

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

  • Возможно, дело в том, что девушки с уменьшительным вариантом имени просто моложе, а вероятность вступления в отношения зависит только от полной формы имени. Действительно видно, что с уменьшительными именами девушки "в среднем" моложе на год.

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

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

Из предыдущей таблицы также видно, что количество друзей "в среднем" примерно одинаково и никакой дополнительной информации с ходу не дает.

В новой таблице поля friend_ns и age_ns — это соответствующие значения "в среднем" для случая замужних девушек.

Также введем несколько синтетических полей:

delta_f = friends_ns - friends
delta_a = age_ns - age

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

Data Science: Про любовь, имена и не только - 12

Для неодиноких девушек ситуация с друзьями "в среднем" совершенно иная, можно видеть существенный разброс значений, как показывает поле delta_f. На самом деле это может служить косвенным подтверждением гипотезы, предложенной Крисом Раддером. Он пишет, что крепость брака измеряется степенью ассимиляции каждого супруга в сеть связей другого. То есть существенное изменение количества друзей "в среднем" связано с ассимиляцией социального графа мужа/партнера.

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

И пока ничто, кроме интуиции и здравого смысла, не указывает нам на вторую гипотезу.

Технические детали

Начнем с того, что нам конечно не всегда достаточно данных, как можно видеть из таблиц. Но качественная оценка нам все равно доступна. Мне не очень хотелось утруждать себя и вас детальными расчетами, потому что ситуация и так вполне на поверхности.
Но надо быть приличными людьми и немного поговорить об округлении (я уже говорил, что в случае OK, можно смело округлять до второго знака) и среднем значении.

Значения "в среднем"

До этого везде я использовал выражение "в среднем" только в кавычках. Рассмотрим к примеру возраст, который в некоторых таблицах я округлил до первого знака, чтобы было лучше видно. Можно ли говорить здесь про среднее значение? С одной стороны, нет каких-то выбросов, но вряд ли кто-то будет ожидать, что возраст всегда будет распределен нормально. Однако если взять, все те же имена Оксана и Ксения, которые ведут себя похожим образом и имеют одну и ту же короткую форму — Ксюша, можно увидеть, что "в среднем" Оксаны старше, чем Ксюши. Это связано с изменением популярности имени. Давайте взглянем на график для некоторых имен.

Статистика по распределению имен 1

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

Статистика по распределению имен 2

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

Погрешность

Я округлил в таблицах из ВК до третьего знака значения для q. Насколько это вообще корректно? Для проверки я сделал измерение еще раз, но через полторы недели. Результат представлен в следующей таблице:

Девушки 20-35 (новые данные)

Как можно видеть, сравнив с первой таблицей, совпадает не просто сортировка, но и значение q, кроме случая с именем Дарья. Как выяснилось, по какой-то причине ВК в поиске показывает иногда меньшее число, при отсутствии фильтров. В этот раз я это заметил, потому что начал с Дарьи (как и в прошлый) и общее число девушек с таким именем оказалось даже немного меньше, чем в прошлый раз. Поэтому я сделал еще несколько замеров. Таким образом есть основания полагать, что значение для этого имени в последней таблице более достоверно, хотя общая картина полностью сохраняется и для предыдущего замера.

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

Сухой остаток и заключение

Что же мы узнали? Несмотря на абсолютную неправдоподобность самой идеи, неравномерность распределения в зависимости от имени можно подтвердить, более того, распределение имен не зависит от частоты имени, региона (в разумных пределах) или источника данных. Если совсем сухо: имя — это фича.

Я здесь не буду пытаться построить модель или выдвинуть гипотезы, которые бы как-то описывали полученные результаты. Однако замечу, что данные, полученные для имени Лейла и Лия вполне ожидаемые. Потому что первое имя "арабского происхождения" и девушки с таким именем вероятно являются носителями культурной традиции, которая отличается от культурной традиции девушек с "более традиционными русскими именами". А имя Лия "очень широко распространено среди евреев" и, вероятно, также несет в себе некоторые культурные особенности.

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

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

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

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

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

И чтобы уж было совсем интересно, напоследок посмотрим, что там происходит с мужскими именами. Возьмем данные ВК для мужчин 20-35 лет.

Статистика по мужским именам

Я здесь также сортировал по q, однако ситуация с мужчинами "менее стабильная", потому что если сортировать по v, то люди с именем Виталий будут куда более одиноки, чем при сортировке по q.

В статье нет анализа показателей w и a, но вы можете сами поразмышлять на эту тему.

В заключении я бы хотел поблагодарить всех тех, кто был хоть как-то причастен к моей работе. Огромное спасибо Филиппу Федчину, Никите Павленко, Сергею Товмасяну и многим другим.

Автор: khud

Источник

Поделиться

* - обязательные к заполнению поля