Benzersiz ziyaretçileri useragent, ip, session_id ile gruplandırma


15

Formdaki web sitesi erişim verileri session_id, ip, user_agentve isteğe bağlı olarak zaman damgası verildiğinde, aşağıdaki koşulları izleyerek, oturumları benzersiz ziyaretçilere en iyi nasıl kümeleyebilirsiniz?

session_id: her yeni ziyaretçiye verilen bir kimliktir. Süresi dolmaz, ancak kullanıcı çerezleri kabul etmez / çerezleri temizler / tarayıcıyı değiştirir / cihazı değiştirirse, artık tanınmayacak

IP farklı kullanıcılar arasında paylaşılabilir (Ücretsiz bir wi-fi cafe veya ISS'nizi yeniden atanan IP'leri hayal edin) ve genellikle ev ve iş için en az 2 tane olacaktır.

User_agenttarayıcı + OS sürümüdür, cihazlar arasında ayrım yapılmasına olanak tanır. Örneğin, bir kullanıcının hem telefon hem de dizüstü bilgisayar kullanması muhtemeldir, ancak windows + apple dizüstü bilgisayar kullanması pek olası değildir. Aynı oturum kimliğinin birden fazla kullanıcısı olması olası değildir.

Veriler burada keman gibi görünebilir: http://sqlfiddle.com/#!2/c4de40/1

Tabii ki varsayımlardan bahsediyoruz, ama bu gerçeğe olabildiğince yaklaşmakla ilgili. Örneğin, farklı bir session_id ile sınırlı bir zaman aralığında aynı ip ve useragent ile karşılaşırsak, bazı son durum istisnaları ile aynı kullanıcı olduğu makul bir varsayım olacaktır.

Düzenleme: Sorunun çözüldüğü dil irellevant, çoğunlukla mantık ve uygulama değil. Sahte kod iyi.

Düzenleme: kemanın yavaş doğası nedeniyle, alternatif olarak mysql okuyabilir / çalıştırabilirsiniz:

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

Yanıtlar:


9

