Предположим, у вас есть журналы веб-сервера. В этих журналах у вас есть кортежи такого типа:
user1, timestamp1
user1, timestamp2
user1, timestamp3
user2, timestamp4
user1, timestamp5
...
Эти временные метки представляют, например, клики пользователей. Теперь, мы user1
будем посещать сайт несколько раз (сессий) в течение месяца, и у вас будут всплески кликов от каждого пользователя во время каждого сеанса (предположим, что когда пользователь заходит на ваш сайт, он нажимает на несколько страниц).
Предположим, вы хотите разделить эти всплески кликов в сеансах, которые их сгенерировали, но у вас нет дополнительного источника информации, только список временных меток. Если вы вычислите распределение интервалов между двумя последовательными кликами одного и того же пользователя, вы получите длиннохвостое распределение. Интуитивно, вы бы искали «параметр обрезки», например, N секунд, где если timestamp_{i+1} - timestamp{i} > N
, то ваш timestamp_{i+1}
- начало нового сеанса.
Проблема состоит в том, что это распределение в действительности представляет собой смесь двух переменных: X = «интервал между двумя последовательными щелчками в одном сеансе» и Y = «интервал между последним кликом в предыдущем сеансе и первым новым».
Вопрос в том, как оценить это N, которое разделяет два распределения (возможно, с небольшим перекрытием), просто взглянув на всплеск кликов?
источник
Ответы:
Вы действительно должны построить логарифм интервалов между щелчками вместо необработанных значений; это сгладит ваш дистрибутив и может даже выявить несколько режимов в вашем дистрибутиве.
Более продвинутые подходы были разработаны нейробиологами, чтобы решить очень похожую проблему в идентификации всплесков нейронов. Эта классическая статья или много других связанных с этим статей на Google Golopar .
источник