2009-10-28 3 views
17

Каково обоснование формулы, используемой в программе hive_trend_mapper.pythis Hadoop tutorial для расчета тенденций Википедии?Понимание алгоритмов для измерения тенденций

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

В ежедневной тенденции, 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, поэтому этот коэффициент масштабирования неотрицателен). Его можно рассматривать как отношение к просмотру страниц в месяц как к весу, но при умеренных темпах - таким образом, общее количество просмотров страниц перестает влиять на вещи, которые «достаточно популярны», но в то же время большие изменения на незначительной доне, t весить столько же.

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

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

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

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

ответ

10

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

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

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

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

+0

Правильно, я понял его механику. Я просто не согласен с тем, что интуитивно утверждать, что рост B следует взвешивать меньше, чем A, - хотя B не так популярен, есть и кое-что, что можно сказать об относительном и внезапном всплеске кликов; наоборот, рост A падает в пределах своего стандартного отклонения и должен рассматриваться как менее значимый.Я полагаю, что эта конкретная формула действительно является большей частью базовой популярности. Что касается книг - я действительно надеялся на конкретные рекомендации! – Yang

1

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

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

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

+0

Ни я, ни Google не могли найти, где в этой базовой тенденции в Wikibook. У вас есть указатель? – Yang

+0

Эта книга обрабатывает основные статистические данные, которые следует понимать, прежде чем пытаться работать с более эзотерическими понятиями. – ty812

1

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

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

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

+0

Я не следую. Масштабный коэффициент журнала явно раздувает счет популярного предмета. В Python: >>> [(d, d * math.log (1. + t)) для (d, t) в [(1000,100), (1000,100000)]] [(1000, 4615.1205168412598), (1000, 11512.935464920229)] – Yang

1

другой способ смотреть на это так:

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

Смежные вопросы