Как посмотреть возможных друзей в вк
Перейти к содержимому

Как посмотреть возможных друзей в вк

  • автор:

Возможные друзья ВКонтакте

#ОкейГик

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

Как посмотреть возможных друзей ВКонтакте

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

vozmoshnie druzya

Каждый раз, когда вы заходите на страницу, он формируется по-новому. В этом блоке выводится 5 человек, которых вы можете знать. Если вы хотите посмотреть больше возможных друзей, нажмите в данном блоке на кнопку «Показать всех».

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

vozmoshnie druzya

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

Как определяются возможные друзья ВКонтакте

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

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

Как посмотреть скрытых друзей «ВК»

Article Image

Можно ли найти друзей, которые были скрыты другим пользователем?

Алгоритм работы соцсети VK позволяет скрывать как всех друзей, так и некоторых из них. При этом в настройках приватности можно выбрать людей, которым эта информацию все равно будет доступна. Но даже если вы не попали в список этих юзеров, то все равно сможете узнать «секретную информацию». Как? Рассказываем в следующей главе.

ВАЖНО! Вы не сможете узнать скрытых друзей на странице другого пользователя только в том случае, если он закроет свой аккаунт.

2 способа найти друзей, которые были скрыты

Любопытные люди всегда смогут найти нужную информацию. Если вы хотите узнать, кого из друзей скрывает другой пользователь VK, то воспользуйтесь одним из двух способов.

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

ВАЖНО! Найти скрытого пользователя вручную не получится, если страница человека, с которым он дружит, закрыта или если они скрыли друг друга.

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

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

2. Поиск с помощью специальных приложений.

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

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

Инструкция по работе с сервисом:

  • перейдите на главную страницу сервиса по ссылке;
  • авторизуйтесь и разрешите сервису обрабатывать данные;
  • зайдите в раздел «Главная» и введите ID интересующего вас пользователя (скопируйте информацию из поисковой строки браузера на главной странице профиля);
  • нажмите на кнопку «Сканировать»;
  • выберите интересующий вас инструмент (в данном случае – количество скрытых друзей).

ВАЖНО! К сожалению, многие пользователи отмечают, что сервис 220vk работает некорректно. Наиболее частые проблемы – всплывающие уведомления о лимите запросов и блокировка страницы с последующим обнулением результатов.

Vk.city4me – это еще одно приложение, которое является аналогом предыдущего сервиса. Оно помогает находить скрытых друзей при условии отсутствия закрытых аккаунтов и взаимного скрытия.

Инструкция по работе с сервисом:

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

Скорость проверки напрямую зависит от количества друзей, которые добавлены у интересующего вас пользователя: чем их больше, тем дольше будет длиться сканирование. О завершении процесса будет свидетельствовать статус «100 %», после чего на экране появятся результаты.

ВАЖНО! Применение программ 220vk и Vk.city4me не противоречит законодательству, так как их работа основана на анализе списка друзей.

Этическая сторона вопроса

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

ЛАЙФХАК. Если вы хотите, чтобы вашего секретного товарища не могли найти, то просто не добавляйте его к себе в друзья.

Заключение

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

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

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

Рекомендации друзей ВКонтакте: ML на эго-графах

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

Меня зовут Женя Замятин, я работаю в команде Core ML ВКонтакте. Хочу рассказать, как устроены рекомендации, которые делают ближе пользователей самой крупной социальной сети рунета.

Обзор

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

Прежде всего сформулируем задачу, которую будем решать: для каждого пользователя необходимо найти k кандидатов, которых он с наибольшей вероятностью добавит в друзья. Метрика, на которую будем ориентироваться, — recall@k. Она идеально описывает задачу: на первом уровне нам не интересен порядок кандидатов, но важна их релевантность.

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

Ещё один важный метод рекомендаций — Adamic/Adar. В его основе лежит всё тот же анализ общих друзей, но с модификацией: авторы предлагают учитывать число друзей у «общего» друга. Чем больше это значение, тем меньше информации о релевантности он несёт.

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

EGOML

Общая схема нашего метода продолжает идеи числа общих друзей и Adamic/Adar. Финальная мера релевантности E(u, v) , с помощью которой мы будем отбирать кандидатов, всё так же раскладывается в сумму по общим друзьям u и v . Ключевое отличие — в форме слагаемого под суммой: в нашем случае это мера ez_c(u, v) .

