Понимание алгоритмов измерения трендов - PullRequest
18 голосов
/ 28 октября 2009

В чем смысл формулы, используемой в программе hive_trend_mapper.py для этого урока Hadoop по вычислению трендов в Википедии?

На самом деле есть два компонента: месячный тренд и дневной тренд. Я собираюсь сосредоточиться на дневном тренде, но подобные вопросы относятся к месячному.

В дневном тренде pageviews - это массив количества просмотров страниц в день по этой теме, один элемент в день, а total_pageviews - сумма этого массива:

# 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

Я знаю, что он делает поверхностно: он просто смотрит на изменение за прошедший день (slope) и масштабирует его до логарифма 1+total_pageviews (log(1)==0, так что коэффициент масштабирования неотрицательный ). Это можно рассматривать как отношение общего количества просмотров страниц за месяц к весу, но оно уменьшается по мере роста - таким образом, общее количество просмотров страниц перестает иметь значение для вещей, которые являются «достаточно популярными», но в то же время большие изменения для незначительного донора. весят столько же.

Но почему делает это? Почему мы хотим сбрасывать со счетов вещи, которые изначально были непопулярны? Разве большие дельты не должны иметь значения больше для предметов, которые имеют низкую постоянную популярность, и меньше для предметов, которые уже популярны (для которых большие дельты могут выпасть в пределах доли стандартное отклонение)? Как соломенный человек, почему бы просто не взять y2-y1 и покончить с этим?

А для чего будет полезен error? Учебник не использует его снова и снова. Опять же, это не говорит нам, как используется trend - это то, что нанесено на конечный продукт, правильно?

Где я могу прочитать здесь (желательно вводный) фон по теории? Есть имя для этого безумия? Это где-то формула из учебника?

Заранее спасибо за любые ответы (или обсуждения!).

Ответы [ 4 ]

10 голосов
/ 04 ноября 2009

Как говорит встроенный комментарий, это простой «алгоритм базового тренда», Это означает, что прежде чем сравнивать тренды двух разных страниц, необходимо установить базовый уровень. Во многих случаях используется среднее значение, это просто, если вы построить просмотры страниц по оси времени. Этот метод широко используется в мониторинге качество воды, загрязнителей воздуха и т. д. для выявления любых существенных изменений по сравнению с исходным уровнем.

В случае OP наклон просмотров страниц взвешивается по журналу общего количества просмотров. Этот сорт использует общее количество просмотров в качестве базовой коррекции для наклона. Как сказал Саймон, это ставит баланс между двумя страницами с очень разными полными просмотров. Например, А имеет наклон 500 на 1000 000 просмотров страниц, В - 1000 на 1000. Журнал в основном означает, что 1000 000 ТОЛЬКО в два раза важнее, чем 1000 (а не 1000 раз). Если вы рассматриваете только наклон, A менее популярен, чем B. Но с весом, теперь мера популярности A такая же, как B. Я думаю, что это довольно интуитивно понятно: хотя просмотр страниц А составляет всего 500 просмотров, но это потому, что он насыщает, вы все равно должны отдать ему должное.

Что касается ошибки, я полагаю, что это происходит от (относительной) стандартной ошибки , которая имеет коэффициент 1 / sqrt (n), где n - количество точек данных. В коде ошибка равна (1 / sqrt (n)) * (1 / sqrt (среднее)). Это примерно означает: чем больше точек данных, тем точнее тренд. Я не вижу это точная математическая формула, просто алгоритм анализа грубой тенденции, в любом случае относительный значение более важно в этом контексте.

В целом, я считаю, что это просто эмпирическая формула. Более сложные темы можно найти в некоторых учебниках по биостатистике (очень похоже на отслеживание вспышки гриппа и т. П.)

1 голос
/ 28 октября 2009

Причина, по которой модерация измеряется количеством кликов, заключается не в том, чтобы штрафовать популярные страницы, а в том, чтобы сравнивать большие и маленькие изменения с помощью одной меры. Если вы просто используете y2 - y1, вы увидите изменения клика только на страницах большого объема. То, что это пытается выразить, является «значительным» изменением. 1000 кликов меняются, если вы привлекаете 100 кликов, это действительно важно. 1000 кликов меняются, если вы привлекаете 100000 меньше. То, что пытается сделать эта формула, это сделать оба этих элемента видимыми.

Попробуйте в нескольких разных масштабах в Excel, вы получите хорошее представление о том, как он работает.

Надеюсь, это поможет.

1 голос
/ 28 октября 2009

Другой способ взглянуть на это так:

предположим, что ваша страница и моя страница созданы в один и тот же день, и ваша страница получает всего около 10 миллионов просмотров, а моя - около 1 миллиона до определенного момента. затем предположим, что в какой-то момент уклон для меня составляет миллион, а для вас - 0,5 миллиона. если вы просто используете наклон, то я выиграю, но у вас на странице уже было больше просмотров в день, у вас было 5 миллионов, а у меня 1 миллион, так что миллион на моем все равно составляет 2 миллиона, а вы - 5,5 миллион за этот день. может быть, эта концепция масштабирования состоит в том, чтобы попытаться скорректировать результаты, чтобы показать, что ваша страница также хороша как средство определения тренда, и ее наклон меньше, но она уже была более популярной, но масштабирование является лишь логарифмическим фактором, так что это не кажется слишком проблематично для меня.

1 голос
/ 28 октября 2009

Код реализует статистику (в данном случае «базовый тренд»), вам следует научиться этому, и все станет понятнее. Wikibooks имеет хороший экземпляр .

Алгоритм учитывает, что новые страницы по определению более непопулярны, чем существующие (поскольку, например, они связаны из относительно небольшого числа других мест), и предполагает, что со временем популярность этих новых страниц будет расти.

error - допустимая погрешность, которую система ожидает от своих прогнозов. Чем выше значение error, тем менее вероятно, что тренд продолжится, как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...