Diberikan data akses situs web dalam formulir session_id, ip, user_agent
, dan cap waktu opsional, mengikuti kondisi di bawah ini, bagaimana cara terbaik Anda mengelompokkan sesi menjadi pengunjung unik?
session_id
: adalah id yang diberikan kepada setiap pengunjung baru. Itu tidak kedaluwarsa, namun jika pengguna tidak menerima cookie / menghapus cookie / perubahan browser / perubahan perangkat, ia tidak akan dikenali lagi
IP
dapat dibagikan di antara pengguna yang berbeda (Bayangkan kafe wi-fi gratis, atau ISP Anda yang mengatur ulang IP), dan mereka akan sering memiliki setidaknya 2, rumah dan kantor.
User_agent
adalah versi browser + OS, memungkinkan untuk membedakan antara perangkat. Misalnya, pengguna cenderung menggunakan ponsel dan laptop, tetapi tidak mungkin menggunakan laptop windows + apple. Tidak mungkin id sesi yang sama memiliki beberapa agen pengguna.
Data mungkin terlihat seperti biola di sini: http://sqlfiddle.com/#!2/c4de40/1
Tentu saja, kita berbicara tentang asumsi, tetapi tentang mendapatkan sedekat mungkin dengan kenyataan. Misalnya, jika kita menemukan ip dan agen yang sama dalam kerangka waktu terbatas dengan session_id yang berbeda, itu akan menjadi asumsi yang adil bahwa itu adalah pengguna yang sama, dengan beberapa pengecualian kasus tepi.
Sunting: Bahasa di mana masalah diselesaikan adalah tidak sopan, sebagian besar tentang logika dan bukan implementasi. Kodesemu baik-baik saja.
Sunting: karena sifat biola yang lambat, Anda dapat membaca / menjalankan mysql sebagai alternatif:
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
sumber
Tidak banyak yang dapat Anda lakukan hanya dengan data ini, tetapi sedikit yang dapat Anda lakukan tidak bergantung pada pembelajaran mesin.
Ya, sesi dari IP yang sama tetapi Agen-Pengguna yang berbeda hampir pasti adalah pengguna yang berbeda. Sesi dengan IP dan User-Agent yang sama biasanya merupakan pengguna yang sama, kecuali dalam hal proxy / titik akses wi-fi. Yang mungkin Anda identifikasi dengan melihat distribusi jumlah sesi per IP untuk mengidentifikasi kemungkinan IP 'agregat'. Sesi dari IP / User-Agent yang sama yang tumpang tindih dalam waktu hampir pasti berbeda.
Untuk lebih membedakan pengguna Anda perlu info lebih lanjut. Misalnya, situs atau alamat IP yang terhubung dengan pengguna akan menjadi dasar yang sangat kuat untuk sesi pembeda. Kemudian Anda bisa masuk ke pembelajaran yang lebih canggih untuk mencari tahu kapan sesi adalah pengguna yang sama atau berbeda.
sumber