Сначала попробуем понять «физический» смысл меры ez_c(u, v) . Представим, что мы взяли пользователя c и спросили у него: «Насколько вероятно, что два твоих друга, u и v , подружатся?» Чем больше информации для оценки он учтёт, тем точнее будет его предсказание. Например, если c сможет вспомнить только число своих друзей, его рассуждения могут выглядеть следующим образом: «Чем больше у меня друзей, тем менее вероятно, что случайные двое из них знакомы». Тогда оценка вероятность дружбы u и v (с точки зрения c ) может выглядеть как 1/log(n) , где n — число друзей. Именно так устроен Adamic/Adar. Но что если c возьмёт больше контекста?

Прежде чем отвечать на этот вопрос, разберёмся, почему ez_c(u, v) важно определять через пользователя c . Дело в том, что в таком виде очень удобно решать задачу распределённо. Представим, что теперь мы разослали всем пользователям платформы анкету с просьбой оценить вероятность дружбы в каждой паре их друзей. Получив все ответы, мы можем подставить значения в формулу E(u, v) . Именно так выглядит вычисление E(u, v) с помощью MapReduce:

  • Подготовка. Для каждого c выделяется тот контекст, который он будет учитывать для вынесения оценок. Например, в Adamic/Adar это будет просто список друзей.
  • Map. «Спрашиваем» у каждого c , что он думает про возможность дружбы в каждой паре его друзей. По сути, вычисляем ez_c(u, v) и сохраняем в виде (u, v) → ez_c(u, v) для всех u, v in N(c) . В случае Adamic/Adar: (u, v) → 1/log|N(c)| .
  • Reduce. Для каждой пары (u, v) суммируем все соответствующие ей значения. Их будет ровно столько, сколько общих друзей у u и v .

Таким образом мы получаем все ненулевые значения E(u, v) . Заметим: необходимое условие того, что E(u, v) > 0 , — существование хотя бы одного общего друга у u и v .

Эго-граф Хоппера

Контекстом пользователя c в случае меры ez_c будет тот же список друзей, но дополненный информацией о связях внутри этого списка. Такую структуру в науке называют эго-графом. Если более формально, эго-граф вершины x — это такой подграф исходного графа, вершинами которого являются все соседи x и сама x , а рёбрами — все рёбра исходного графа между этими вершинами. Коллеги из Одноклассников написали подробную статью об эго-графах и затронули в ней вопрос их эффективного построения.

Ключевая идея меры ez_c в том, что её можно сделать обучаемой. Для каждого пользователя c , его эго-графа и всех пар пользователей u , v внутри него мы можем посчитать много разных признаков, например:

  • число общих друзей u и v внутри эго-графа c ;
  • число общих друзей u и c ;
  • интенсивность взаимодействий между v и c ;
  • время, прошедшее с последней дружбы между u и кем-либо из эго-графа c ;
  • плотность эго-графа c ;
  • и другие.

Таким образом мы получим датасет с признаками. Но для обучения нужны ещё и метки. Пусть датасет был построен по состоянию графа на момент времени T . Тогда в качестве положительных примеров возьмём те пары пользователей, которые не были друзьями на момент T , но подружились к T + △T . А как отрицательные — все остальные, не подружившиеся, пары пользователей. Заметим: поскольку мы решаем задачу предсказания новых дружб, те пары пользователей, которые уже дружат на момент T , учитывать не нужно ни на обучении, ни на применении.

В конечном счёте мы получаем датасет следующего вида:

  • для каждой пары пользователей u и v , а также их общего друга c , посчитаны признаки по эго-графу c ;
  • пара пользователей u и v встречается в датасете ровно столько раз, сколько у них общих друзей;
  • все пары пользователей в датасете не являются друзьями на момент времени T ;
  • для каждой пары u и v проставлена метка — подружились ли они в течение определённого промежутка времени начиная с T .

По такому датасету мы и будем обучать нашу меру ez_c . В качестве модели выбрали градиентный бустинг с pairwise функцией потерь, где идентификатором группы выступает пользователь u .
По сути, мера ez_c(u, v) определяется как предсказание описанной выше модели. Но есть один нюанс: при pairwise-обучении распределение предсказаний модели похоже на нормальное. Поэтому, если в качестве определения меры ez_c(u, v) взять «сырое» предсказание, может возникнуть ситуация, когда мы будем штрафовать финальную меру E(u, v) за общих друзей, так как значения предсказаний бывают отрицательными. Это выглядит не совсем логично — хочется, чтобы с ростом числа общих друзей мера E(u, v) не убывала. Так что поверх предсказания модели мы решили взять экспоненту:

