Кластеризація унікальних відвідувачів за допомогою useragent, ip, session_id


15

З огляду на дані про доступ до веб-сайтів у формі session_id, ip, user_agentта, можливо, часову позначку, дотримуючись наведених нижче умов, як ви найкраще класифікувати сеанси в унікальних відвідувачів?

session_id: - це ідентифікатор, який надається кожному новому відвідувачеві. Він не закінчується, проте якщо користувач не приймає файли cookie / очищення файлів cookie / зміни браузера / зміни пристрою, він більше не буде розпізнаний

IP їх можна ділитися між різними користувачами (уявіть собі безкоштовне кафе Wi-Fi або ваш Інтернет-провайдер, який переставляє IP-адреси), і вони часто матимуть як мінімум 2 дому та роботи.

User_agent- це версія браузера + ОС, що дозволяє розрізняти пристрої. Наприклад, користувач, швидше за все, буде використовувати телефон і ноутбук, але навряд чи використовувати Windows + Apple ноутбуки. Навряд чи той самий ідентифікатор сеансу має кілька користувачів.

Дані можуть виглядати як загадка тут: http://sqlfiddle.com/#!2/c4de40/1

Звичайно, ми говоримо про припущення, але мова йде про наближення до реальності, наскільки це можливо. Наприклад, якщо ми зустрічаємо одних і тих же ip та useragent у обмежені часові рамки з іншим session_id, було б справедливим припущенням, що це той самий користувач, за винятком кращих випадків.

Редагувати: мова, якою вирішується проблема, є невиправданою, здебільшого мова йде про логіку, а не про реалізацію. Псевдокод - це добре.

Редагувати: через повільний характер загадки ви можете альтернативно читати / запускати mysql:

select session_id, floor(rand()*256*256*256*256) as ip_num , floor(rand()*1000) as user_agent_id
from 
    (select 1+a.nr+10*b.nr as session_id, ceil(rand()*3) as nr
    from
        (select 1 as nr union all select 2 union all select 3   union all select 4 union all select 5
        union all select 6 union all select 7 union all select 8 union all select 9 union all select 0)a
    join
        (select 1 as nr union all select 2 union all select 3   union all select 4 union all select 5
        union all select 6 union all select 7 union all select 8 union all select 9 union all select 0)b
        order by 1
    )d
inner join
    (select 1 as nr union all select 2 union all select 3   union all select 4 union all select 5
    union all select 6 union all select 7 union all select 8 union all select 9 )e
    on d.nr>=e.nr

Відповіді:


9

Однією з можливих можливостей (а це дійсно розширення того, що розміщував Шон Оуен) є визначення "стабільного користувача".

Для даної інформації, яку ви маєте, ви можете уявити собі user_id, який є хешем ip та деякою інформацією про агента користувача (псевдокод):

uid = MD5Hash(ip + UA.device + UA.model)

Потім ви позначите ці ідентифікатори "стабільним" або "нестабільним" на основі евристики використання, яку ви спостерігаєте для своїх користувачів. Це може бути поріг # відвідувань у певному часовому вікні, тривалість часу збереження файлів cookie, деяка кінцева дія на вашому веб-сайті (я розумію, це не було зазначено у вашому оригінальному журналі) тощо.

Ідея тут полягає в тому, щоб відокремити користувачів, які не скидають файли cookie, від тих, що роблять.

Звідси ви можете віднести session_ids до стабільних UID із своїх журналів. Тоді вам залишиться "залишилося" session_ids для нестабільних користувачів, про які ви відносно не впевнені. Ви можете бути над чи під час підрахунку сеансів, приписуючи поведінку декільком людям, коли є лише один і т. Д. ... Але це принаймні обмежується користувачами, про яких ви зараз "менш певні".

Потім ви виконуєте аналітику на стабільній групі та проектуєте її на нестабільну групу. Візьмемо, наприклад, кількість користувачів, ви знаєте загальну кількість сеансів, але ви не знаєте, скільки користувачів створили ці сеанси. Ви можете знайти # сесії / унікального стабільного користувача та використовувати це для проектування "орієнтовної" кількості унікальних користувачів у нестабільній групі, оскільки ви знаєте кількість сеансів, віднесених до цієї групи.

projected_num_unstable_users = num_sess_unstable / num_sess_per_stable_uid

Це не допомагає досліджувати нестабільних користувачів на рівні кожного користувача, але ви можете принаймні отримати деякий пробіг із групи стабільних користувачів, які зберігаються деякий час. Ви можете за різними методами проектувати поведінку і зараховувати до нестабільної групи. Наведене вище - простий приклад того, що ви можете хотіти знати. Загальна ідея знову полягає в тому, щоб визначити набір користувачів, яких ви впевнено наполягаєте, виміряти те, що ви хочете виміряти, і використовувати певні основні істини (пошук чисел, відвідування, кліки тощо) для проектування у невідомий простір користувача та оцінки розраховує на них.

Це давня проблема унікального підрахунку користувачів, реєстрації даних тощо ... для служб, які не потребують входу.


Дуже гарна відповідь! Для тих, хто читає, я хотів би додати, що у випадку сторонніх файлів cookie багато мобільних версій safari не приймуть їх за замовчуванням, а інші веб-переглядачі мають те саме в своїх конвеєрах. Майте на увазі це і поводьтеся з ними окремо.
АдріанБР

1
Печиво з печивом - це проблема для служб, які не потребують входу. Багато користувачів просто не розуміють файли cookie, тому ви, ймовірно, маєте певну когорту, за якою ви можете стежити протягом значного часу.
cwharland

6

З цим даними можна зробити не так багато, але те, що ти мало можеш зробити, не покладається на машинне навчання.

Так, сеанси одного і того ж IP, але різні користувацькі агенти майже напевно відрізняються від користувачів. Сесії з тим самим IP-адресою та Користувачем-агентом, як правило, є одним і тим же користувачем, за винятком випадків доступу до проксі-серверів / точок доступу Wi-Fi. Ті, кого ви можете ідентифікувати, переглянувши розподіл кількості сеансів на IP для виявлення ймовірних "сукупних" IP-адрес. Сеанси того ж IP / User-Agent, які перетинаються в часі, майже напевно відрізняються.

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


У контексті можна відслідковувати інформацію на одному веб-сайті за допомогою файлу cookie третьої сторони за допомогою iframe. Сайт буде електронною комерцією. Я вважаю, що аналітика Google в основному дивиться на IP, іноді на useragent, і я можу отримати дуже схожі цифри, якщо дивитися лише на IP у часові рамки. Але, як відомо, аналітика Google переоцінила на 30%, залежно від контексту
AdrianBR

Перегляд відвіданих сторінок товарів теж не дуже допомагає, оскільки структура магазину така, що призводить користувачів до заздалегідь визначених шляхів, що призводить до дуже подібної поведінки
AdrianBR

1
Також мені відомо, що ML не вписується в контекст цього питання. Швидше за все, жорсткі алгоритми використовуються в більшості рішень для відстеження, які пропонують розумні результати. Останні кілька ступенів точності, які можна було б досягти за допомогою ML, є менш актуальними, оскільки ця інформація скоріше використовується для спостереження за тенденціями.
AdrianBR
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.