Подтвердить что ты не робот

Понимание алгоритмов измерения тенденций

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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