9 лет назад 23 апреля 2015 в 0:37 1335

Крупные сетевые сервисы, работающие при высоких нагрузках и полезные миллионам людей, – настоящее чудо техники. Давайте попробуем, не скатываясь в оптимизаторские детали, разобраться, как работает ранжирование в Facebook. Почему в ленту новостей попадают одни публикации и не попадают другие? Можно ли самому повлиять на наполнение ленты Facebook? Надо заметить, что некоторые моменты будут справедливы не только для «лицокниги», но и для других социальных сетей. Итак, как это работает: рейтинги Facebook.

До 2013 года алгоритм сортировки и ранжирования записей в Facebook обладал собственным именем: EdgeRank. Потом, после того как стала использоваться более сложная технология, основанная на машинном обучении, представители Facebook избегали пользоваться этим названием. Поскольку другого обозначения не предложили, имя EdgeRank в публикациях встречается по сей день. Но с точки зрения конечного пользователя, который открывает свою страничку в браузере, не так уж и важно, как называется алгоритм, который отвечает за наполнение ленты новостей. Главное, чтобы он хорошо работал.

В чем же состоят технические сложности? Социальные сети стремятся подталкивать своих пользователей к тому, чтобы они совершали как можно больше действий, вовлекаясь тем самым в сообщество. Один из видов таких действий, причем действий ценных с точки зрения соцсети, – это оформление подписок на обновления профилей других пользователей, страниц групп, разнообразных организаций и отдельных персон. Условно говоря, брендов. Пока таких подписок не так много, проблемы нет – достаточно отсортировать новости по какому-либо формальному признаку. Например, вывести их в обратном хронологическом порядке, разместив наверху свежие сообщения. Со временем, если все идет по плану, пользователь обрастает друзьями (по умолчанию при этом включается подписка на обновления их профилей), вступает в группы, лайкает тематические страницы. Поток новостей резко растет. Но поскольку абсолютных соцсетевых зомби, к счастью, не так много, как это частенько пытаются представить, большая часть таких обновлений не просматривается, поскольку человек через некоторое время закрывает страничку соцсети и переключается на что-то другое. Конечно же, соответствующая статистика поведения собирается и тщательно анализируется. В частности, подсчитано, что в ленте новостей средний пользователь Facebook проводит примерно 40% времени. Вот тут-то и возникает задача: как за естественным образом ограниченный бюджет времени показать пользователю как можно больше действительно интересных вещей, заодно продвинув и сообщения в рамках маркетинговых и рекламных кампаний? Это уже не отвлеченная проблема, а вопрос бизнеса. Кстати говоря, знание того, как работает алгоритм формирования ленты новостей, полезно и нам, обычным юзерам. Дело в том, что алгоритм действительно пытается угадать, что нам по-настоящему важно. Если знать, как ему помочь, можно получить более интересную ленту, отсекая неизбежно появляющийся, к сожалению, балласт. На этом, думаю, хватит общей теории – приступим к вивисекции.

За наше внимание борются сотни публикаций. Определение победителей – сложная, но интересная задача. Алгоритм построения ленты новостей учитывает тысячи факторов. Для удобства можно выделить несколько основных компонентов: Affinity, Weight и Time Decay. Итоговый рейтинг публикации в ленте формируется путем объединения этих значений.

Affinity («Сходство») учитывает ваши взаимоотношения с пользователями и страницами, чьи публикации претендуют на попадание в вашу ленту. Чем больше действий вы совершали на чьей-то страничке, тем выше вероятность того, что ее обновления попадут к вам в ленту. Если вы ставили лайки, переходили по опубликованным ссылкам или тем более оставляли комментарии, ваше личное значение сходства, родства с данной страницей или пользователем растет. И наоборот, если вы никак не взаимодействуете с чьими-то публикациями, постепенно они будут вымываться из вашей ленты новостей. В связке с Affinity используется второй признак – Last Actor. Это перечень пятидесяти ваших последних действий в Facebook. Новости от страниц и пользователей, попавших в этот список, получают дополнительное преимущество при ранжировании. Соответственно, если вы регулярно куда-то заходите, не сомневайтесь: новости из этого источника в вашей ленте будут не менее регулярными. Относительно недавно даже в оповещения стали выноситься новости о популярных постах в тех группах, на которые вы подписаны.

Есть и рычаги прямого воздействия. Обратите внимание на выпадающее меню под кнопками «Нравится» и «Уведомления». Помимо пункта «Получать уведомления» там есть несколько вариантов выбора количества таких уведомлений. Кроме прямого влияния на получение уведомлений это окажет воздействие и на позиции публикаций в вашей ленте новостей.

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

