Как определить вероятные связи в социальной сети?

29

Мне любопытно определить подход к алгоритму «предложенных друзей».

У Facebook есть функция, с помощью которой он будет рекомендовать вам людей, с которыми, по его мнению, вы можете быть знакомы. Эти пользователи обычно (исключая крайние случаи, когда пользователь специально рекомендует друга ) имеют очень похожую сеть на себя. То есть количество общих друзей велико. Я предполагаю, что Твиттер следует аналогичному пути для механизма «Кто следовать».

Стивен Дойл (Igy) , сотрудник Facebook, предположил, что похожие новостные ленты, использующие формулу EdgeRank, которые, кажется, указывают на то, что ценятся больше, чем друзья, такие как внешний вид, являются похожими постами. Другой пользователь предложил систему Google Rank.

Facebook заявляет, что их Оптимизация новостной ленты называется гдеuewede

ж е д еue = показатель сродства между просмотром пользователя и создателем ребра = вес этого ребра (создать, комментировать, например, метку и т. д.) = коэффициент затухания времени, основанный на том, как давно ребро было создано
we
de

Суммирование этих предметов должно дать ранг объекта, который, как я полагаю, подсказал Иги, означает, что что-то в аналогичном формате используется для предполагаемых друзей.

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

phwd
источник
В качестве простой отправной точки вы можете использовать систему рекомендаций «друзей друзей». То есть, если у вас много друзей, которые дружат с человеком X, то, возможно, вам следует дружить с человеком X.
Джо
1
Существуют различные модели случайных графов, которые пытаются уловить структуру реальной социальной сети. Расчет вероятности потенциального преимущества зависит от используемой модели и доступной информации.
Каве

Ответы:

7

Вы можете думать о социальном графе как о матрице . Один из подходов к проблеме - сначала вычислить , который даст все пути длины два между двумя действующими лицами в социальной сети. Это можно рассматривать как вес связи между этими друзьями друзей. Следующим шагом является выбор столбцов из строки соответствующих интересующему лицу, чтобы получить лучших кандидатов для новых друзей.М 2 М 2MM2M2

Дэйв Кларк
источник
1
Это дало бы количество путей между и лицом , которое затем можно использовать для ранжирования друзей. Это грубо, я признаю. рfip
Дэйв Кларк
Я думаю, что моделирование проблемы с графиком проще и понятнее.
MMS
11

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

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

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

Я предлагаю схему на основе схемы. Предположим , что каждое звено является резистор сопротивлением . Тогда лучшим кандидатом для нового друга может быть человек с самым низким эквивалентным сопротивлением. Вот плохо выполненный пример графики ASCII:R

  _____
 /     \
a---c   f
|   | /
b   d---e
| \ |
g   h   i

Скажем, мы хотим найти новых друзей для a. a«S текущие друзья b, cи f. Мы оцениваем чистую эквивалентное сопротивление между aи каждый из d, e, g, hи i:

pair   resistance
(a,d)   6/7
(a,e)  13/7
(a,g)   7/4
(a,h)   1/1
(a,i)   inf

Согласно этой эвристике, dэто лучший кандидат в друзья, а за ним внимательно следят h. gследующая лучшая ставка, сопровождаемая e. iникогда не может быть кандидатом в друзья по этой эвристике. Считаете ли вы, что результаты этой эвристики отражают реальные человеческие социальные взаимодействия - вот что важно. С точки зрения вычислений, это будет включать в себя поиск подграфа, содержащего все пути между двумя индивидуумами (или, что может быть интересно, некоторое осмысленное выбранное усечение этого), а затем оценку эквивалентного сопротивления между узлами источника и приемника.

РЕДАКТИРОВАТЬ: Так какова моя социальная мотивация для этого? Что ж, это может быть грубая модель того, как трудно связаться, а затем передать, возможно, значительное количество информации через посредников (друзей). В терминах CS (а не в терминах физики) это может быть истолковано как пропускная способность между двумя узлами в графе. Расширения этой системы должны были бы разрешать различные виды связей между людьми с разным весом (сопротивлением, пропускной способностью и т. Д.) И действовать, как указано выше.

Patrick87
источник
10

По этой проблеме проделана большая работа, так как популярность социальных сетей резко возросла. Проблема обычно называется «Предсказание ссылок», и очень хорошие и всесторонние обзоры можно найти здесь и здесь . Методы варьируются от очень простых (например, сходство Жакара между узлами) до очень сложных (например, построение статистических моделей процесса генеративной связи). Это во многом зависит от конкретных функций, доступных в вашем наборе данных (например, только структура сети, атрибуты узла ?, атрибуты ребер, ...), но эти опросы помогут вам понять, с чего начать.

Ник
источник
4

Отказ от ответственности: я дико догадываюсь здесь; Я не читал ни одного жанрового исследования.

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

Каждый узел (человек или какая-то другая концепция) имеет набор соединений . Теперь, учитывая два узла и , предлагает к еслиC N N 1 N 2 N 2 N 1NCNN1N2N2N1

|CN1CN2||CN1|α

для некоторого разумного (и наоборот).α[0,1]

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

SN={M:|CNCM|Nα}

и множество правдоподобных предложений

{S:MSN[SM]|SN|β}

снова для разумного .α,β[0,1]

На самом деле вы наверняка захотите оценить индивидуальные связи; например, элементы которыми вы уже связаны, должны иметь больший импорт, чем те, которые находятся далеко от вас.SN

Рафаэль
источник