Supposons que vous ayez les journaux d'un serveur Web. Dans ces journaux, vous avez des tuples de ce type:
user1, timestamp1
user1, timestamp2
user1, timestamp3
user2, timestamp4
user1, timestamp5
...
Ces horodatages représentent par exemple les clics des utilisateurs. Maintenant, user1
vous visiterez le site plusieurs fois (sessions) au cours du mois, et vous aurez des rafales de clics de chaque utilisateur pendant chaque session (en supposant que lorsqu'un utilisateur visite votre site, il clique sur plusieurs pages).
Supposons que vous souhaitiez partitionner ces rafales de clics dans les sessions qui les ont générées, mais que vous ne disposez d'aucune source d'informations supplémentaire, uniquement la liste des horodatages. Si vous calculez la distribution des intervalles entre deux clics consécutifs du même utilisateur, vous obtiendrez une distribution à longue queue. Intuitivement, vous rechercheriez un "paramètre de coupe", par exemple N secondes, où si timestamp_{i+1} - timestamp{i} > N
, alors votre timestamp_{i+1}
est le début de la nouvelle session.
Le problème est que cette distribution est en réalité un mélange de deux variables: X = "intervalle entre deux clics consécutifs dans la même session" et Y = "intervalle entre le dernier clic de la session précédente et le premier de la nouvelle".
La question est, comment estimer ce N, qui divise les deux distributions (avec un peu de chevauchement, peut-être) juste en regardant la rafale de clics?
la source
Réponses:
Vous devriez vraiment tracer le logarithme des intervalles entre les clics au lieu des valeurs brutes; cela aplatira votre distribution et pourrait même révéler les multiples modes de votre distribution.
Des approches plus avancées ont été développées par des neuroscientifiques pour résoudre un problème très similaire dans l'identification des salves de pics neuronaux. Cet article classique ou les nombreux autres articles connexes sur google scholar .
la source