«Устаревание» – позволю себе так перевести «Time Decay» – опирается на время публикации сообщения. Точнее, на время, которое прошло от момента его публикации до момента, когда вы открываете свою ленту новостей. В общем случае более свежие посты обладают наивысшим приоритетом, однако есть и нюансы. Далеко не все пользователи живут в соцсети. Есть люди, которые могут заглядывать на страничку, например, раз в неделю, а то и реже. Очевидно, что простой хронологический порядок в таком случае будет не совсем удачен. Да и активные пользователи нуждаются в более интеллектуальной обработке очереди новостей. Если подписок много, обновлений, соответственно, тоже, то за несколько минут просмотра ленты до многих обновлений юзер просто не долистает. Не отправлять же их сразу на свалку, заменяя новыми! Для обработки таких ситуаций, в частности, служит отдельный алгоритм Story Bumping. Логика его работы состоит в том, что релевантность все-таки должна цениться больше, чем время публикации. Если сообщение было размещено на странице, с которой вы активно взаимодействовали в последнее время, оно попадет в топ вашей ленты новостей, даже если вы заглянете на свою страничку через несколько дней после того, как оно было опубликовано.

Наконец, при расчете рейтинга сообщения учитывается и негативная обратная связь. Как известно, на любой пост можно пожаловаться. Заметное количество жалоб топит сообщение. А уж если юзер сподобился открыть контекстную менюшку поста и собственноручно кликнуть по пункту «Я не хочу это видеть», шансы на попадание в ленту новых публикаций из соответствующего источника стремительно тают.

Как и в случае с любым другим сложным алгоритмом, работающим с большим количеством параметров, о EdgeRank ходит немало слухов. Например, говорят о том, что страницам и пользователям присваивается постоянный рейтинг. Это не так, он изменчив. Во-первых, постоянно меняются сами алгоритмы расчета рейтинга. Во-вторых, привлекательность какой-либо конкретной странички все равно рассчитывается индивидуально для каждого взаимодействующего с ней пользователя. Постоянный рейтинг банально не будет работать. Еще один миф связан с тем, что публикации, сделанные с помощью сторонних приложений, получают меньший рейтинг, чем сделанные напрямую на сайте или с помощью фирменных приложений Facebook. Народ проверял, причем проверял внимательно. Не подтверждается: разница если и есть, то в пределах погрешности измерения.

Наконец, есть мнение, что введено ограничение на количество обновлений из одного источника, которые попадают в ленту новостей пользователя. Здесь следует учитывать, что причины могут быть вполне понятны. Чем больше друзей и подписок, тем выше конкуренция между постами за место в ленте новостей. Естественно, шансы будут распределяться иначе. Но от себя добавлю, что, если вы активно взаимодействуете с пользователем или страницей, новости, даже частые, урезаться не будут. Я еще не пропустил по этой причине ни одного обновления от действительно интересных мне источников. А уж если вы администрируете какую-либо группу или страницу, ее обновления точно будут приходить в полном объеме. Так что рецепт прост: лайкайте и обсуждайте то, что вам интересно. Новинки таких страничек благодаря Story Bumping найдут вас даже через несколько дней.

Глядя на принципы работы алгоритма наполнения ленты новостей, становится понятно, что общего рецепта удачных публикаций, скорее всего, не бывает. Слишком много индивидуальных рейтингов, а у каждой страницы и пользователя свои посетители и друзья. С другой стороны, общие признаки потенциально успешных постов также становятся понятны. Регулярные публикации, относительно равномерно распределенные по дням недели, обладают хорошими шансами на попадание в ленты новостей. Такая регулярность подпитывает счетчик Time Decay, не дает списать новости в «старости». Также куда выгоднее публиковать посты с изображениями и другим мультимедиа, чем просто текстовые простыни. Кстати говоря, в некоторых группах Facebook даже существует правило: каждая публикация оформляется картинкой, а основной текст сообщения уже идет подписью к ней. Почитать его проблемы не составит. Помимо большей заметности в ленте новостей такой подход дает и другой бонус. Facebook плохо подходит для накопления контента – интересные темы и обсуждения быстро уползают вниз. Отыскать их потом – проблема. А уникальные картинки запоминаются и аккуратно группируются в альбоме группы. Не бог весть какое решение, но поиск старых тем реально упрощает. Поскольку взаимодействие посетителей с публикацией важно для ее рейтинга и заметности, необходимо всячески его подкармливать: устраивать опросы, провоцировать обсуждения. В конце концов, готовить интересные материалы, не писать ерунды. Новые посты после хорошей реакции сразу получат преимущество при сортировке новостей для индивидуальных лент. Ну и, наконец, не распространяйте спам. Жалобы утопят не только сомнительную публикацию, но и негативно скажутся на шансах последующих заходов.

Никто не прокомментировал материал. Есть мысли?