Wenn Sie die Zugriffsdaten für die Website im Formular session_id, ip, user_agent
und optional den Zeitstempel gemäß den folgenden Bedingungen angegeben haben, wie würden Sie die Sitzungen am besten zu eindeutigen Besuchern zusammenfassen?
session_id
: ist ein Ausweis, der jedem neuen Besucher ausgehändigt wird. Es verfällt jedoch nicht, wenn der Benutzer keine Cookies akzeptiert / Cookies löscht / den Browser ändert / das Gerät ändert, wird er nicht mehr erkannt
IP
kann zwischen verschiedenen Benutzern geteilt werden (Stellen Sie sich ein kostenloses Wi-Fi-Café oder Ihren ISP vor, der IPs neu zuweist), und sie haben oft mindestens 2, zu Hause und am Arbeitsplatz.
User_agent
ist die Browser- und Betriebssystemversion, mit der zwischen Geräten unterschieden werden kann. Beispielsweise wird ein Benutzer wahrscheinlich sowohl ein Telefon als auch einen Laptop verwenden, es ist jedoch unwahrscheinlich, dass er Windows + Apple-Laptops verwendet. Es ist unwahrscheinlich, dass dieselbe Sitzungs-ID mehrere Benutzeragenten hat.
Daten könnten hier wie die Geige aussehen: http://sqlfiddle.com/#!2/c4de40/1
Natürlich sprechen wir über Annahmen, aber es geht darum, der Realität so nahe wie möglich zu kommen. Wenn beispielsweise in einem begrenzten Zeitraum dieselbe IP-Adresse und derselbe Benutzeragent mit einer anderen Sitzungs-ID auftreten, ist die Annahme gerechtfertigt, dass es sich um denselben Benutzer handelt, abgesehen von einigen Ausnahmefällen.
Bearbeiten: Sprache, in der das Problem gelöst wird, ist irellevant, es geht hauptsächlich um Logik und nicht um Implementierung. Pseudocode ist in Ordnung.
Bearbeiten: Aufgrund der langsamen Natur der Geige können Sie alternativ die mysql lesen / ausführen:
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
quelle
Mit diesen Daten können Sie nicht viel anfangen, aber was Sie tun können, hängt nicht vom maschinellen Lernen ab.
Ja, Sitzungen mit derselben IP, aber unterschiedlichen Benutzeragenten sind mit ziemlicher Sicherheit unterschiedliche Benutzer. Sitzungen mit derselben IP und demselben User-Agent sind normalerweise derselbe Benutzer, mit Ausnahme von Proxies / Wi-Fi-Zugangspunkten. Diese können Sie anhand der Verteilung der Sitzungsanzahl pro IP identifizieren, um wahrscheinliche "aggregierte" IPs zu identifizieren. Sitzungen desselben IP / User-Agents, die sich zeitlich überschneiden, sind mit ziemlicher Sicherheit unterschiedlich.
Zur weiteren Unterscheidung von Benutzern benötigen Sie weitere Informationen. Beispielsweise sind die Sites oder IP-Adressen, mit denen der Benutzer eine Verbindung herstellt, eine sehr starke Basis für die Unterscheidung von Sitzungen. Dann könnten Sie sich in anspruchsvollere Lernprozesse einarbeiten, um herauszufinden, wann Sitzungen von denselben oder unterschiedlichen Benutzern durchgeführt werden.
quelle