Такой подход хорошо себя показывает на небольших графах. Но чтобы применить его на реальных данных, необходимо выполнить ещё одно действие. Суть проблемы такая: мы не можем вычислять признаки и применять модель для каждой пары пользователей всех эго-графов — это слишком долго. Для решения мы придумали специальный трюк. Представим, что наш градиентный бустинг обучился таким образом, что каждое дерево использует признаки только одного пользователя: либо u , либо v . Тогда мы могли бы разделить весь ансамбль на две группы: к группе A мы бы отнесли деревья, которые используют только признаки пользователя u , к B — пользователя v . Предсказание такой модели можно представить в виде:

Имея такую модель, мы могли бы получить предсказания для всех пар пользователей одного эго-графа быстрее. Достаточно применить модели A и B для каждого пользователя, а затем сложить соответствующие парам предсказания. Таким образом, для эго-графа из n вершин мы могли бы сократить число применений модели с O(n^2) до O(n) . Но как получить такую модель, каждое дерево которой зависит только от одного пользователя? Для этого сделаем следующее:

  1. Исключим из датасета все признаки, которые одновременно зависят и от u и от v . Например, от признака «число общих друзей u и v внутри эго-графа c » придётся отказаться.
  2. Обучим модель A , используя только признаки на базе u , c и эго-графа c .
  3. Для обучения модели B оставим только признаки на базе v , c и эго-графа c . Также в качестве базовых предсказаний передадим предсказания модели A .

Если объединим модели A и B , получим то что нужно: первая часть использует признаки u , вторая — признаки v . Совокупность моделей осмысленна, поскольку B была обучена «корректировать» предсказания A . Эта оптимизация позволяет ускорить вычисления в сотни раз и делает подход применимым на практике. Финальный вид ez_c(u, v) и E(u, v) выглядит так:

Вычисление меры E в онлайне

Заметим, что E(u, v) можно представить в виде:

Эта формула — скалярное произведение разреженных векторов, индексами которых являются пользователи, а значениями — экспоненты предсказаний модели. Ненулевые значения здесь проставлены только у друзей u — по сути это просто списки друзей с дополнительными значениями.

При построении рекомендаций мы уже вычислили предсказания моделей для всех существующих дружб. Поэтому для каждого пользователя мы можем собрать векторы и сложить их в доступное онлайн key-value хранилище. После этого сможем получать значение E(u, v) для любой пары пользователей в онлайне простой операцией перемножения векторов. Это даёт возможность использовать E(u, v) как лёгкую функцию релевантности в нагруженных местах либо как дополнительный признак финальной модели ранжирования.

Итог

В результате система EGOML позволяет:

  1. Распределённо отбирать кандидатов для каждого пользователя в офлайне. Асимптотическая сложность оптимизированного алгоритма составляет O(|E|) вычислений признаков и применений модели, где |E| — число связей в графе. На кластере из 250 воркеров время работы алгоритма составляет около двух часов.
  2. Быстро вычислять меру релевантности E(u, v) для любой пары пользователей в онлайне. Асимптотическая сложность операции O(|N(u)| + |N(v)|) .
  3. Улучшать качество рекомендаций, расширяя количество учтённых графов (по дружбам, скрытиям рекомендаций, отправленным сообщениям и другим графам) и добавляя всевозможные метки на рёбра и вершины. Например, интенсивность взаимодействий на ребре, дату образования ребра, город, место работы или учёбы пользователя.

В конечном счёте мы перешли со способа отбора кандидатов с использованием Adamic/Adar к системе EGOML и внедрили в модель второй уровень признаков на основе меры E(u, v) . И это позволило увеличить количество подтверждённых дружб со всей платформы на несколько десятков процентов.

Благодарность

Хочу сказать спасибо руководителю команды Core ML Андрею Якушеву за помощь в разработке метода и подготовке статьи, а также всей команде Core ML — за поддержку на разных этапах этой работы.

  • машинное
  • рекомендательные системы
  • bigdata
  • алгоритмы
  • link prediction problem
  • mapreduce
  • графы
  • рекомендации
  • социальный граф

Возможные друзья вконтакте

Возможные друзья вконтакте

Привет! Миллионы людей заходят на сайт VK.COM ежедневно. Тысячи регистрируются каждый час. Большинство преследуют благую цель — найти друзей, родственников и пообщаться с ними. Если посмотреть на список друзей рядового пользователя, то там окажется около 150-200 человек, которые переплетены между собой — школьные, армейские, друзья по ВУЗу и тд. А если город не очень большой, то есть шанс увидеть в чужих друзьях кого угодно, начиная от «первой любви» и заканчивая «школьной учительницей». Именно поэтому была введена функция «ВОЗМОЖНЫЕ ДРУЗЬЯ».

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

Возможные друзья ВК

Возможные друзья ВК

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

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

Это так называемый «поиск для ленивых». Если у вас остались какие-либо вопросы по этой функции — спрашивайте в комментариях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *