Определение активности сайта с использованием ежедневных посещений

15

Контекст:

У меня есть группа веб-сайтов, где я записываю количество посещений ежедневно:

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), тогда вышеупомянутая тенденция будет нулевой.

Вопросов:

  • Как мне обрабатывать как случаи (монотонное увеличение / уменьшение), так и большое количество попаданий?
  • Должен ли я использовать отдельные формулы?
Дэн
источник
1
Я удивлен, что вы еще не получили никаких ответов (хотя это, очевидно, популярный вопрос). Поскольку каждая из ваших четырех пуль стоит вопроса сама по себе, как насчет того, чтобы ограничить этот вопрос одной из них и разместить остальные в отдельных вопросах. Все это действительно отличные вопросы, в которых используются разные подходы, и все четыре заслуживают внимания сами по себе.
Энди Ш
Привет Энди, большое спасибо за твой ответ. Я постараюсь перефразировать его и сосредоточиться на одной проблеме за раз. Моя первоначальная мысль заключалась в том, чтобы сделать его как можно более широким (и избегать повторения того же вопроса впоследствии), но, учитывая отсутствие ответов, кажется, что он слишком общий для того, чтобы кто-то мог ответить.
Дан
Я отредактировал вопрос, чтобы выявить две основные проблемы, которые меня больше всего интересуют. Я решил поставить их в один и тот же вопрос, учитывая их тесные отношения.
Дан
1
Я все еще не понимаю, почему одна оценка с небольшой ошибкой делает подход «непригодным для использования».
OneStop
Спасибо за комментарий. Я не говорю, что подход (расчет тренда) был неприменим, но его расчет ошибки мог иметь потенциальную проблему. Поскольку я до сих пор не получил ответа, я удалю этот вопрос из вопроса, надеясь, что на него будет легче ответить.
Дан

Ответы:

4

Похоже, вы ищете «онлайн-метод обнаружения точек изменения». (Это полезная фраза для Googling.) Некоторыми полезными недавними (и доступными) статьями являются Adams & MacKay (байесовский подход) и Keogh et al. Возможно, вы сможете нажать пакет наблюдения для R. Изолированные большие количества попаданий могут быть найдены с использованием статистических методов управления процессом .

Whuber
источник
2

Определенно есть более и менее сложные способы решения этой проблемы. Судя по всему, вы начали с довольно простого решения (формула, которую вы нашли в SO). Имея в виду такую ​​простоту, я подумал, что вернусь к нескольким ключевым моментам, которые вы указали в (текущей версии) своего поста.

Итак, вы сказали, что хотите, чтобы измерение «активности сайта» регистрировалось:

  • Изменения наклона в посещениях / день за «последние несколько дней»
  • Величина изменений в посещениях / день за «последние несколько дней»

Как указывает @ jan-galkowski, вас также (по крайней мере, молчаливо) интересует ранг сайтов относительно друг друга в этих измерениях.

Если это описание является точным, я бы предложил изучить простейшее возможное решение, которое включает эти три показателя (изменение, величина, ранг) в качестве отдельных компонентов. Например, вы можете получить:

  • Результаты вашего SO-решения для захвата изменений наклона (хотя я бы включил данные за 3 или 4 дня)
  • Величина последних посещений каждого сайта / значение дня, (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). Опять же, вы можете адаптировать к вашим потребностям.

Вы можете представить результаты всех этих расчетов в виде таблицы или создать регулярно обновляемую визуализацию, чтобы отслеживать их ежедневно.

ashaw
источник
1

Предостережение о том, что показатели прибыльности пользователей на веб-сайтах являются неприятными сериями, как правило, чрезмерно разбросаны (с точки зрения Пуассона), поэтому рассмотрите отрицательные биноминальные распределения, чтобы посмотреть на прибытия и их соответствие. Кроме того, вы можете просматривать статистику заказов сайтов по дням, а не их количество.

Ян Галковски
источник