Burada bir olasılık (ve bu gerçekten Sean Owen'ın yayınladığı şeyin bir uzantısıdır) bir "istikrarlı kullanıcı" tanımlamaktır.

Verilen bilgi için ip karması olan bir user_id ve bazı kullanıcı aracısı bilgileri (sözde kod) oluşturmayı hayal edebilirsiniz:

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

Daha sonra bu kimlikleri, kullanıcılarınız için gözlemlediğiniz kullanım sezgisel taramalarına dayanarak "kararlı" veya "kararsız" olarak işaretlersiniz. Bu, belirli bir zaman penceresindeki ziyaretlerin # eşiği, çerezlerinin devam ettiği süre, sitenizdeki bazı son işlemler (bunun orijinal günlüğünüzde belirtilmediğini anlıyorum) vb.

Buradaki fikir, çerez bırakmayan kullanıcıları bu çerezlerden ayırmaktır.

Buradan session_ids öğelerini günlüklerinizdeki sabit uids ile ilişkilendirebilirsiniz. Daha sonra, nispeten emin olmadığınız kararsız kullanıcılar için "kalan" oturum_kullanmanız gerekir. Oturumların sayılması veya altında sayılması, yalnızca bir kişi varken davranışı birden çok kişiye atfedebilirsiniz, vb. Ancak bu, en azından şu anda "daha az emin" olduğunuz kullanıcılarla sınırlıdır.

Daha sonra kararlı grubunuz üzerinde analizler yapar ve bunu kararsız gruba yansıtırsınız. Örneğin bir kullanıcı sayısını ele alalım, toplam oturum sayısını biliyorsunuz, ancak bu oturumları kaç kullanıcının oluşturduğundan emin değilsiniz. # Oturum / benzersiz kararlı kullanıcıyı bulabilir ve bu gruba atfedilen oturum sayısını bildiğiniz için kararsız gruptaki "tahmini" benzersiz kullanıcı sayısını yansıtmak için bunu kullanabilirsiniz.

projected_num_unstable_users = num_sess_unstable / num_sess_per_stable_uid

Bu, kararsız kullanıcılar üzerindeki kullanıcı düzeyi araştırmasına yardımcı olmaz, ancak en azından bir süre devam eden istikrarlı kullanıcı grubundan biraz kilometre alabilirsiniz. Çeşitli yöntemlerle davranışları ve sayıları kararsız gruba yansıtabilirsiniz. Yukarıdaki, bilmek isteyebileceğiniz bir şeyin basit bir örneğidir. Genel fikir, kendinize güvendiğiniz bir dizi kullanıcıyı tanımlamak, ölçmek istediğiniz şeyi ölçmek ve bilinmeyen kullanıcı alanına yansıtmak ve tahmin etmek için belirli zemin gerçeklerini (num aramalar, ziyaretler, tıklamalar vb.) Kullanmaktır. onlar için sayılır.

Bu, oturum açmayı gerektirmeyen hizmetler için benzersiz kullanıcı sayma, günlük tutma vb. Konularında uzun süredir devam eden bir sorundur.


Çok iyi bir cevap! Bu okumalar için, üçüncü taraf çerezleri durumunda, birçok safari mobil sürümünün varsayılan olarak bunları almayacağını ve diğer tarayıcıların boru hatlarında aynı olduğunu eklemek isterim. Bunları aklınızda tutun ve ayrı ayrı ele alın.
AdrianBR

1
Çerez karmaşası, giriş yapmayı gerektirmeyen hizmetler için oldukça problemdir. Birçok kullanıcı çerezleri anlamıyor olsa da, muhtemelen önemli bir süre boyunca takip edebileceğiniz bir kohortunuz olabilir.
cwharland

6

Sadece bu verilerle yapabileceğiniz pek bir şey yok, ancak yapabileceğiniz çok az şey makine öğrenimine dayanmıyor.

Evet, aynı IP'den ancak farklı Kullanıcı Aracılarından gelen oturumlar neredeyse kesinlikle farklı kullanıcılardır. Aynı IP ve Kullanıcı Aracısı ile oturumlar, proxy / wi-fi erişim noktaları hariç, genellikle aynı kullanıcıdır. Olası 'toplu' IP'leri belirlemek için IP başına oturum sayısı dağılımına bakarak tanımlayabileceğiniz kişiler. Aynı IP / Kullanıcı Aracısından zamanla çakışan oturumlar neredeyse kesinlikle farklıdır.

Kullanıcıları daha fazla ayırt etmek için daha fazla bilgiye ihtiyacınız olacaktır. Örneğin, kullanıcının bağlandığı siteler veya IP adresleri oturumları farklılaştırmak için çok güçlü bir temel oluşturur. Ardından, oturumların ne zaman aynı veya farklı kullanıcılar olduğunu anlamak için daha karmaşık öğrenmeye başlayabilirsiniz.


Bağlam, bir iframe aracılığıyla 3. taraf çerezi bulunan tek bir sitede bilgi izlenebilir. Site e-ticaret olacaktır. Google analitiklerinin çoğunlukla IP'ye, bazen de kullanıcılara baktığını görüyorum ve bir zaman aralığında yalnızca IP'ye bakmaktan çok benzer sayılar elde edebiliyorum. Ancak google analytics'in içeriğe bağlı olarak% 30 ish fazla
raporladığı biliniyor

Ziyaret edilen ürün sayfalarına bakmak da çok yardımcı olmuyor, çünkü dükkanın yapısı kullanıcıları önceden belirlenmiş yollara yönlendirecek ve çok benzer davranışlara yol
açacak

1
Ayrıca, ML'nin bu sorunun bağlamına uymadığının farkındayım. Aksine, sabit kodlanmış algoritmalar, mantıklı sonuçlar sunan çoğu izleme çözümü tarafından kullanılır. ML ile elde edilebilecek son birkaç doğruluk derecesi daha az önemlidir, çünkü bu bilgi eğilimleri gözlemlemek için kullanılır.
AdrianBR
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.