Чтобы увеличить число подписчиков, нужно чтобы тебя заметили. Это можно сделать разными способами, но самый простой и рабочий – это подписаться на кого-нибудь и полайкать его фотографии в надежде, что человек сделает то же самое в ответ. Бездумно это делать не охота по двум причинам: это очень похоже на спам, и на количество таких действий существует ограничение. Поэтому нужно было придумать, как фолловить только тех, кто с большой вероятностью подпишется в ответ.
Сначала я рандомно подписался на две-три тысячи человек, пока ездил в автобусе на работу и с работы, после этого я выписал в таблицу те три числа, которые есть в профиле пользователя: число постов Np, число подписок Nf и число подписчиков Nfd. В последний столбец M таблицы я занёс информацию о том, подписался ли пользователь на меня в ответ или нет.
Казалось правдоподобным следующее.
- Чем больше у человека подписок, тем скорее пользователь и на меня подпишется.
- Чем больше отношение числа подписок на число постов, тем скорее пользователь на меня подпишется. (Так как чем больше постов, тем старее аккаунт. А если аккаунт создан давно, а подписок мало, то пользователь не заинтересован подписываться на других.)
- Чем больше отношение числа подписок на число подписчиков, тем скорее пользователь на меня подпишется. (Наблюдение показывает, что это число мало для магазинов, ботов, известных личностей и т. п. и близко к 1 для обычных людей.)
Эксперименты с визуализацией показали, что всё лучше выглядит в логарифмических координатах. Хотя облака точек сильно пересекаются, можно построить какой-нибудь классификатор и посмотреть, что получится.
Воспользовавшись методом опорных векторов, я получил следующий линейный классификатор, который согласуется с тем, что ожидалось:
–0.19 log Nfd + 0.42 log Nf – 0.18 log Np > 0.57.
После этого дело пошло веселее: на процентов 20 больше подписывались на меня обратно, то есть примерно каждый четвёртый-пятый. Но это не тот результат, который я хотел. Нужно было придумать что-то лучшее.
На извлечение какой-то ещё информации, помимо названых трёх чисел, не хотелось тратить времени, поэтому я подумал, а что будет, если посмотреть снова на эти параметры, но через три дня.
Снова набрав данных, я стал играться с разными комбинациями этих величин. И оказалось, что очень хорошего результата можно достичь, добавляя всего один фактор — на сколько увеличилось число подписок у аккаунта. Оказывается, что чем больше человек зафолловил людей за три дня, тем больше шанс, что он зафолловит и меня.
Тут тоже всё лучше с логарифмами, поэтому новый фактор в итоге выглядит так: log+(N'f – Nf), где разность N'f – Nf — это изменение числа подписок за три дня,
Такая функция позволяет избежать проблем с логарифмированием отрицательных значений. Также люди, у которых число подписок уменьшается, нам скорее всего не интересны.
Метод опорных векторов даёт следующий линейный классификатор:
–0.06 log Nfd + 0.17 log Nf – 0.10 log Np + 0.16 log+(N'f – Nf) > 0.55.
Так как ошибка, когда мы не подпишемся на человека, который бы подписался на нас, нас особо не интересует, мы можем немного увеличить правую часть неравенства, чтобы ещё улучшить результат. В итоге, обратно подписывался на меня примерно каждый второй.
Ниже приведены ROC-кривые для двух полученных классификаторов.
Через 87 дней, заполучив 10000 подписчиков, я остановился. Среднее число лайков последних 15 постов оказалось равным 490, что почти равно числу, к которому я стремился. Учитывая, что я максимизировал число подписчиков, а не число лайков, то я считаю этот результат неплохим, тем более что он близок к среднему значению для подобного аккаунта.
Самым же интересным для меня в этом эксперименте оказался четвёртый фактор — изменение числа подписок за три дня. Он оказался очень простым и при этом неожиданно очень значимым.
Комментарии (38)
MisterParser
24.04.2018 09:28+1Спасибо, надо будет попробовать.
Вы вручную всех фоловили или же написали какой-то скрипт?
Не совсем понятно откуда брать исходный список пользователей, который уже фильтровать по описанным вами уравнениям.mkot
24.04.2018 10:08Про вручую — у меня столько времени не было.
Исходный список пользователей — те, которые постят фотографии с такими же как у меня тегами, например.
decomeron
24.04.2018 12:03Чем бы дитя не тешилась
shomnest
24.04.2018 18:31Зря вы так, за подобным анализом данных кроется много интересной инфы, которую можно использовать не только в качестве развлечения.
decomeron
24.04.2018 23:20Например?
И почему бы не использовать эти знания не только в качестве развлечния?
Я до сих пор не пойму, зачем все эти лайки? Тем более тех, кто их ставит с закрытыми глазами, что бы и себе что то поиметь от этого. Не лучше ли немного, но честноshomnest
25.04.2018 07:24На дворе век коммерции и, практически, все поддается монетизации, в том числе и лайки.
Тут нужно шире, что ли, мыслить — палка не только для того, что бы на земле ей валяться, из нее можно разжечь огонь, изготовить копье, молоток, удочку. Так и здесь, представленный эксперимент дает тему для размышлений о использовании этой информации и способах развития темы.
spiiin
24.04.2018 17:37Трижды пробежался по статье, что найти, какой из факторов четвёртый. Это тоже ваша хитрость для того, чтобы статью внимательнее читали?
greabock
24.04.2018 17:54Разница в количестве подписок за прошедшее время, по всей видимости.
Идея в следующем: если за установленный промежуток времени, количество подписок субъекта значительно увеличилось, то предположительно субъект в «активной фазе» и продолжает наращивать подписки. Следовательно, можно попробовать его «выжать» на предмет ответной подписки.
k0nst
24.04.2018 18:31Очень интересно. Мне кажется так можно вовлекать в математику молодое поколение. Они все в соц сетях, им это нравится, так почему-бы не испольовать в падагогических целях? «Ребята, сегодня мы посмотрим как математка может помочь Вам нагнать 10 000 подписчиков на ваш аккаунт»
JackFrostDeCuba
24.04.2018 18:31Нет фотографий няшных котиков. КГ/АМ
mkot Автор
24.04.2018 18:35Я уже написал не мало хабрастатей с котиками
habr.com/post/126869
habr.com/post/231699
habr.com/post/135344
habr.com/post/230009
но не всё же о них писать.
xWIMx
24.04.2018 18:31Здравствуйте.
У меня пара вопросов возникло:
- скрипт, который использовали для подписки — где прочитать можно;
- откуда взяли формулы, почему именно таким образом — подскажите, что можно прочитать.
Я матмех окончил, но решение подобных задач почему-то мне не ясно, поэтому интересно очень прочитать))
mkot Автор
24.04.2018 18:391. базовый код легко найти в интернете.
2. формулы — просто линейные классификаторы, см., например, www.machinelearning.ru/wiki/index.php?title=%D0%9B%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80.
worldnomad
24.04.2018 18:31ага. так вот каких юзеров я я постоянно блокирую в фейсбуке :)
а если серьезно, то для меня имеют значение только реальные люди, которым реально нравится. в ярмарке тщеславия не участвую.mkot Автор
24.04.2018 18:40в своём реальном аккаунте, я тоже блокирую :)
worldnomad
24.04.2018 21:40ясно :) все накрутки плохи тем, что за ними не стоит искренности, искреннего интереса. да, возможно ты поднимаешься в топе, на выдачах. но всё это фейк. и, например, фейсбук кмк понимает, что накрутки — они есть. поэтому я часто вижу уведомления о лайках моей странице, но в общем количестве они не появляются сразу. у меня подозрение, что фейсбук проверяет активность «лайкнувших», кто они, что они, не фейковые ли аккаунты.
и чем выше популярность твоей страницы — тем сильнее проверки. ну, может я и придумываю сам себе конечно :)grinCo
25.04.2018 02:03Cкорее всего кэш.
worldnomad
25.04.2018 09:31эм-м… не понял. можно пояснить про кэш?
grinCo
25.04.2018 18:38Я не знаю как у них там реализовано, но вполне возможно, что когда кто-то нажимает лайк, выполняется сохранение этой информации в БД и тригерится нотификейшн. А для отображения информации о лайках (цифры) инфа тянется не из БД, а из кэша, который обновляется переодически.
exebit
24.04.2018 18:31+1«Чем больше пользователь фоловит каждый день, тем вероятнее, что он подпишется на тебя». Можно повысить качество подписчиков, удаляя тех, кто не никогда лайкает, и одновременно продолжая хантинг новых фоловеров.
zojl
24.04.2018 18:31Было бы здорово, если бы кто-нибудь из присутствующих на рынке «накрутчиков» в такое умел. А то сейчас большинство берёт деньги за абсолютно бездумный массфоловинг просто по спискам, от которого отдачи очень мало, соответственно, задачу заказчика «а накрутите мне условные 5к подписчиков» они выполняют медленнее, чем могли бы.
mvngr
24.04.2018 19:52На каждого автоматического "подписчика" кидаю репорт с причиной «Спам». Считаю неприемлемым рекламировать своё творчество, на которое ты тратишь много времени подобным способом.
Как выглядят ответы на репорты о спаме в instagramp.s. Большинство аккаунтов просто идут на удаление, так как это «одноразовые» аккаунты для рекламы казино и прочего. На данном скриншоте запечатлены как раз благодарности за репорты на аккаунты разнообразных «блоггеров», которые при помощи софта подписывались в том числе и на меня
DanielJ
24.04.2018 19:52-1Лучше бы учился снимать, и получать «честные» лайки, полезнее было бы, для себя.
shomnest
25.04.2018 07:28Социальная инженерия с элементами математики — занятно, занятно)
Вот за что и люблю математику — способность описать все в выражениях и проанализировать до максимума, с минимальными погрешностями.
fearde
26.04.2018 21:13А это очень круто. Я сам по образованию инженер, по призванию сммщик (и другая реклама), тоже математические штуки типа вывода формул иногда делаю, но простейших. А тут всё очень и очень четко, такие люди нужны в рекламных агентствах для подсчета улучшения конверсий
keydon2
Сейчас бы за собаками гнаться в 2018 году.
mkot
Раз в год интересно анализ данных повспоминать на простых задачах, чтоб не забыть.