Виявлення фейкових профілів в VK

Ботів відрізняти від людей і правда важкувато. Я й сам толком не можу це зробити. Але зате я придумав непоганий велоси… метод, як відрізняти в VK «цікавих людей» від «не дуже цікавих». У плані мережевого спілкування, природно, а не за життя.

Якщо вам друзі стукає хтось, а ви з першого погляду не можете зрозуміти це взагалі нормальна людина або хрін знає хто, що цей метод може дати трохи корисної інформації про користувача. Використовувати його для виявлення актуальних таргет-груп навряд чи вийде, тому що VK поставив обмеження на можливість скачування вмісту стін користувачів. Тобто можна, але треба сильно допрацьовувати, оптимізувати і вивертатися, щоб обходити обмеження.

Основна ідея

Основна ідея полягає в тому, що боти, похмурі (в мережевому плані) особистості, всякі масові збирачі друзів-передплатників не дуже дбають про те, хто у них в друзях, хоча можуть досить багато «писати» у себе на стіні змістовних постів. Але похмурі особистості свою стрічку особливо не читають, а ботам це взагалі не треба. Тим більше це не треба масовим збирачам передплатників і зіркам.

Але людям, які мають хоч якісь комунікативні інтереси щодо ВК, якраз дуже важливо, хто у них в друзях. І, звичайно, вони не будуть у себе в друзях збирати 6000 чуваків, які шапрять тільки репости, картинки голих баб і рекламу зливних бачків зі знижкою зі складу в Уренгої.

І на цій підставі можна спробувати скласти критерій, за яким виділяти людей, які цікавляться змістом своєї стрічки. Такі люди виявляють риси справжньої людини. Людини, який, як мінімум, здійснює змістовний односторонній комунікативний акт. В наш час це вже не так мало.

Читайте також  Як монтувати відео на комп'ютері за допомогою програми для монтування відео

Відразу мені в голову прийшли два критерію:

  • Середній словник друзів людини за N останніх постів.
  • Відсотковае кількість постів без текстів у друзів людини.

І на основі цього такого вже можна намагатися будувати якусь модель, яка б відрізняла цікавих людей від не дуже цікавих.

І в підсумку я це перевіряв?

Я вибрав 50 випадкових своїх друзів і 50 випадкових передплатників, які відповідали певним критеріям, які б відрізали зовсім очевидних фейків, дітей або людей, які не користуються цим всім. Типу того, що користувач не повинен бути деактивований і у нього має бути при цьому більше 50 існуючих друзів.

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

Далі у кожного з друзів перевіряється я брав перші 100 постів, якщо їх було стільки на стіні. Для кожної людини вважав два таких фактора:

  1. Середній розмір словника друзів людини за їх перші 100 постів. Тобто 50 друзів, у кожного приблизно по 100 постів. Для кожного друга всі слова з 100 постів сгрібаются в купу, стемміруются і вважається кількість унікальних слів одного. Далі вважається середнє для всіх 50-і друзів. Від цього значення брався корінь — SQRT(Dic).
  2. Якщо у одного більше 60 з 100 постів без слів, він позначається «втраченим». Відсоток «втрачених» людей в друзях це другий чинник — Percent.

Ще один чинник проявився випадково. Це логарифм від Айді в ВК log10(ID)

На цьому я навчив логістичну регресію, і отримав таку:

log(OR) = 9.92-1.537*log10(ID)+0.067*SQRT(Dic)-0.023*Percent

Для тестової частини вибірки вийшов дуже непоганий класифікатор з AUC = 0.93. Ось така у нього ROC крива:

Читайте також  У цій мережі Wi-Fi застосовується застарілий стандарт безпеки в Windows 10 — чому і що робити


ROC крива класифікатора, що визначає змістовність сторінки людини

Деякі питання викликає така значимість ID ВК для класифікації змістовності особистості, але здається, на жаль, воно так і працює. Чим далі ID від 1, тим більше ймовірність, що це просто бот, який зроблений, щоб рекламувати мікрокредити. Без ID класифікатор теж працює, але гірше. AUC = 0.78. Це не зовсім добре, але і не прям марно.

У будь-якому випадку, остаточне рішення щодо корисності персонажа за прийняте рішення.

Додаткова перевірка

Я взяв у одного з своїх товаришів всі його 5000 передплатників, де, звичайно, рекламного шлаку 95% і прогнав регресію без додаткового довчання. При відсіченні на 20%, результати вийшли такі TP = 78%, FP = 11%. Тобто, в цілому, назвичайній людині це теж більш-менш працює.

Можна робити ботів, які проходять цей тест?

Так, досить легко згенерувати бота у якого в оточенні друзів будуть якісь псевдозмістовні пости, але поки що це нікому не треба. Ну і важко з різним контентом морочитися, тому що якщо всім ботам один і той же генерувати, це теж легко розпізнати.

А чи не можна зробити додаток, який би людей по ID перевіряв?

Напевно можна, але мені влом робити прилу ВК. Якщо хто хоче, нехай сам зробить. Начебто метод описаний, ідея його нескладна.

Чи Не занадто банально?

Досить. Але раптом кому стане в нагоді як база для своїх розробок. Цей метод легко можна ускладнювати, наприклад, винятком не просто довжини словників, а враховуючи контент. Тут вже можна застосувати всю міць NLP і навчати по контенту. Ще можна брати більш складні класифікатори: дерева, нейромережі і т. д.

Читайте також  Хакатон ГАЗ — як доторкнутися до автогігантові

Степан Лютий

Обожнюю технології в сучасному світі. Хоча частенько і замислююся над тим, як далеко вони нас заведуть. Не те, щоб я прям і знаюся на ядрах, пікселях, коллайдерах і інших парсеках. Просто приходжу в захват від того, що може в творчому пориві вигадати людський розум.

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *