Контекст:
У меня есть группа веб-сайтов, где я записываю количество посещений ежедневно:
W0 = { 30, 34, 28, 30, 16, 13, 8, 4, 0, 5, 2, 2, 1, 2, .. }
W1 = { 1, 3, 21, 12, 10, 20, 15, 43, 22, 25, .. }
W2 = { 0, 0, 4, 2, 2, 5, 3, 30, 50, 30, 30, 25, 40, .. }
...
Wn
Общий вопрос:
- Как определить, какие сайты наиболее активны?
Под этим я подразумеваю получать больше посещений или иметь внезапное увеличение посещений в течение последних нескольких дней. В целях иллюстрации, в небольшом примере выше W0 был бы первоначально популярен, но начинает показывать отказ, W1 демонстрирует устойчивую популярность (с некоторым изолированным пиком), а W3 - важный рост после тихого старта).
Начальные мысли:
Я нашел эту ветку на SO, где описана простая формула:
// pageviews for most recent day
y2 = pageviews[-1]
// pageviews for previous day
y1 = pageviews[-2]
// Simple baseline trend algorithm
slope = y2 - y1
trend = slope * log(1.0 +int(total_pageviews))
error = 1.0/sqrt(int(total_pageviews))
return trend, error
Это выглядит хорошо и достаточно просто, но у меня проблемы с этим.
Расчет основан на склонах. Это нормально и является одной из функций, которые меня интересуют, но ИМХО у него есть проблемы для немонотонных серий. Представьте, что в течение нескольких дней у нас будет постоянное количество посещений (поэтому наклон = 0), тогда вышеупомянутая тенденция будет нулевой.
Вопросов:
- Как мне обрабатывать как случаи (монотонное увеличение / уменьшение), так и большое количество попаданий?
- Должен ли я использовать отдельные формулы?
Ответы:
Похоже, вы ищете «онлайн-метод обнаружения точек изменения». (Это полезная фраза для Googling.) Некоторыми полезными недавними (и доступными) статьями являются Adams & MacKay (байесовский подход) и Keogh et al. Возможно, вы сможете нажать пакет наблюдения для R. Изолированные большие количества попаданий могут быть найдены с использованием статистических методов управления процессом .
источник
Определенно есть более и менее сложные способы решения этой проблемы. Судя по всему, вы начали с довольно простого решения (формула, которую вы нашли в SO). Имея в виду такую простоту, я подумал, что вернусь к нескольким ключевым моментам, которые вы указали в (текущей версии) своего поста.
Итак, вы сказали, что хотите, чтобы измерение «активности сайта» регистрировалось:
Как указывает @ jan-galkowski, вас также (по крайней мере, молчаливо) интересует ранг сайтов относительно друг друга в этих измерениях.
Если это описание является точным, я бы предложил изучить простейшее возможное решение, которое включает эти три показателя (изменение, величина, ранг) в качестве отдельных компонентов. Например, вы можете получить:
(y2)
деленное на среднее число посещений / день для этого сайта (Y
):y2 / mean(Y)
Для W0, W1 и W2 соответственно это дает 0,16, 1,45 и 2,35. (Для интерпретации, учтите, что сайт, чье значение последних посещений в день было равно среднему значению посещений в день, будет давать результат 1). Обратите внимание, что вы также можете настроить эту меру, чтобы зафиксировать последние 2 (или более) дня:
y2 + y1 / 2 * mean(Y)
Это дает: 0,12, 1,33, 1,91 для ваших трех образцов сайтов.
Если вы на самом деле используете среднее значение распределения посещений / дней каждого сайта для этого вида измерения, я бы также посмотрел на стандартное отклонение распределения, чтобы понять его относительную волатильность. Стандартное отклонение для каждого посещения сайта / день распределения: 12,69, 12,12 и 17,62.
y2/mean(Y)
Полезно подумать об измерении относительно стандартного отклонения, поскольку оно позволяет вам сохранить недавнюю величину активности на сайте W2 в перспективе (большее стандартное отклонение = менее стабильный / непротиворечивый в целом).Наконец, если вы заинтересованы в рангах, вы можете расширить эти подходы и в этом направлении. Например, я думаю, что было бы полезно узнать рейтинг сайта с точки зрения значений самых последних посещений в день, а также рейтинг средних посещений каждого сайта в день (рейтинг
mean (Y)
каждогоW
вWn
). Опять же, вы можете адаптировать к вашим потребностям.Вы можете представить результаты всех этих расчетов в виде таблицы или создать регулярно обновляемую визуализацию, чтобы отслеживать их ежедневно.
источник
Предостережение о том, что показатели прибыльности пользователей на веб-сайтах являются неприятными сериями, как правило, чрезмерно разбросаны (с точки зрения Пуассона), поэтому рассмотрите отрицательные биноминальные распределения, чтобы посмотреть на прибытия и их соответствие. Кроме того, вы можете просматривать статистику заказов сайтов по дням, а не их количество.
источник